Nr.43 – DFPlayer Mini MP3 Player

Mit diesem winzigen Modul, gerade mal etwas größer als eine Micro-SD Speicherkarte können tolle Projekte mit Tonausgabe umgesetzt werden. An dem Modul kann direkt ein Miniaturlautsprecher angeschlossen werden, ohne dass ein Verstärker benötigt wird. Für die Sprachausgabe eines kleinen Roboters ideal.

Material: Arduino Mikrocontroller / DFPlayer Mini MP3 Player For Arduino / Micro SD Karte / Steckkabel

Wichtiger Hinweis: Die SD-Karte muss das FAT16 (unüblich) oder das FAT32 Format haben. Die Formatierung deiner Speicherkarte ist sehr einfach. Durch einen Rechtsklick auf den entsprechenden Wechseldatenträger am PC kann „Formatieren…“ ausgewählt werden. In dem Menü kann unter „Dateisystem“ „Fat32“ ausgewählt werden. Achtung, alle Daten auf der Speicherkarte werden bei dem Vorgang gelöscht.
Das „DFPlayer Mini MP3 Player“ Modul kann am besten auf ein Breadboard gesteckt werden, um übersichtlich damit arbeiten zu können. Alternativ, vorallem bei Platzmangel, kann das Modul aber auch über einzelne male/female Kabel am Arduino Mikrocontroller angeschlossen werden.
Da das Modul direkt an einen Lautsprecher angeschlossen werden kann, verwenden wir in dieser Anleitung einen typischen Miniatur-Lautsprecher aus dem Funduino-Lernset und verkabeln ihn mit dem MP3-Modul.
Damit nach dem Aufbau direkt programmiert werden kann, benötigen wir einige Soundfiles im MP3-Format. Diese sollen später mit Hilfe des Arduino-Mikrocontrollers abgespielt werden. Gesprochene Soundfiles, bzw. „Sprachdateien“ kann man mit Hilfe des Computers oder Laptops selber aufnehmen. Das Ziel könnte es bspw. sein, ein Gerät zu bauen, welches per abgespielter Sprachdatei Informationen verbreitet. Ein Beispiel dafür wäre eine Feuchtigkeitsmessung an einer Pflanze. Sobald der Boden zu trocken wird, könnte die Pflanze mit Hilfe des Arduino Mikrocontrollers nach Wasser, oder sonstigen Getränken rufen. Wer jedoch nicht gerne seine eigene Stimme hört, vor allem wenn sie aus einem Gebüsch erschallt, kann auch online MP3-Sprachdateien nach eigenen Texten erstellen. Dafür gibt es im Netz diverse Anbieter, die den Service kostenlos anbieten. Man sollte dabei nach dem Begriff „Text zu MP3“ oder „Text-to-MP3“ suchen. Für diese Anleitung speichern wir drei MP3-Dateien auf der microSD Karte ab. Die MP3-Dateien nennen wir 0001.MP3, 0002.MP3 und 0003.MP3.
Der fertige Aufbau für die ersten Versuche sollte jetzt so aussehen:

Als nächstes wird eine passende Library benötigt. Sie kann über den Bibliotheksverwalter installiert werden. Wir verwenden als Grundlage für diese Anleitung die Library von DFRobot. Wie man in dem Bild sehen kann, gibt es jedoch auch weitere passende Librarys, die andere Vorteile bieten, wie bspw. weniger Speichernutzung bei abgespeckten Funktionen.

Um mit dem Modul zu arbeiten rufen wir zunächst einen ganz einfachen Beispielcode auf. Man findet Ihn im Bereich Datei → Beispiele → DFRobotDFPlayerMini → GetStarted.

Ohne jegliche Veränderung laden wir den Sketch auf das Arduino Mikrocontrollerboard und starten sofort den Seriellen Monitor. Wer alles richtig gemacht hat, wird in diesem Moment auch schon Geräusche oder Töne aus dem Lautsprecher gehört haben.
Der Serielle Monitor gibt nun Aufschluss darüber, ob das Modul DFRobotDFPlayerMini richtig angeschlossen wurde und einsatzbereit ist. Sollten Probleme bestehen, findet man z.B. Informationen über die fehlende SD-Karte oder eine ggf. falsche Verkabelung. Praxis-tipp: Die Datenübertragung an den seriellen Monitor erfolgt in diesem Sketch mit einer Übertragungsrate von 115200 statt 9600. Der Wert muss im seriellen Monitor eingestellt werden, da sonst nur unleserliche Hieroglyphen angezeigt werden.
Wer nach allen Kontrollen noch nichts aus dem Lautsprecher gehört hat kann auch die Lautstärke des Lautsprechers erhöhen. Dazu befindet sich im Sketch die Befehlszeile „myDFPlayer.volume(10);“. Hier sollte als Lautstärke dann der Maximalwert (30) eingetragen werden.
Wenn die oben genannten Einstellungen sowie der Aufbau erfolgreich waren, spielt der Arduino Mikrocontroller nun unmittelbar nach dem Start die erste MP3-Datei ab. Für einen „GettingStarted“ Sketch ist der geöffnete Sketch schon relativ unübersichtlich. Daher sehen wir uns hier einmal den Sketch in seiner Minimalform an:

