ESP8266

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:

EigenschaftWert
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.

Matthias Korte

Hauptberuflich Software-Entwickler und seit einigen Jahren Smart-Home Fan. Angefangen hat alles mit einem RaspberryMatic und einer schaltbaren Steckdose. Mittlerweile habe ich einige Steckdosen, Sensoren, und Thermostate sowie ioBroker zur Visualisierung im Einsatz.

10 Gedanken zu „DFPlayer mini Modul für Arduino

  • Pingback: ioBroker Signalgeber mit einem ESP8266 – smarthome-tricks.de

  • Mark der Zweite

    Hallo Matthias,

    was ist denn für ein Lautsprecher verbaut bzw. was ist möglich/max. notwendig.

    Grüße

    Antwort
  • Mark der Zweite

    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

    Antwort
    • Matthias Korte

      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

      Antwort
  • 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

    Antwort
    • Sven

      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!

      Antwort
  • Simon

    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

    Antwort
    • 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

      Antwort
  • Martin

    danke mark, das hat bei mir funktioniert!

    Antwort
  • Steffen

    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

    Antwort

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert