ESP32 - RFID MP3 Speler

In deze handleiding verkennen we het proces van het maken van een RFID-gebaseerde MP3-speler met behulp van een ESP32, een RC522 RFID-lezer en een MP3-speler module. De MP3-speler module is uitgerust met een micro SD-kaart waarop meerdere nummers zijn opgeslagen. Elke RFID-kaart staat voor een nummer, en het aantal RFID-kaarten komt overeen met het aantal nummers.

Door een RFID-kaart voor de RFID-lezer te houden, speelt de ESP32 het bij die specifieke RFID-kaart behorende nummer af.

Hardware Benodigdheden

1×ESP32 ESP-WROOM-32 Ontwikkelingsmodule
1×USB-kabel Type-C
1×RFID/NFC RC522 Kit (lezer + tags)
1×RFID Sleutelhanger
1×RFID Kaart
1×Seriële MP3 Speler Module
1×Micro SD-kaart
1×3,5 mm Aux Speaker
1×Jumperdraden
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor ESP32
1×(Aanbevolen) Breakout Expansion Board for ESP32
1×(Aanbevolen) Stromsplitter voor ESP32

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over de RFID/NFC RC522 Module en MP3 Speler

Bent u niet bekend met de RFID/NFC RC522 Module en de MP3-speler, inclusief hun pinout, functionaliteit en programmering? Verken dan onderstaande uitgebreide tutorials:

Bedradingsschema

ESP32 RFID RC522 MP3 speler bedradingsschema

This image is created using Fritzing. Click to enlarge image

※ Notiz:

De volgorde van de pinnen kan per fabrikant verschillen. Gebruik ALTIJD de labels die op de module zijn gedrukt. De afbeelding hierboven toont de pinout van modules van het merk DIYables.

Voorbereiding

  • Sla van tevoren een lijst met nummers die u wilt afspelen op de micro SD-kaart op.
  • Plaats de micro SD-kaart in de MP3-speler module
  • Verbind de MP3-speler module met de ESP32
  • Verbind de speaker met de MP3-speler module
  • Verbind de speaker met een voedingsbron
  • Verbind de RFID-lezer met de ESP32

Omdat de UID meestal niet op de RFID-tag gedrukt staat, is de eerste stap het achterhalen van de UID’s van de tags. Dit kan als volgt:

  • Als dit de eerste keer is dat u ESP32 gebruikt, zie hoe u de omgeving voor ESP32 instelt in Arduino IDE.
  • Maak de bedrading volgens de afbeelding hierboven
  • Verbind het ESP32-board met uw pc via een micro USB-kabel
  • Open Arduino IDE op uw pc
  • Selecteer het juiste ESP32-board (bijv. ESP32 Dev Module) en de juiste COM-poort
  • Kopieer onderstaande code en open deze in Arduino IDE
/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/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 } } }
  • Klik op de knop Upload in Arduino IDE om de code naar de ESP32 te uploaden
  • Open de Serial Monitor
  • Houd één voor één een RFID-kaart of sleutelhanger voor de RFID-RC522 module
  • Noteer de UIDs in de Serial Monitor; deze zien er bijvoorbeeld zo uit:
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  

We gebruiken deze RFID UIDs om de code hieronder voor de ESP32 aan te passen.

ESP32 Code - RFID Mp3 Speler

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/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]); } }

Snelle Stappen

  • Kopieer bovenstaande code en open deze in Arduino IDE
  • Werk de UIDs die u hierboven heeft verkregen bij in de code
  • Upload de code naar de ESP32
  • Houd één voor één een RFID Tag voor de RFID-RC522 module
  • Luister naar het geluid van de MP3-speler
  • Als alles goed werkt, is elke RFID-kaart gekoppeld aan een nummer
  • U kunt de naam van het nummer op elke RFID-kaart noteren

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Bekijk onze video-tutorial voor een visuele begeleiding bij dit project! De video biedt extra inzichten en helpt u snel en eenvoudig van start te gaan.

Opmerkingen

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!