#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;

void setup()
{
  mySoftwareSerial.begin(9600);
  myDFPlayer.volume(30);  //Lautstärke auf Maximum (30)
}

void loop()
{
  myDFPlayer.play(1);  //Spielt die erste MP3-Datei ab
delay(3000); // Nach dem Abspielen der Datei pausiert der Sketch für drei Sekunden.
}

Der Sketch kann nun also nur noch eine MP3-Datei abspielen und ist sehr übersichtlich geworden. Das ist eine gute Grundlage, um eine erste Anwendung zu programmieren. Ideen gibt es dafür genug. Schauen wir uns ein paar Kombinationen an:
Modul+Temperatursensor= Sprechendes Fieberthermometer
Modul+Bewegungsmelder= Einbrecherschreck
Modul+Ultraschallsensor= Abstandswarnung
Modul+Taster= Türklingel mit „Ansage“
Modul+RFID-Kit= Akustische Zugangsbestätigung
Modul+Feuchtigkeitssensor= Die schimpfende Pflanze
usw…

Wir starten mit der Türklingel. Bei einem Tastendruck soll die MP3-Datei von der SD-Karte abgespielt werden. Zusätzlich zum bisherigen Aufbau schließen wir an Pin 7 einen Taster an.

#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
int taster=7; //Das Wort „taster“ steht jetzt für den Wert 7. 
int tasterstatus=0; //Das Wort „tasterstatus“ steht jetzt zunächst für den Wert 0. Später wird unter dieser Variable gespeichert, ob der Taster gedrückt ist oder nicht.

void setup()
{
  mySoftwareSerial.begin(9600);
  myDFPlayer.volume(30);  //Lautstärke auf Maximum (30)
pinMode(taster, INPUT); //Der Pin mit dem Taster (Pin 7) ist jetzt ein Eingang.

}

void loop()
{
tasterstatus=digitalRead(taster); //Hier wird der Pin7 ausgelesen (Befehl:digitalRead). Das Ergebnis wird unter der Variable „tasterstatus“ mit dem Wert „HIGH“ für 5Volt oder „LOW“ für 0Volt gespeichert.
if (tasterstatus == HIGH) //Verarbeitung: Wenn der Taster gedrückt ist (Das Spannungssignal ist hoch)
{ //Programmabschnitt des IF-Befehls öffnen.
 myDFPlayer.play(1);  //Spielt die erste MP3-Datei ab
} //Programmabschnitt des IF-Befehls schließen.
}

Als zweites Beispiel programmieren wir noch die schimpfende Zimmerpflanze. Dazu schließen wir am Analogen Pin A0 einen Feuchtigkeitssensor an. Auf der SD-Karte speichern wir eine MP3-Datei mit dem Inhalt „Hey du da, ja genau du, ich habe Durst! Bring mir etwas zu trinken“.

#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
int messwert=0; //Unter der Variablen "messwert" wird später der Messwert des Sensors gespeichert.

void setup()
{
  mySoftwareSerial.begin(9600);
  myDFPlayer.volume(30);  //Lautstärke auf Maximum (30)
}

void loop()
{
messwert=analogRead(A0); //Die Spannung an dem Sensor wird ausgelesen und unter der Variable „messwert“ gespeichert.
if (messwert <= 300) //Verarbeitung: Wenn der Messwert kleiner als 500 ist, dann...
{ //Programmabschnitt des IF-Befehls öffnen.
 myDFPlayer.play(1);  //...spielt das Modul die erste MP3-Datei ab
} //Programmabschnitt des IF-Befehls schließen.
}

Sobald der Wert der Feuchtigkeit den Grenzwert von 300 unterschreitet, wird nun die MP3-Datei vom Arduino Mikrocontroller aktiviert und mit Hilfe des „DFPlayer Mini MP3 Player„ abgespielt.

Weitere Informationen über das Modul findet man auf der Seite des Herstellers:

https://wiki.dfrobot.com/DFPlayer_Mini_SKU_DFR0299