ESP32 - Reproductor MP3 con RFID

En este tutorial, exploraremos el proceso de crear un reproductor de MP3 basado en RFID utilizando ESP32, un lector RFID RC522 y un módulo reproductor de MP3. El módulo reproductor de MP3 está equipado con una tarjeta microSD donde se almacenan varias canciones. Cada tarjeta RFID representa una canción, y la cantidad de tarjetas RFID coincide con el número de canciones.

Al pasar una tarjeta RFID frente al lector RFID, el ESP32 reproduce la canción correspondiente asociada a esa tarjeta RFID específica.

Acerca del módulo RFID/NFC RC522 y del reproductor de MP3

¿No está familiarizado con el módulo RC522 RFID/NFC y con el reproductor de MP3, incluyendo sus pines, funcionalidad y programación? Explora tutoriales integrales sobre estos temas a continuación:

Diagrama de Cableado

Diagrama de cableado del ESP32 RFID RC522 para reproductor de MP3

This image is created using Fritzing. Click to enlarge image

Si no sabe c\u00f3mo alimentar ESP32 y otros componentes, encuentre instrucciones en el siguiente tutorial: C\u00f3mo alimentar ESP32.

※ Nota:

El orden de los pines puede variar según los fabricantes. UTILICE SIEMPRE las etiquetas impresas en el módulo. La imagen de arriba muestra la disposición de pines de los módulos de la marca DIYables.

Preparación

  • Almacenar previamente una lista de canciones que quieras reproducir en la tarjeta microSD.
  • Inserta la tarjeta microSD en el módulo reproductor de MP3.
  • Conecta el módulo reproductor de MP3 al ESP32.
  • Conecta el altavoz al módulo reproductor de MP3.
  • Conecta el altavoz a una fuente de alimentación.
  • Conecta el lector RFID al ESP32.

Dado que el UID normalmente no está impreso en la etiqueta RFID, el primer paso que debemos dar es averiguar el UID de las etiquetas. Esto se puede hacer mediante:

  • Si esta es la primera vez que usa ESP32, consulte cómo configurar el entorno para ESP32 en Arduino IDE.
  • Realice el cableado tal como se muestra en la imagen de arriba.
  • Conecte la placa ESP32 a su PC mediante un cable micro USB.
  • Abra el IDE de Arduino en su PC.
  • Seleccione la placa ESP32 adecuada (p. ej. ESP32 Dev Module) y el puerto COM.
  • Copie el código de abajo y ábralo con el IDE de Arduino.
/* * Este código de ESP32 fue desarrollado por es.newbiely.com * Este código de ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.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 } } }
  • Haz clic en el botón Subir en el IDE de Arduino para cargar el código en el ESP32
  • Abrir Monitor Serial
  • Acerca cada tarjeta RFID/llavero una por una al módulo RFID-RC522
  • Anote los UID en el Monitor Serial; se muestra a continuación:
COM6
Send
Tap RFID Tag on reader 0xB1, 0xCD, 0x5F, 0xA1 0x1A, 0x7C, 0x72, 0x1D 0xA2, 0x1C, 0x9D, 0xA1
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Usaremos estos UIDs de RFID para actualizar el código ESP32 que se muestra a continuación.

Código ESP32 - Reproductor MP3 con RFID

/* * Este código de ESP32 fue desarrollado por es.newbiely.com * Este código de ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.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]); } }

Pasos R\u00e1pidos

  • Copia el código anterior y ábrelo con Arduino IDE
  • Actualiza los UIDs que obtuviste en el paso de preparación al código anterior
  • Carga el código en el ESP32
  • Toca una etiqueta RFID en el módulo RFID-RC522, una por una
  • Comprueba el sonido del reproductor MP3
  • Si todo funciona sin problemas, cada tarjeta RFID estará asociada a una canción
  • Puedes marcar el nombre de la canción en cada tarjeta RFID

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!