ESP32 - RFID-MP3-Player

In diesem Tutorial werden wir den Prozess untersuchen, einen RFID-basierten MP3-Player mit ESP32, einem RC522 RFID-Leser und einem MP3-Player-Modul zu erstellen. Das MP3-Player-Modul ist mit einer Micro-SD-Karte ausgestattet, auf der mehrere Songs gespeichert sind. Jede RFID-Karte repräsentiert einen Song, und die Anzahl der RFID-Karten entspricht der Anzahl der Songs.

Durch das Vorhalten einer RFID-Karte vor dem RFID-Leser spielt der ESP32 das entsprechende Lied, das mit dieser RFID-Karte verknüpft ist.

Erforderliche Hardware

1×ESP32 ESP-WROOM-32 Entwicklungsmodul
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×RFID/NFC RC522 Kit (reader + tags)
1×RFID Key Fob
1×RFID Card
1×Serieller MP3-Player-Modul
1×Micro-SD-Karte
1×3.5mm Aux-Lautsprecher
1×Verbindungskabel
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für ESP32
1×(Empfohlen) Breakout Expansion Board for ESP32
1×(Empfohlen) Stromverteiler für ESP32

Oder Sie können die folgenden Kits kaufen:

1×DIYables ESP32 Starter-Kit (ESP32 enthalten)
1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über das RFID/NFC RC522-Modul und den MP3-Player

Sie sind nicht vertraut mit dem RFID/NFC RC522-Modul und dem MP3-Player, einschließlich ihrer Pinbelegungen, Funktionalität und Programmierung? Entdecken Sie unten umfassende Tutorials zu diesen Themen:

Verdrahtungsdiagramm

ESP32 RFID RC522 MP3-Player Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Wenn Sie nicht wissen, wie Sie ESP32 und andere Komponenten mit Strom versorgen, finden Sie Anleitungen im folgenden Tutorial: Wie man ESP32 mit Strom versorgt.

※ Notiz:

Die Reihenfolge der Pins kann je nach Hersteller variieren. Verwenden Sie IMMER die auf dem Modul aufgedruckten Beschriftungen. Das obige Bild zeigt die Pinbelegung der Module der Marke DIYables.

Vorbereitung

  • Speichere vorab eine Liste von Liedern, die du auf der microSD-Karte abspielen möchtest.
  • Stecke die microSD-Karte in das MP3-Player-Modul.
  • Verbinde das MP3-Player-Modul mit dem ESP32.
  • Schließe den Lautsprecher an das MP3-Player-Modul an.
  • Schließe den Lautsprecher an eine Stromquelle an.
  • Verbinde den RFID-Leser mit dem ESP32.

Da die UID normalerweise nicht auf RFID-Tags gedruckt wird, besteht der erste Schritt darin, die UID der Tags herauszufinden. Dies kann auf folgende Weise erfolgen:

  • Falls dies das erste Mal ist, dass du ESP32 verwendest, sieh dir wie man die Umgebung für ESP32 in der Arduino IDE einrichtet an.
  • Schließe die Verkabelung wie im obigen Bild an.
  • Schließe das ESP32-Board über ein Micro-USB-Kabel an deinen PC an.
  • Öffne die Arduino IDE auf deinem PC.
  • Wähle das richtige ESP32-Board (z. B. ESP32 Dev Module) und den COM-Port aus.
  • Kopiere den untenstehenden Code und öffne ihn mit der Arduino IDE.
/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser ESP32 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/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 } } }
  • Klicke in der Arduino IDE auf die Schaltfläche Hochladen, um den Code auf den ESP32 hochzuladen
  • Öffne den Seriellen Monitor
  • Lege nacheinander RFID-Karten bzw. Keyfobs auf das RFID-RC522-Modul
  • Notiere die UIDs im Seriellen Monitor; sie sehen so aus wie unten gezeigt:
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  

Wir werden diese RFID-UIDs verwenden, um den untenstehenden ESP32-Code zu aktualisieren.

ESP32-Code - RFID-MP3-Player

/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser ESP32 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/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]); } }

Schnelle Schritte

  • Kopiere den obigen Code und öffne ihn mit der Arduino-IDE
  • Aktualisiere die UIDs, die du im Vorbereitungsschritt erhalten hast, in den obigen Code
  • Lade den Code auf den ESP32 hoch
  • Berühre nacheinander jeden RFID-Tag am RFID-RC522-Modul
  • Spiele den Ton des MP3-Players ab
  • Wenn alles reibungslos läuft, wird jede RFID-Karte mit einem Lied verknüpft
  • Du kannst den Namen des Liedes auf jeder RFID-Karte vermerken

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!