Este tutorial ensina como fazer um MP3 player RFID usando um ESP8266, um leitor RFID RC522 e um módulo MP3 player. O módulo MP3 player vem com um pequeno cartão SD que guarda várias músicas. Cada cartão RFID está associado a uma música específica, e o número de cartões RFID corresponde ao número de músicas.
Quando você passa um cartão RFID na frente do leitor RFID, o ESP8266 toca a música associada àquele cartão RFID em particular.
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.
Sobre o Módulo RFID/NFC RC522 e o MP3 Player
Se você não conhece o Módulo RFID/NFC RC522 e o MP3 player (pinagem, como funciona, como programar ...), aprenda sobre eles nos seguintes tutoriais:
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 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 ESP8266
Conecte o alto-falante ao módulo MP3 player
Conecte o alto-falante a uma fonte de energia.
Conecte o leitor RFID ao ESP8266.
Como o UID normalmente 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-o com o Arduino IDE
/* * Este código de ESP8266 NodeMCU foi desenvolvido por pt.newbiely.com * Este código de ESP8266 NodeMCU é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.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 readerMFRC522 rfid(SS_PIN, RST_PIN);voidsetup() {Serial.begin(9600);SPI.begin(); // init SPI bus rfid.PCD_Init(); // init MFRC522Serial.println("Tap RFID Tag on reader");}voidloop() {if (rfid.PICC_IsNewCardPresent()) { // new tag is availableif (rfid.PICC_ReadCardSerial()) { // NUID has been readed// print NUID in Serial Monitor in the hex formatfor (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 no Arduino IDE para carregar o código no ESP8266
Abra o Serial Monitor
Encoste os cartões/chaveiros RFID, um por um, no módulo RFID-RC522
Anote os UIDs no Serial Monitor, que aparecem como abaixo:
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Nodemcu 1.0 (ESP-12E Module)
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Nodemcu 1.0 (ESP-12E Module)' 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
Nodemcu 1.0 (ESP-12E Module) on COM15
2
Vamos usar esses UIDs RFID para atualizar o código ESP8266 abaixo
Código ESP8266 - MP3 Player RFID
/* * Este código de ESP8266 NodeMCU foi desenvolvido por pt.newbiely.com * Este código de ESP8266 NodeMCU é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.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 needMFRC522 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};voidsetup() {Serial.begin(9600); mp3.begin(9600);delay(500); // wait chip initialization is complete mp3_command(CMD_SEL_DEV, DEV_TF); // select the TF carddelay(200); // wait for 200msSPI.begin(); // init SPI bus rfid.PCD_Init(); // init MFRC522Serial.println("Tap RFID Tag on reader");}voidloop() {if (rfid.PICC_IsNewCardPresent()) { // new tag is availableif (rfid.PICC_ReadCardSerial()) { // NUID has been readedSerial.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_tcommand, 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 bytefor (uint8_t i = 0; i < 8; i++) { mp3.write(frame[i]); }}
Passos Rápidos
Para começar com o ESP8266 no Arduino IDE, siga estes passos:
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!