Arduino - MP3 Player com RFID

Neste tutorial, vamos explorar o processo de criação de um MP3 player baseado em RFID usando Arduino, um leitor RFID RC522 e um módulo MP3 player. O módulo MP3 player possui um Cartão Micro SD onde várias músicas ficam armazenadas. Cada cartão RFID representa uma música, e o número de cartões RFID corresponde ao número de músicas.

Ao passar um cartão RFID na frente do leitor RFID, o Arduino toca a música associada àquele cartão RFID específico.

Sobre o Módulo RFID/NFC RC522 e o MP3 Player

Se você ainda não conhece o Módulo RFID/NFC RC522 e o MP3 player (pinagem, como funcionam, como programar ...), aprenda sobre eles nos seguintes tutoriais:

Diagrama de Ligação

Diagrama de ligação do MP3 player com RFID RC522 e Arduino

This image is created using Fritzing. Click to enlarge image

Para simplificar a montagem, os pinos do módulo RC522 são conectados diretamente aos pinos do Arduino. No entanto, essa conexão direta pode causar problemas, pois os pinos de saída do Arduino fornecem 5V, enquanto os pinos do módulo RC522 foram projetados para operar com 3,3V. É recomendável regular a tensão entre os pinos do Arduino e os pinos do módulo RC522 para evitar possíveis problemas. Para orientações mais detalhadas, consulte o tutorial Arduino - RFID RC522. O diagrama abaixo mostra como resistores podem ser usados para regular os 5V para 3,3V:

Diagrama de ligação do módulo RC522 com Arduino com tensão regulada

This image is created using Fritzing. Click to enlarge image

※ Nota:

A ordem dos pinos pode variar de acordo com o fabricante. SEMPRE use as identificações impressas no módulo. A imagem acima mostra a pinagem dos módulos da marca DIYables.

Preparação

  • Armazene previamente no Cartão Micro SD uma lista de músicas que você quer tocar.
  • Insira o Cartão Micro SD no módulo MP3 player
  • Conecte o módulo MP3 player ao Arduino
  • Conecte o alto-falante ao módulo MP3 player
  • Conecte o alto-falante a uma fonte de energia.
  • Conecte o leitor RFID ao Arduino.

Como o UID geralmente não vem impresso na Tag RFID, o primeiro passo é descobrir o UID das tags. Isso pode ser feito assim:

  • Copie o código abaixo e abra com a Arduino IDE
/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino/arduino-rfid-mp3-player */ #include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 // Arduino Pin connected to the SS of the RFID reader #define RST_PIN 5 // Arduino Pin connected to the RST of the RFID reader MFRC522 rfid(SS_PIN, RST_PIN); void setup() { Serial.begin(9600); SPI.begin(); // init SPI bus rfid.PCD_Init(); // init MFRC522 Serial.println("Tap RFID Tag on reader"); } void loop() { if (rfid.PICC_IsNewCardPresent()) { // new tag is available if (rfid.PICC_ReadCardSerial()) { // NUID has been readed // print NUID in Serial Monitor in the hex format 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(); // halt PICC rfid.PCD_StopCrypto1(); // stop encryption on PCD } } }
  • Clique no botão Upload na Arduino IDE para carregar o código no Arduino
  • Abra o Serial Monitor
  • Aproxime os cartões/chaveiros RFID um por um do módulo RFID-RC522
  • Anote os UIDs exibidos no Serial Monitor; eles ficam parecidos com o abaixo:
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' 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
Arduino Uno on COM15
2

Vamos usar esses UIDs RFID para atualizar o código Arduino abaixo

Código Arduino - MP3 Player com RFID

/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/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 // Arduino Pin connected to the TX of the Serial MP3 Player module #define ARDUINO_TX 6 // Arduino Pin connected to the RX of the Serial MP3 Player module #define SS_PIN 10 // Arduino Pin connected to the SS of the RFID reader #define RST_PIN 5 // Arduino Pin connected to the RST of the RFID reader #define SONG_NUM 3 // 3 songs + 3 RFID cards, change it as your need MFRC522 rfid(SS_PIN, RST_PIN); SoftwareSerial mp3(ARDUINO_RX, ARDUINO_TX); byte RFID_UIDs[SONG_NUM][4] = { { 0x51, 0x3D, 0xC1, 0xAC }, // UPDATE THIS VALUE FROM PREPARATION STEP { 0x6A, 0x4C, 0x12, 0x6D }, // UPDATE THIS VALUE FROM PREPARATION STEP { 0xB0, 0x1F, 0x92, 0x11 } // UPDATE THIS VALUE FROM PREPARATION STEP // ADD MORE IF NEEDED }; void setup() { Serial.begin(9600); mp3.begin(9600); delay(500); // wait chip initialization is complete mp3_command(CMD_SEL_DEV, DEV_TF); // select the TF card delay(200); // wait for 200ms SPI.begin(); // init SPI bus rfid.PCD_Init(); // init MFRC522 Serial.println("Tap RFID Tag on reader"); } void loop() { if (rfid.PICC_IsNewCardPresent()) { // new tag is available if (rfid.PICC_ReadCardSerial()) { // NUID has been readed 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); // Play mp3 } } rfid.PICC_HaltA(); // halt PICC rfid.PCD_StopCrypto1(); // stop encryption on PCD } } } void mp3_command(int8_t command, int16_t dat) { int8_t frame[8] = { 0 }; frame[0] = 0x7e; // starting byte frame[1] = 0xff; // version frame[2] = 0x06; // the number of bytes of the command without starting byte and ending byte frame[3] = command; // frame[4] = 0x00; // 0x00 = no feedback, 0x01 = feedback frame[5] = (int8_t)(dat >> 8); // data high byte frame[6] = (int8_t)(dat); // data low byte frame[7] = 0xef; // ending byte for (uint8_t i = 0; i < 8; i++) { mp3.write(frame[i]); } }

Passos Rápidos

  • Copie o código acima e abra com a Arduino IDE
  • Atualize no código acima os UIDs que você obteve na etapa de preparação.
  • Carregue o código no Arduino
  • Aproxime as Tags RFID do módulo RFID-RC522, uma por uma
  • Ouça o som do MP3 Player
  • Se tudo funcionar bem, cada cartão RFID estará associado a uma música.
  • Você pode marcar o nome da música em cada cartão RFID.

Vídeo

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!