Arduino - RFID-MP3-Player

In diesem Tutorial werden wir den Prozess der Erstellung eines RFID-basierten MP3-Players mit Arduino, einem RC522 RFID-Leser und einem MP3-Player-Modul untersuchen. Das MP3-Player-Modul ist mit einer Micro-SD-Karte ausgestattet, auf der mehrere Songs gespeichert sind. Jede RFID-Karte steht für einen Song, und die Anzahl der RFID-Karten entspricht der Anzahl der Songs.

Indem man eine RFID-Karte vor dem RFID-Lesegerät durchzieht, spielt der Arduino das entsprechende Lied, das mit dieser spezifischen RFID-Karte verbunden ist.

Erforderliche Hardware

1×Arduino Uno R3
1×USB 2.0 Kabel Typ A/B (für USB-A PC)
1×USB 2.0 Kabel Typ C/B (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) Schraubklemmenblock-Shield für Arduino Uno
1×(Empfohlen) Breadboard-Shield für Arduino Uno
1×(Empfohlen) Gehäuse für Arduino Uno
1×(Empfohlen) Prototyping-Grundplatte & Breadboard-Kit für Arduino Uno

Oder Sie können die folgenden Kits kaufen:

1×DIYables STEM V3 Starter-Kit (Arduino 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 RFID/NFC RC522-Modul und MP3-Player

Wenn Sie nichts über das RFID/NFC RC522-Modul und den MP3-Player wissen (Pinbelegung, Funktionsweise, Programmierung ...), erfahren Sie mehr darüber in den folgenden Tutorials:

Verdrahtungsdiagramm

Arduino RFID RC522 MP3-Player-Schaltplan

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

Um die Einrichtung zu vereinfachen, sind die Pins des RC522-Moduls direkt mit den Arduino-Pins verbunden. Allerdings kann diese direkte Verbindung zu Problemen führen, da die Ausgabepins des Arduino 5 V liefern, während die Pins des RC522-Moduls für einen Betrieb mit 3,3 V ausgelegt sind. Es ist ratsam, die Spannung zwischen den Arduino-Pins und den Pins des RC522-Moduls zu regulieren, um potenzielle Probleme zu verhindern. Für detailliertere Anleitungen konsultieren Sie bitte das Arduino - RFID RC522 Tutorial. Das bereitgestellte Diagramm veranschaulicht, wie Widerstände verwendet werden können, um das 5 V auf 3,3 V zu regeln:

Arduino RC522-Modul mit spannungsreguliertem Schaltplan

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

※ Notiz:

Die Pinbelegung 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

  • Speichern Sie vorab eine Liste von Liedern, die Sie abspielen möchten, auf der Micro-SD-Karte.
  • Setzen Sie die Micro-SD-Karte in das MP3-Player-Modul ein.
  • Verbinden Sie das MP3-Player-Modul mit dem Arduino.
  • Schließen Sie den Lautsprecher an das MP3-Player-Modul an.
  • Schließen Sie den Lautsprecher an eine Stromquelle an.
  • Verbinden Sie den RFID-Leser mit dem Arduino.

Da die UID in der Regel nicht auf dem RFID-Tag aufgedruckt ist, ist der erste Schritt, den wir tun müssen, die UID der Tags herauszufinden. Dies kann durch Folgendes erreicht werden:

  • Kopieren Sie den untenstehenden Code und öffnen Sie ihn in der Arduino IDE
/* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino 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/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 } } }
  • Klicken Sie auf die Hochladen-Schaltfläche in der Arduino IDE, um den Code auf Arduino hochzuladen.
  • Öffnen Sie den Seriemonitor.
  • Halten Sie nacheinander Ihre RFID-Karten bzw. Schlüsselanhänger an das RFID-RC522-Modul.
  • Notieren Sie die UIDs im Seriemonitor; sie sehen ungefähr so aus:
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  

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

Arduino-Code - RFID-MP3-Player

/* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino 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/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]); } }

Schnelle Schritte

  • Kopiere den obigen Code und öffne ihn mit der Arduino IDE.
  • Aktualisiere die UIDs, die du im Vorbereitungsschritt erhalten hast, im obigen Code.
  • Lade den Code auf den Arduino hoch.
  • Halte nacheinander jeden RFID-Tag an das RFID-RC522-Modul.
  • Spiele den Ton des MP3-Players ab.
  • Wenn alles reibungslos läuft, wird jede RFID-Karte einem Song zugeordnet.
  • Du kannst den Namen des Songs 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!