ESP32 - Player MP3 com RFID

Neste tutorial, vamos explorar o processo de criar um player MP3 baseado em RFID usando ESP32, um leitor RFID RC522 e um módulo player MP3. O módulo player MP3 tem um cartão micro SD onde várias músicas são guardadas. Cada cartão RFID representa uma música, e o número de cartões RFID é igual ao número de músicas.

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

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

Você não conhece o módulo RFID/NFC RC522 e o player MP3, incluindo a pinagem, o funcionamento e a programação? Veja abaixo tutoriais completos sobre esses temas:

Diagrama de Ligação

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

This image is created using Fritzing. Click to enlarge image

Se você não sabe como alimentar o ESP32 e outros componentes, veja as instruções no tutorial a seguir: Como alimentar o ESP32.

※ Nota:

A ordem dos pinos pode variar conforme o fabricante. SEMPRE use os rótulos impressos no módulo. A imagem acima mostra a pinagem dos módulos da marca DIYables.

Preparação

  • Guarde antes no cartão micro SD uma lista das músicas que você quer tocar.
  • Insira o cartão micro SD no módulo player MP3
  • Conecte o módulo player MP3 ao ESP32
  • Conecte o alto-falante ao módulo player MP3
  • Conecte o alto-falante a uma fonte de energia.
  • Conecte o leitor RFID ao ESP32.

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

  • Se esta é a primeira vez que você usa o ESP32, veja como configurar o ambiente para ESP32 no Arduino IDE.
  • Faça a ligação como na imagem acima.
  • Conecte a placa ESP32 ao seu PC por um cabo micro USB
  • Abra o Arduino IDE no seu PC.
  • Selecione a placa ESP32 correta (por exemplo, ESP32 Dev Module) e a porta COM.
  • Copie o código abaixo e abra no Arduino IDE
/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/esp32-rfid-mp3-player */ #include <SPI.h> #include <MFRC522.h> #define SS_PIN 5 // ESP32 pin GPIO5 connected to the SS of the RFID reader #define RST_PIN 27 // ESP32 pin GPIO27 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 do Arduino IDE para fazer upload do código para o ESP32
  • Abra o Serial Monitor
  • Encoste os cartões/chaveiros RFID, um por um, no módulo RFID-RC522
  • Anote os UIDs no Serial Monitor. Ele fica parecido com o abaixo:
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
Tap RFID Tag on reader 0xB1, 0xCD, 0x5F, 0xA1 0x1A, 0x7C, 0x72, 0x1D 0xA2, 0x1C, 0x9D, 0xA1
Ln 11, Col 1
ESP32 Dev Module on COM15
2

Vamos usar esses UIDs de RFID para atualizar o código do ESP32 abaixo

Código ESP32 - Player Mp3 com RFID

/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/esp32-rfid-mp3-player */ #include <SPI.h> #include <MFRC522.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 SS_PIN 5 // ESP32 pin GPIO5 connected to the SS of the RFID reader #define RST_PIN 27 // ESP32 pin GPIO27 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); byte RFID_UIDs[SONG_NUM][4] = { { 0xB1, 0xCD, 0x5F, 0xA1 }, // UPDATE THIS VALUE FROM PREPARATION STEP { 0x1A, 0x7C, 0x72, 0x1D }, // UPDATE THIS VALUE FROM PREPARATION STEP { 0xA2, 0x1C, 0x9D, 0xA1 } // UPDATE THIS VALUE FROM PREPARATION STEP // ADD MORE IF NEEDED }; void setup() { Serial.begin(9600); Serial2.begin(9600, SERIAL_8N1, 16, 17); 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++) { Serial2.write(frame[i]); } }

Passos Rápidos

  • Copie o código acima e abra no Arduino IDE
  • Atualize no código acima os UIDs que você obteve no passo de preparação.
  • Faça o upload do código para o ESP32
  • Encoste as tags RFID, uma por uma, no módulo RFID-RC522
  • Confira o som do Player MP3
  • Se tudo funcionar bem, cada cartão RFID ficará 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!