
Inhalt
Mit kodierten Karten, einem RFID-Kartenlesegerät und dem YX5300-Modul soll ein mp3-Spieler realisiert werden.
Die Hardware

Der YX5300 verfügt über einen 3,5 mm Klinkenstecker, die Musik wird von einer SD-Karte abgespielt.

Für einen kindersicheren Betrieb lassen sich sowohl Arduino als auch Lautsprecher mit Akkus betreiben.
Natürlich fehlt hier noch eine Gehäuse aus dem 3D-Drucker.

Beispiele für kodierte Karten

Benötigte Bauteile
- YX5300-Modul
- RFID-Kartenleser
- externer Lautsprecher mit 3,5 mm Klinkenstecker
- Leitungsdrähte
Baue die Schaltung auf.
(Fahre mit der Maus über das Bild, um die Bezeichnungen der Bauteile zu sehen)

Vorbereitungen
Kodierung der Karten feststellen
Als Erstes musst du mit einem Programm die Kennung der Karten herausfinden und notieren.
Benötigte Bibliotheken:
![]() | ![]() |
Das Programm
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | // RFID-Bibiothek hinzufügen #include <MFRC522.h> // Anschlüsse definieren #define SDA 10 #define RST 9 // RFID-Empfänger benennen MFRC522 mfrc522(SDA, RST); void setup() { Serial.begin(9600); SPI.begin(); // Initialisierung des RFID-Empfängers mfrc522.PCD_Init(); } void loop() { String WertDEZ; // Wenn keine Karte in Reichweite ist .. if (!mfrc522.PICC_IsNewCardPresent()) { // .. wird die Abfrage wiederholt. return; } // Wenn kein RFID-Sender ausgewählt wurde .. if (!mfrc522.PICC_ReadCardSerial()) { // .. wird die Abfrage wiederholt. return; } Serial.println(F(“Karte entdeckt!”)); // Dezimal-Wert in Strings schreiben for (byte i = 0; i < mfrc522.uid.size; i++) { WertDEZ = WertDEZ + String(mfrc522.uid.uidByte[i], DEC) + ” “; } // Kennung dezimal anzeigen Serial.println(“Dezimalwert: ” + WertDEZ); delay(1000); } |

Der mp3-Spieler
Bibliotheken und Variablen
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | // RFID-Bibiothek hinzufügen #include “MFRC522.h” // Player-Bibliothek hinzufügen #include “SerialMP3Player.h” #define TX 3 #define RX 4 SerialMP3Player mp3(RX,TX); int Lautstaerke = 20; // wenn Pause false -> Wiedergabe stoppen // wenn Pause true -> Wiedergabe fortsetzen bool Pause = false; // Titel, der gespielt werden soll int aktuellerTitel; // Anschlüsse RFID definieren #define RST 9 #define SDA 10 // RFID-Empfänger benennen MFRC522 mfrc522(SDA, RST); |
Der setup-Teil
1 2 3 4 5 6 7 8 9 10 11 | void setup() { Serial.begin(9600); SPI.begin(); // Serielle Kommunikation mit YX5300 starten mp3.begin(9600); // Initialisierung des RFID-Empfängers mfrc522.PCD_Init(); } |
Der loop-Teil
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | void loop() { // Variable für den Wert der Karte String WertDEZ; // Wenn keine Karte in Reichweite ist .. if (!mfrc522.PICC_IsNewCardPresent()) { // .. wird die Abfrage wiederholt. return; } // Wenn kein RFID-Sender ausgewählt wurde .. if (!mfrc522.PICC_ReadCardSerial()) { // .. wird die Abfrage wiederholt. return; } Serial.println(F(“Karte entdeckt!”)); // Dezimal-Werte in String schreiben for (byte i = 0; i < mfrc522.uid.size; i++) { WertDEZ = WertDEZ + String(mfrc522.uid.uidByte[i], DEC) + ” “; } // Kennung dezimal anzeigen Serial.println(“Wert in dezimal: ” + WertDEZ); // Leerzeichen am Ende entfernen WertDEZ.trim(); // Pause/Weiter if (WertDEZ == “195 106 18 23”) { if (Pause) mp3.pause(); else mp3.play(); Pause = !Pause; } // ersten Titel spielen if (WertDEZ == “131 125 21 23”) { aktuellerTitel = 1; mp3.stop(); mp3.play(aktuellerTitel, Lautstaerke); } // zweiten Titel spielen if (WertDEZ == “227 77 233 22”) { aktuellerTitel = 2; mp3.stop(); mp3.play(aktuellerTitel, Lautstaerke); } delay(500); } |
Verwandte Anleitungen:
Letzte Aktualisierung:








