Construye tu propio reproductor MP3 como la Toniebox
FunduinoÚltima actualización el
Eine Audiobox bauen, die per RFID-Karte Hörspiele und Musik startet
Material
Aufbau und Verkabelung
SD-Karte vorbereiten
Bibliotheken installieren
Quellcode
Sketch: MP3-Box mit RFID-Steuerung
//Bibliothek, um mit dem DFPlayer arbeiten zu koennen.
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
//Bibliotheken, um mit dem RFID-Modul arbeiten zu koennen.
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);
SoftwareSerial mySoftwareSerial(6, 7); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
//Ordnet den Tastern jeweils einen Pin zu.
int TasteVolumeUP = 3;
int TasteVolumeDOWN = 5;
int Pause = 4;
//Speichert, ob ein Taster gedrueckt ist oder nicht.
int STATUSup = 0;
int STATUSdown = 0;
int STATUSpause = 0;
int Volume = 15; //Speichert die eingestellte Lautstaerke
int iPause = 0; //Besagt, ob die Wiedergabe pausiert ist oder nicht.
void setup()
{
SPI.begin();
mfrc522.PCD_Init();
mySoftwareSerial.begin(9600);
Serial.begin(115200);
pinMode(TasteVolumeUP, INPUT);
pinMode(TasteVolumeDOWN, INPUT);
pinMode(Pause, INPUT);
if (!myDFPlayer.begin(mySoftwareSerial)) { //SoftwareSerial fuer die Kommunikation mit dem MP3-Modul
Serial.println(F("Fehler:"));
Serial.println(F("1.Verbindung zum MP3 Modul herstellen!"));
Serial.println(F("2.Speicherkarte einlegen!"));
while (true);
}
myDFPlayer.volume(Volume); //Lautstaerke zwischen 0 und 30 einstellen. Als Startwert haben wir der Variablen den Wert 15 zugeordnet.
}
void loop()
{
STATUSup = digitalRead(TasteVolumeUP);
STATUSdown = digitalRead(TasteVolumeDOWN);
STATUSpause = digitalRead(Pause);
// Nun wird geprueft, was passieren soll, wenn die Pausetaste gedrueckt wird. Wenn das Geraet abspielt, soll es pausieren. Wenn es sich bereits in der Pause befindet, soll die Pause aufgehoben werden.
if (STATUSpause == HIGH)
{
if (iPause == 0)
{
myDFPlayer.pause();
delay(500);
iPause = 1;
}
else if (iPause == 1)
{
myDFPlayer.start();
delay(500);
iPause = 0;
}
}
if (STATUSup == HIGH && Volume < 30) // Wenn Lautstaerke+ gedrueckt wird und die maximale Lautstaerke (Wert 30) noch nicht erreicht ist, dann soll die Lautstaerke angehoben werden.
{
Volume = Volume + 5;
myDFPlayer.volume(Volume);
Serial.println(Volume);
delay(500);
}
if (STATUSdown == HIGH && Volume > 0) // Wenn Lautstaerke- gedrueckt wird und die minimale Lautstaerke (Wert 0) noch nicht erreicht ist, dann soll die Lautstaerke gesenkt werden.
{
Volume = Volume - 5;
myDFPlayer.volume(Volume);
Serial.println(Volume);
delay(500);
}
// Hier wird der RFID-TAG ausgelesen
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
long code = 0;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
code = ((code + mfrc522.uid.uidByte[i]) * 10);
}
// Die Kartennummer soll am Seriellen Monitor angezeigt werden.
Serial.print("Die Kartennummer lautet: ");
Serial.println(code);
// ACHTUNG! Nur in unserem Fall lautet der Code des ersten RFID-TAG 446250. Den Code des eigenen RFID-TAG muss man zunaechst selbst ermitteln, indem man diesen Sketch hochlaedt und die Nummer am Seriellen Monitor abliest.
if (code == 446250) //Wenn der Code 446250 lautet, dann spiele die MP3-Datei mit dem Namen 0002.mp3
{
iPause = 0;
myDFPlayer.play(2); // An dieser Stelle wird die mp3-Datei "0002.mp3" aufgerufen
delay(600);
}
if (code == 1427270) //Wenn der Code 1427270 lautet, dann spiele die MP3-Datei mit dem Namen 0001.mp3
{
iPause = 0;
myDFPlayer.play(1); //An dieser Stelle wird die mp3-Datei "0001.mp3" aufgerufen
delay(600);
}
}RFID-TAG einer MP3-Datei zuordnen
Bisher im Sketch
if (code == 446250)
{
iPause = 0;
myDFPlayer.play(2); // An dieser Stelle wird die mp3-Datei "0002.mp3" aufgerufen
delay(600);
}Angepasst fuer den neuen RFID-TAG
if (code == 123456)
{
iPause = 0;
myDFPlayer.play(12); // An dieser Stelle wird die mp3-Datei "0012.mp3" aufgerufen
delay(600);
}Gehäuse
Calificar la guía