Arduino - Reproductor MP3 con RFID

En este tutorial, exploraremos el proceso de crear un reproductor de MP3 basado en RFID que utiliza Arduino, 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 la cantidad de canciones.

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

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

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

Diagrama de Cableado

Diagrama de cableado de Arduino RFID RC522 para reproductor MP3

This image is created using Fritzing. Click to enlarge image

Para simplificar la configuración, los pines del módulo RC522 están conectados directamente a los pines del Arduino. Sin embargo, esta conexión directa puede generar problemas, ya que los pines de salida del Arduino proporcionan 5V, mientras que los pines del módulo RC522 están diseñados para una operación de 3.3V. Se recomienda regular la tensión entre los pines del Arduino y los del módulo RC522 para evitar posibles problemas. Para obtener una guía más detallada, consulte el Arduino - RFID RC522 tutorial. El diagrama proporcionado ilustra cómo se pueden emplear resistencias para reducir el voltaje de 5V a 3.3V:

Módulo Arduino RC522 con diagrama de cableado con regulación de voltaje.

This image is created using Fritzing. Click to enlarge image

※ Nota:

El orden de los pines puede variar según los fabricantes. SIEMPRE utiliza las etiquetas impresas en el módulo. La imagen de arriba 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 Arduino.
  • Conecta el altavoz al módulo reproductor de MP3 a una
  • Conecta el altavoz a una fuente de alimentación.
  • Conecta el lector RFID al Arduino.

Como el UID normalmente no está impreso en la etiqueta RFID, el primer paso que necesitamos dar es averiguar el UID de las etiquetas. Esto se puede hacer de la siguiente manera:

  • Copia el código de abajo y ábrelo con el IDE de Arduino.
/* * Este código de Arduino fue desarrollado por es.newbiely.com * Este código de Arduino se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.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 } } }
  • Haz clic en el botón Subir en el IDE de Arduino para subir el código a Arduino
  • Abrir el Monitor Serial
  • Toca cada tarjeta RFID o llavero RFID en el módulo RFID-RC522, uno por uno
  • Toma nota de los UID en el Monitor Serial; se muestra 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 UID de RFID para actualizar el código de Arduino que se muestra a continuación.

Código de Arduino - Reproductor MP3 con RFID

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

Pasos R\u00e1pidos

  • 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 en Arduino.
  • Toca una etiqueta RFID en el módulo RFID-RC522, una por una.
  • Escucha el audio del 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!