아두이노 - RFID MP3 플레이어 | Arduino - RFID MP3 Player

이 튜토리얼에서는 아두이노, RC522 RFID 리더, 그리고 MP3 플레이어 모듈을 사용하여 RFID 기반 MP3 플레이어를 만드는 과정을 탐구할 것입니다. MP3 플레이어 모듈은 여러 곡이 저장된 마이크로 SD 카드를 갖추고 있습니다. 각각의 RFID 카드는 하나의 노래를 대표하며, RFID 카드의 수는 노래의 수와 일치합니다.

RFID 리더기 앞에서 RFID 카드를 스와이프하면, 아두이노가 그 특정 RFID 카드와 연결된 해당 노래를 재생합니다.

준비물

1×Arduino Uno Amazon
1×USB 2.0 cable type A/B 쿠팡 | Amazon
1×RFID/NFC RC522 Kit (reader + tags) 쿠팡 | Amazon
1×RFID Key Fob 쿠팡 | Amazon
1×Serial MP3 Player Module 쿠팡 | Amazon
1×Micro SD Card Amazon
1×3.5mm Aux Speaker Amazon
1×Jumper Wires Amazon
1×(Optional) 9V Power Adapter for Arduino Amazon
1×(Recommended) Screw Terminal Block Shield for Arduino Uno 쿠팡 | Amazon
1×(Recommended) Breadboard Shield For Arduino Uno 쿠팡 | Amazon
1×(Recommended) Enclosure For Arduino Uno Amazon
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

RFID/NFC RC522 모듈과 MP3 플레이어에 대해

RFID/NFC RC522 모듈과 MP3 플레이어(핀아웃, 작동 방식, 프로그래밍 방법 등)에 대해 잘 모르시면, 다음 튜토리얼에서 해당 내용을 학습하세요:

선연결

Arduino RFID RC522 MP3 player wiring diagram

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

설정을 간소화하기 위해, RC522 모듈의 핀은 아두이노 핀에 직접 연결됩니다. 그러나, 이 직접 연결은 문제가 발생할 수 있습니다. 왜냐하면 아두이노의 출력 핀은 5V를 제공하는 반면, RC522 모듈의 핀은 3.3V 운용을 위해 설계되었기 때문입니다. 잠재적인 문제를 예방하기 위해 아두이노 핀과 RC522 모듈의 핀 사이의 전압을 조절하는 것이 바람직합니다. 보다 자세한 지침은 아두이노 - RFID RC522 튜토리얼을 참조하십시오. 제공된 다이어그램은 저항을 사용하여 5V를 3.3V로 조절하는 방법을 보여줍니다:

Arduino RC522 module with voltage regulated wiring diagram

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

※ NOTE THAT:

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

준비 작업

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

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

아래 코드를 복사하고 아두이노 IDE로 열기

/* * 이 Arduino 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino/arduino-rfid-mp3-player */ #include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 // RFID 리더의 SS에 연결된 아두이노 핀 #define RST_PIN 5 // 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가 읽혔음 // NUID를 16진수 형식으로 시리얼 모니터에 출력 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의 암호화 중지 } } }
  • 아두이노 IDE에서 코드를 아두이노로 업로드하려면 Upload 버튼을 클릭하세요.
  • 시리얼 모니터 열기
  • RFID-RC522 모듈에 RFID 카드/키홀더를 하나씩 탭하세요.
  • 시리얼 모니터에 표시되는 UID를 기록하세요. 다음과 같이 보입니다:
COM6
Send
Tap RFID Tag on reader 0x51, 0x3D, 0xC1, 0xAC 0x6A, 0x4C, 0x12, 0x6D 0xB0, 0x1F, 0x92, 0x11
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

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

아두이노 코드 - RFID Mp3 플레이어

/* * 이 Arduino 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino/arduino-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 ARDUINO_RX 7 // 아두이노 핀은 시리얼 MP3 플레이어 모듈의 TX에 연결됩니다 #define ARDUINO_TX 6 // 아두이노 핀은 시리얼 MP3 플레이어 모듈의 RX에 연결됩니다 #define SS_PIN 10 // 아두이노 핀은 RFID 리더의 SS에 연결됩니다 #define RST_PIN 5 // 아두이노 핀은 RFID 리더의 RST에 연결됩니다 #define SONG_NUM 3 // 3개의 노래 + 3개의 RFID 카드, 필요에 따라 변경 MFRC522 rfid(SS_PIN, RST_PIN); SoftwareSerial mp3(ARDUINO_RX, ARDUINO_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("RFID 태그를 리더에 태핑하세요"); } void loop() { if (rfid.PICC_IsNewCardPresent()) { // 새로운 태그가 있습니다 if (rfid.PICC_ReadCardSerial()) { // NUID가 읽혔습니다 Serial.print("태그 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("노래 재생 "); 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]); } }

사용 방법

  • 위의 코드를 복사하고 Arduino IDE로 열기
  • 준비 단계에서 얻은 UID들을 위 코드에 업데이트합니다.
  • 코드를 Arduino에 업로드하세요.
  • RFID 태그를 하나씩 RFID-RC522 모듈에 탭하세요.
  • MP3 플레이어에서 나오는 소리를 확인하세요.
  • 모든 것이 원활하게 작동한다면, 각 RFID 카드는 한 곡과 연결될 것입니다.
  • 각 RFID 카드에 노래 이름을 표시할 수 있습니다.

동영상

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

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!