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 플레이어에 대하여

RFID/NFC RC522 모듈과 MP3 플레이어(핀아웃, 작동 방식, 프로그래밍 방법 등)에 대해 잘 모른다면, 다음 튜토리얼에서 배워보세요:

선연결

ESP8266 NodeMCU RFID rc522 mp3 player 연결 배선도

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

ESP8266 핀배열ESP8266 전원을 켜는 방법에 대해 더 많이 보십시오.

※ 주의:

제조업체에 따라 핀의 순서가 달라질 수 있습니다. 항상 모듈에 인쇄된 라벨을 사용하세요. 위의 이미지는 DIYables 브랜드의 모듈 핀배열을 보여줍니다.

준비

  • 원하는 노래 목록을 마이크로 SD 카드에 미리 저장하세요.
  • 마이크로 SD 카드를 MP3 플레이어 모듈에 삽입하세요.
  • MP3 플레이어 모듈을 ESP8266에 연결하세요.
  • 스피커를 MP3 플레이어 모듈에 연결하세요.
  • 스피커를 전원원에 연결하세요.
  • RFID 리더를 ESP8266에 연결하세요.

UID가 일반적으로 RFID 태그에 인쇄되지 않으므로, 우리가 해야 할 첫 번째 단계는 태그의 UID를 찾아내는 것입니다. 이는 다음 방법으로 할 수 있습니다:

아래 코드를 복사하고 Arduino IDE로 열어주세요.

/* * 이 ESP8266 NodeMCU 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP8266 NodeMCU 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp8266/esp8266-rfid-mp3-player */ #include <SPI.h> #include <MFRC522.h> #define SS_PIN D8 // ESP8266 핀이 RFID 리더의 SS에 연결됨 #define RST_PIN D3 // ESP8266 핀이 RFID 리더의 RST에 연결됨 MFRC522 rfid(SS_PIN, RST_PIN); void setup() { Serial.begin(9600); SPI.begin(); // SPI 버스 초기화 rfid.PCD_Init(); // MFRC522 초기화 Serial.println("Tap RFID Tag on reader"); } void loop() { if (rfid.PICC_IsNewCardPresent()) { // 새 태그가 준비됨 if (rfid.PICC_ReadCardSerial()) { // NUID가 읽혔음 // HEX 형식으로 Serial Monitor에 NUID 출력 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(); // PICC 정지 rfid.PCD_StopCrypto1(); // PCD의 암호화 정지 } } }
  • Arduino IDE에서 Upload 버튼을 클릭하여 ESP8266에 코드를 업로드하세요
  • 시리얼 모니터 열기
  • RFID 카드/키링을 RFID-RC522 모듈에 하나씩 탭하세요
  • 시리얼 모니터에 표시되는 UID를 기록하세요, 아래와 같이 보입니다:
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
Nodemcu 1.0 (ESP-12E Module)
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Nodemcu 1.0 (ESP-12E Module)' on 'COM15')
New Line
9600 baud
Tap RFID Tag on reader 0x51, 0x3D, 0xC1, 0xAC 0x6A, 0x4C, 0x12, 0x6D 0xB0, 0x1F, 0x92, 0x11
Ln 11, Col 1
Nodemcu 1.0 (ESP-12E Module) on COM15
2

우리는 아래의 ESP8266 코드를 업데이트하기 위해 이 RFID UID를 사용할 것입니다.

ESP8266 코드 - RFID Mp3 플레이어

/* * 이 ESP8266 NodeMCU 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP8266 NodeMCU 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp8266/esp8266-rfid-mp3-player */ #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 // ESP8266 핀은 Serial MP3 플레이어 모듈의 TX에 연결됩니다 #define ESP8266_TX D2 // ESP8266 핀은 Serial MP3 플레이어 모듈의 RX에 연결됩니다 #define SS_PIN D8 // ESP8266 핀은 RFID 리더의 SS에 연결됩니다 #define RST_PIN D3 // ESP8266 핀은 RFID 리더의 RST에 연결됩니다 #define SONG_NUM 3 // 3개의 노래 + 3개의 RFID 카드, 필요에 따라 변경하세요 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); // TF 카드를 선택합니다 delay(200); // 200ms 기다립니다 SPI.begin(); // SPI 버스를 초기화합니다 rfid.PCD_Init(); // MFRC522를 초기화합니다 Serial.println("Tap RFID Tag on reader"); } void loop() { if (rfid.PICC_IsNewCardPresent()) { // 새로운 태그가 있습니다 if (rfid.PICC_ReadCardSerial()) { // NUID가 읽혔습니다 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); // mp3 재생 } } rfid.PICC_HaltA(); // PICC를 중지합니다 rfid.PCD_StopCrypto1(); // PCD에서 암호화를 중지합니다 } } } 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; // 0x00 = 피드백 없음, 0x01 = 피드백 있음 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을 시작하려면 다음 단계를 따르세요:

  • ESP8266을 처음 사용하는 경우, ESP8266 - 소프트웨어 설치 튜토리얼을 확인하세요.
  • 다이어그램에 표시된 대로 구성요소를 연결하세요.
  • USB 케이블을 사용하여 컴퓨터에 ESP8266 보드를 연결하세요.
  • 컴퓨터에서 Arduino IDE를 엽니다.
  • 올바른 ESP8266 보드(예: NodeMCU 1.0 (ESP-12E Module))와 해당 COM 포트를 선택하세요.
  • 위의 코드를 복사하고 Arduino IDE로 엽니다.
  • 준비 단계에서 얻은 UID를 위의 코드에 업데이트하세요.
  • 코드를 ESP8266에 업로드하세요.
  • RFID-RC522 모듈에 RFID 태그를 하나씩 탭하세요.
  • MP3 플레이어에서 소리를 확인하세요.
  • 모든 것이 원활하게 실행되면, 각 RFID 카드가 한 곡과 연결될 것입니다.
  • 각 RFID 카드에 노래 이름을 표시할 수 있습니다.

동영상

비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.