DFPlayer mini Modul für Arduino
In diesem Artikel schauen wir uns das DFPlayer mini Modul für Arduino an.
Für den Bau eines neuen DIY Smart-Home Projekts suchte ich einige Zeit nach einem brauchbaren Arduino-Modul, mit dem Audio-Dateien (z.B. MP3) abgespielt werden können. Hierbei bin ich auf das folgende Modul gestoßen:
Das DFPlayer Modul ist für wenige Euros auf Amazon oder ebay erhältlich. Ich habe das oben verlinkte Modul bestellt und auch flott geliefert bekommen.
Hier zunächst einige technische Spezifikationen zum Modul:
Eigenschaft | Wert |
Spannungsversorgung | 3.2 – 5.0 V |
Stromaufnahme im Standby | 20 mA |
Micro-SD-Kartengröße | Max. 32 GB |
Dateisystem | FAT16 oder FAT32 |
Dateitypen | MP3 und WAV |
Modul-Kommunikation | Seriell RX/TX |
Baudrate | 9600 |
Audio-Leistung | Lautsprecher – bis 3W |
Unterstützte Abtastraten (kHz) | 8 / 11.025 / 12/16 / 22.05 / 24/32 / 44.1 / 48 |
Die Audio-Dateien können hier direkt von einer Micro-SD Speicherkarte gelesen werden. Als Speicherkarte habe ich folgende Karte ohne Probleme verwendet:
Die Dateien können entweder ins Hauptverzeichnis oder in Unterordner kopiert werden. Im Hauptverzeichnis können maximal 3.000 Dateien abgelegt werden. In den Unterverzeichnissen gibt es diese Beschränkung nicht. Zudem sollten die Dateinamen in folgendem Format aufgebaut sein:
0001.mp3
0002.mp3
0003.mp3
…
Weitere Details können auch hier vom technischen Datenblatt entnommen werden:
https://wiki.dfrobot.com/DFPlayer_Mini_SKU_DFR0299
Bevor wir mit Aufbau der Komponenten sowie der Programmierung beginnen, bereiten wir nun die SD-Karte vor. Hierzu habe ich zunächst eine neue SD-Karte formatiert (FAT32). Wichtig ist auch, dass die Karte nur über eine Partition verfügt. Falls eine Boot-Partition angelegt ist, muss diese entfernt werden.
Im nächsten Schritt können wir dann eine Beispiel-Datei mit dem Namen „0001.mp3“ auf die SD-Karte kopieren.
Die SD-Karte ist nun vorbereitet und kann im nächsten Schritt in das Modul eingeschoben werden.
Im nächsten Schritt können wir mit dem Aufbau der Schaltung beginnen. Im folgenden Schaltplan ist der Aufbau dargestellt:
Der Schaltplan ist relativ einfach aufgebaut. Das Modul wird über die 5V Spannungsversorgung des ESP8266 versorgt. Zudem werden die Kommunikations-Pins TX/RX mit den Pins D1 und D2 verbunden.
Wir können jetzt mit der Programmierung des Moduls beginnen. Hierzu verwende ich die Arduino IDE. Im ersten Schritt muss die benötigte Bibliothek für das MP3 Modul installiert werden. Dazu öffnest Du im Menü den Bereich „Werkzeuge“ und wählst den Menüpunkt „Bibliotheken verwalten…“.
Im Bibliotheksverwalter suchst Du nun nach der Bibliothek „DFRobotDFPlayerMini“ und installierst die gefundenen Bibliothek.
Nach der Installation können wir nun aus den mitgelieferten Beispielen das folgende Beispiel auswählen.
Im letzten Schritt habe ich noch die Kommunikations-Ports des Moduls angepasst und hier D1 und D2 verwendet (siehe Schaltung weiter oben).
Wenn wir nun den Sketch auf den ESP8266 hochladen und das Modul dann neustarten, sollte unsere MP3-Datei auf der SD-Karte abgespielt werden.
Pingback: ioBroker Signalgeber mit einem ESP8266 – smarthome-tricks.de
Hallo Matthias,
was ist denn für ein Lautsprecher verbaut bzw. was ist möglich/max. notwendig.
Grüße
Hallo Matthias,
das Playermodul finde ich sehr interessant. Leider bekomme ich es an einem ESP nicht zum Laufen (sowohl NodeMCU in 2 Ausführungen, sowie auf einem Wemos D1 Mini Pro).
Es erscheint im seriellen Monitor immer folgende Meldung:
DFRobot DFPlayer Mini Demo
Initializing DFPlayer … (May take 3~5 seconds)
Unable to begin:
1.Please recheck the connection!
2.Please insert the SD card!
Auf einem Arduino Uno läuft der Sketch sauber durch (mit zusätzlichem Widerstand 1K)
Auch eine extra Stromversorgung für das Playermodul hilft nicht weiter.
Irgendwelche Tipps?
MfG
Schönes WE
Moin Mark,
hast Du mal versucht den ESP8266 direkt nach dem Flashen zu trennen und dann neu einzustecken? Das war bei mir das Problem.
LG Matthias
Hallo Mark,
falls du noch damit beschäftigt bist: Ich konnte das Problem lösen, indem ich im Beispielcode „if (!myDFPlayer.begin(mySoftwareSerial)) {…}“ durch „if (!myDFPlayer.begin(mySoftwareSerial, false)) {…} “ ersetzt habe. Hoffe das hilft dir vielleicht weiter 🙂
VG
Hallo mirkoV,
der Tipp mit dem „false“ war super!
Ich habe ewig rumgerätselt warum es nicht ging …
Was bei mir auch noch ein Problem war, dass sich mein ESP8266 immer in der while(true) Schleife aufgehängt hatte. Hier muss noch ein delay(0) rein, ist nicht in allen Beispielen im Netz mit drin.
while(true){
delay(0); // Code to compatible with ESP8266 watch dog.
}
Danke!
Moin,
habe alles so nachgebaut wie auf dem Schaltplan leider gibt er mir allerdings beim Flashen den Fehler „‚D1‘ was not declared in this scope“ aus. Zu dem Fehler gibt es auch einige Beträge aber leider hatte ich da keinen erfolg. Vielleicht hat hier einer von euch eine Lösung.
Danke im Vorraus,
Simon
Moin Simon,
du hast vermutlich beim Flashen ein falsches Board ausgewählt. Damit die Pin-Namen definiert sind, solltest du anstatt „Generic ESP8266“ z.B. den „Wemos D1 R1“ verwenden.
Grüße
danke mark, das hat bei mir funktioniert!
Hallo,
ich habe ein Problem mit dem Player. Habe mir den Sketch bisschen angepasst um den Player über MQTT aus ioBroker steuern zu können. Beim Initialisieren bekomme ich die Meldung:
Initializing DFPlayer … (May take 3~5 seconds)
DFPlayer Mini online.
Verbinde MQTT…verbunden
DFPlayerError:Get Wrong Stack
Time Out!
Das interessante ist, dass ich den selben Sketch bereits erfolgreich auf einem anderen Gerät laufen habe. Der einzige Unterschied ist der MQTT-Client. Habe schon reichlich recherchiert um der Bedeutung der Meldung „Get Wrong Stack“ auf die Spur zu kommen, leider ohne Erfolg. Hat vielleicht jemand eine Idee, was hier die Ursache sein könnte?!
Steffen