ESP8266 RFID MP3 플레이어
이 튜토리얼은 ESP8266, RC522 RFID 리더, 그리고 MP3 플레이어 모듈을 사용하여 RFID MP3 플레이어를 만드는 방법을 안내합니다. MP3 플레이어 모듈에는 다양한 노래가 저장된 작은 SD 카드가 포함되어 있습니다. 각 RFID 카드는 특정 노래와 연결되며, RFID 카드의 수는 노래의 수와 일치합니다.
RFID 카드를 RFID 리더 앞을 지나갈 때, ESP8266은 그 RFID 카드에 연결된 노래를 재생합니다.
| 1 | × | ESP8266 NodeMCU | 쿠팡 |  아마존 |  | 
| 1 | × | USB 케이블 타입-A to 타입-C (USB-A PC용) | 쿠팡 |  아마존 |  | 
| 1 | × | USB 케이블 타입-C to 타입-C (USB-C PC용) | 아마존 |  | 
| 1 | × | RFID/NFC RC522 Kit (reader + tags) | 쿠팡 |  아마존 |  | 
| 1 | × | RFID Key Fob | 쿠팡 |  아마존 |  | 
| 1 | × | 시리얼 MP3 플레이어 모듈 | 쿠팡 |  아마존 |  | 
| 1 | × | 마이크로 SD 카드 | 아마존 |  | 
| 1 | × | 3.5mm Aux 스피커 | 아마존 |  | 
| 1 | × | 점퍼케이블 | 쿠팡 |  아마존 |  | 
| 1 | × | (추천) ESP8266용 스크루 터미널 확장 보드 | 쿠팡 |  아마존 |  | 
| 1 | × | (추천) ESP8266 Type-C용 전원 분배기 | 쿠팡 |  아마존 |  | 
공개: 이 포스팅 에 제공된 일부 링크는 아마존 제휴 링크입니다. 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
 
RFID/NFC RC522 모듈과 MP3 플레이어(핀아웃, 작동 방식, 프로그래밍 방법 등)에 대해 잘 모른다면, 다음 튜토리얼에서 배워보세요:
 

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
ESP8266 핀배열 및 ESP8266 전원을 켜는 방법에 대해 더 많이 보십시오.
※ 주의:
제조업체에 따라 핀의 순서가 달라질 수 있습니다. 항상 모듈에 인쇄된 라벨을 사용하세요. 위의 이미지는 DIYables 브랜드의 모듈 핀배열을 보여줍니다.
 
 - 원하는 노래 목록을 마이크로 SD 카드에 미리 저장하세요. 
 - 마이크로 SD 카드를 MP3 플레이어 모듈에 삽입하세요. 
 - MP3 플레이어 모듈을 ESP8266에 연결하세요. 
 - 스피커를 MP3 플레이어 모듈에 연결하세요. 
 - 스피커를 전원원에 연결하세요. 
 - RFID 리더를 ESP8266에 연결하세요. 
UID가 일반적으로 RFID 태그에 인쇄되지 않으므로, 우리가 해야 할 첫 번째 단계는 태그의 UID를 찾아내는 것입니다. 이는 다음 방법으로 할 수 있습니다:
아래 코드를 복사하고 Arduino IDE로 열어주세요.
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN  D8 
#define RST_PIN D3 
MFRC522 rfid(SS_PIN, RST_PIN);
void setup() {
  Serial.begin(9600);
  SPI.begin();      
  rfid.PCD_Init();  
  Serial.println("Tap RFID Tag on reader");
}
void loop() {
  if (rfid.PICC_IsNewCardPresent()) {  
    if (rfid.PICC_ReadCardSerial()) {  
      
      for (int i = 0; i < rfid.uid.size; i++) {
        Serial.print("0x");
        Serial.print(rfid.uid.uidByte[i] < 0x10 ? " 0" : " ");
        Serial.print(rfid.uid.uidByte[i], HEX);
        if (i < (rfid.uid.size - 1))
          Serial.print(", ");
      }
      Serial.println();
      rfid.PICC_HaltA();       
      rfid.PCD_StopCrypto1();  
    }
  }
}
 - Arduino IDE에서 Upload 버튼을 클릭하여 ESP8266에 코드를 업로드하세요 
 - 시리얼 모니터 열기 
 - RFID 카드/키링을 RFID-RC522 모듈에 하나씩 탭하세요 
 - 시리얼 모니터에 표시되는 UID를 기록하세요, 아래와 같이 보입니다: 
