ESP8266 - Reproductor MP3 con RFID

Este tutorial te explica cómo hacer un reproductor MP3 RFID usando un ESP8266, un lector RFID RC522 y un módulo reproductor de MP3. El módulo reproductor de MP3 viene con una pequeña tarjeta SD que almacena varias canciones. Cada tarjeta RFID está vinculada a una canción específica, y la cantidad de tarjetas RFID corresponde al número de canciones.

Cuando pases una tarjeta RFID frente al lector RFID, el ESP8266 reproducirá la canción asociada a esa tarjeta RFID en particular.

Hardware Requerido

1×ESP8266 NodeMCU
1×Cable USB Tipo-A a Tipo-C (para PC USB-A)
1×Cable USB Tipo-C a Tipo-C (para PC USB-C)
1×RFID/NFC RC522 Kit (reader + tags)
1×RFID Key Fob
1×RFID Card
1×Módulo Reproductor MP3 Serial
1×Tarjeta Micro SD
1×Altavoz Aux 3.5mm
1×Cables Puente
1×(Recomendado) Placa de Expansión de Terminales de Tornillo para ESP8266
1×(Recomendado) Divisor de Alimentación para ESP8266 Tipo-C

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgación: Algunos de los enlaces proporcionados en esta sección son enlaces de afiliado de Amazon. Podemos recibir una comisión por las compras realizadas a través de estos enlaces sin costo adicional para usted. Apreciamos su apoyo.

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

Si no conoces el módulo RFID/NFC RC522 y un reproductor MP3 (conexiones de pines, cómo funciona, cómo programarlo...), aprende sobre ellos en los siguientes tutoriales:

Diagrama de Cableado

Diagrama de cableado del ESP8266 NodeMCU RFID RC522 para reproductor MP3

This image is created using Fritzing. Click to enlarge image

Para obtener m\u00e1s informaci\u00f3n, consulte Pines del ESP8266 y c\u00f3mo alimentar ESP8266 y otros componentes.

※ Nota:

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

Preparación

  • Almacena 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 ESP8266.
  • Conecta el altavoz al módulo reproductor de MP3 a una fuente de alimentación.
  • Conecta el lector RFID al ESP8266.

Ya 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:

  • Copie el código que se muestra a continuación y ábralo con Arduino IDE
/* * Este código de ESP8266 NodeMCU fue desarrollado por es.newbiely.com * Este código de ESP8266 NodeMCU se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp8266/esp8266-rfid-mp3-player */ #include <SPI.h> #include <MFRC522.h> #define SS_PIN D8 // The ESP8266 pin connected to the SS of the RFID reader #define RST_PIN D3 // The ESP8266 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 } } }
  • Haz clic en el botón Subir en el IDE de Arduino para subir código al ESP8266
  • Abrir el Monitor Serial
  • Acerca cada tarjeta o llavero RFID al módulo RFID-RC522, una por una
  • Tome nota de los UID en el Monitor Serial, se ve como a continuación:
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  

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

Código ESP8266 - Reproductor MP3 con RFID

/* * Este código de ESP8266 NodeMCU fue desarrollado por es.newbiely.com * Este código de ESP8266 NodeMCU se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/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 // The ESP8266 pin connected to the TX of the Serial MP3 Player module #define ESP8266_TX D2 // The ESP8266 pin connected to the RX of the Serial MP3 Player module #define SS_PIN D8 // The ESP8266 pin connected to the SS of the RFID reader #define RST_PIN D3 // The ESP8266 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(ESP8266_RX, ESP8266_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]); } }

Pasos R\u00e1pidos

Para empezar con ESP8266 en el IDE de Arduino, sigue estos pasos:

  • Consulta el tutorial cómo configurar el entorno para ESP8266 en Arduino IDE si es la primera vez que usas ESP8266.
  • Conecta los componentes como se muestra en el diagrama.
  • Conecta la placa ESP8266 a tu computadora usando un cable USB.
  • Abre Arduino IDE en tu computadora.
  • Elige la placa ESP8266 correcta, como (p. ej. NodeMCU 1.0 (ESP-12E Module)), y su puerto COM correspondiente.
  • Copia el código anterior y ábrelo con Arduino IDE.
  • Actualiza los UIDs que obtuviste en el paso de preparación en el código anterior.
  • Carga el código al ESP8266.
  • Acerca una etiqueta RFID al módulo RFID-RC522 una por una.
  • Escucha el sonido desde el reproductor MP3.
  • Si todo funciona sin problemas, cada tarjeta RFID estará asociada con 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!