mp3-Play­er mit RFID-Modul

Lese­zeit: 5 Minu­ten

Lösung
Seite als PDF

Mit kodier­ten Kar­ten, einem RFID-Kar­ten­le­se­ge­rät und dem YX5300-Modul soll ein mp3-Spie­ler rea­li­siert werden.

Die Hard­ware

Der YX5300 ver­fügt über einen 3,5 mm Klin­ken­ste­cker, die Musik wird von einer SD-Kar­te abgespielt.

Ein RFID-Modul (radio-fre­quen­cy iden­ti­fi­ca­ti­on) besteht aus soge­nann­ten „Tags“, und einem Lesegerät.

Bei­spie­le für kodier­te Karten

Benö­tig­te Bauteile

  • YX5300-Modul
  • RFID-Kar­ten­le­ser
  • exter­ner Laut­spre­cher mit 3,5 mm Klinkenstecker
  • Lei­tungs­dräh­te

Baue die Schal­tung auf.
(Fah­re mit der Maus über das Bild, um die Bezeich­nun­gen der Bau­tei­le zu sehen)

Vor­be­rei­tun­gen

Kodie­rung der Kar­ten feststellen

Als Ers­tes musst du mit einem Pro­gramm die Ken­nung der Kar­ten her­aus­fin­den und notieren.

Benö­tig­te Bibliotheken:

Das Pro­gramm

// 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

// 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

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

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);
}

Startseite
Aufgaben A-Z
Suchen
Downloads
Fehlermeldungen
Seite als PDF

Ver­wand­te Aufgaben:


Letzte Aktualisierung: 8. Apr 2024 @ 15:24