Tap RFID Tag on reader
0x51, 0x3D, 0xC1, 0xAC
0x6A, 0x4C, 0x12, 0x6D
0xB0, 0x1F, 0x92, 0x11
 
우리는 아래의 ESP8266 코드를 업데이트하기 위해 이 RFID UID를 사용할 것입니다.
 
#include <SPI.h>
#include <MFRC522.h>
#include <SoftwareSerial.h>
#define CMD_PLAY_NEXT 0x01
#define CMD_PLAY_PREV 0x02
#define CMD_PLAY_W_INDEX 0x03
#define CMD_SET_VOLUME 0x06
#define CMD_SEL_DEV 0x09
#define CMD_PLAY_W_VOL 0x22
#define CMD_PLAY 0x0D
#define CMD_PAUSE 0x0E
#define CMD_SINGLE_CYCLE 0x19
#define DEV_TF 0x02
#define SINGLE_CYCLE_ON 0x00
#define SINGLE_CYCLE_OFF 0x01
#define ESP8266_RX D1  
#define ESP8266_TX D2  
#define SS_PIN  D8     
#define RST_PIN D3     
#define SONG_NUM 3  
MFRC522 rfid(SS_PIN, RST_PIN);
SoftwareSerial mp3(ESP8266_RX, ESP8266_TX);
byte RFID_UIDs[SONG_NUM][4] = {
  { 0x51, 0x3D, 0xC1, 0xAC },  
  { 0x6A, 0x4C, 0x12, 0x6D },  
  { 0xB0, 0x1F, 0x92, 0x11 }   
                               
};
void setup() {
  Serial.begin(9600);
  mp3.begin(9600);
  delay(500);  
  mp3_command(CMD_SEL_DEV, DEV_TF);  
  delay(200);                        
  SPI.begin();      
  rfid.PCD_Init();  
  Serial.println("Tap RFID Tag on reader");
}
void loop() {
  if (rfid.PICC_IsNewCardPresent()) {  
    if (rfid.PICC_ReadCardSerial()) {  
      Serial.print("Tag UID:");
      for (int i = 0; i < rfid.uid.size; i++) {
        Serial.print(rfid.uid.uidByte[i] < 0x10 ? " 0" : " ");
        Serial.print(rfid.uid.uidByte[i], HEX);
      }
      Serial.println();
      for (int index = 0; index < SONG_NUM; index++) {
        if (rfid.uid.uidByte[0] == RFID_UIDs[index][0] && rfid.uid.uidByte[1] == RFID_UIDs[index][1] && rfid.uid.uidByte[2] == RFID_UIDs[index][2] && rfid.uid.uidByte[3] == RFID_UIDs[index][3]) {
          Serial.print("Playing song ");
          Serial.println(index);
          mp3_command(CMD_PLAY_W_INDEX, index);  
        }
      }
      rfid.PICC_HaltA();       
      rfid.PCD_StopCrypto1();  
    }
  }
}
void mp3_command(int8_t command, int16_t dat) {
  int8_t frame[8] = { 0 };
  frame[0] = 0x7e;                
  frame[1] = 0xff;                
  frame[2] = 0x06;                
  frame[3] = command;             
  frame[4] = 0x00;                
  frame[5] = (int8_t)(dat >> 8);  
  frame[6] = (int8_t)(dat);       
  frame[7] = 0xef;                
  for (uint8_t i = 0; i < 8; i++) {
    mp3.write(frame[i]);
  }
}
아두이노 IDE에서 ESP8266을 시작하려면 다음 단계를 따르세요:
 
 - 다이어그램에 표시된 대로 구성요소를 연결하세요. 
 - USB 케이블을 사용하여 컴퓨터에 ESP8266 보드를 연결하세요. 
 - 컴퓨터에서 Arduino IDE를 엽니다. 
 - 올바른 ESP8266 보드(예: NodeMCU 1.0 (ESP-12E Module))와 해당 COM 포트를 선택하세요. 
 - 위의 코드를 복사하고 Arduino IDE로 엽니다. 
 - 준비 단계에서 얻은 UID를 위의 코드에 업데이트하세요. 
 - 코드를 ESP8266에 업로드하세요. 
 - RFID-RC522 모듈에 RFID 태그를 하나씩 탭하세요. 
 - MP3 플레이어에서 소리를 확인하세요. 
 - 모든 것이 원활하게 실행되면, 각 RFID 카드가 한 곡과 연결될 것입니다. 
 - 각 RFID 카드에 노래 이름을 표시할 수 있습니다. 
 
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.