Zum Inhalt springen
DFPlayer Arduino Title

DFPlayer Mini-MP3-Player für Arduino

    Der DFPlayer Mini-MP3-Player für Arduino* ist ein kleines und preisgünstiges MP3-Modul mit direktem Ausgang für einen Lautsprecher. Das Modul kann als eigenständiges Modul mit angeschlossenem Akku, Lautsprecher und Drucktasten oder in Kombination mit einem Arduino UNO oder jedem anderen Controller mit RX/TX-Fähigkeiten verwendet werden. Die Musik-Daten werden auf einer Micro-SD-Karte gespeichert.

    Hersteller ist Flyrontech und das Modul ist auch unter der Bezeichnung FN-M19P erhältlich.

    Spezifikation

    • Unterstützte Abtastraten (kHz): 8/11.025/12/12/16/22.05/24/32/44.1/48
    • 24 -Bit-DAC-Ausgang, Unterstützung für Dynamikbereich 90dB, SNR-Unterstützung 85dB
    • Unterstützt vollständig FAT16 , FAT32-Dateisystem, maximale Unterstützung 32GB der TF-Karte, Unterstützung 32G der U-Disc, 64M Bytes NORFLASH
    • Eine Vielzahl von Steuermodi, E/A-Steuermodus, serieller Modus, AD-Tasten-Steuermodus
    • Werbeton-Wartefunktion, die Musik kann unterbrochen werden. Wenn die Werbung vorbei ist, wird die Musik weiter abgespielt
    • Audiodaten nach Ordnern sortiert, unterstützt bis zu 100 Ordner, jeder Ordner kann bis zu 255 Lieder aufnehmen
    • Lautstärke auf 30 Stufen einstellbar, EQ auf 6 Stufen einstellbar

    Anwendung

    • Sprachübertragung der Autonavigation
    • Sprachanweisungen an Bahnhöfen und in Fahrzeugen
    • Sprachanweisungen in den Bereichen Elektrizität, Kommunikation und Finanzen
    • Sprachaufforderungen der öffentlichen Sicherheit
    • Mehrkanal-Sprachalarm oder Bedienungsanleitung der Ausrüstung
    • Sprachhinweise zum sicheren Fahren mit dem Elektro-Touristenauto
    • Alarm bei Ausfall der elektromechanischen Ausrüstung
    • Sprachanweisungen für Feueralarm
    • Automatische Sendeanlagen, regelmäßige Ausstrahlung.

    Pin-Belegung

    PinBeschreibungHinweis
    VCCEingangsspannungDC3,2~5,0V;Typ: DC4,2V; TYP: DC4,2V
    RXSerieller UART-Eingang
    TXSerieller UART-Ausgang
    DAC_RAudioausgang rechter KanalKopfhörer und Verstärker
    DAC_LAudioausgang linker KanalKopfhörer und Verstärker
    SPK2Lautsprecher –Lautsprecher kleiner als 3 W
    GNDGNDGND
    SPK1Lautsprecher +Lautsprecher kleiner als 3 W
    IO_1Trigger-Anschluss 1Kurzes Drücken zum Abspielen des vorherigen Titels, lang drücken zum Verringern der Lautstärke
    GNDGNDGND
    IO_2Trigger-Anschluss 2Kurzes Drücken zum Abspielen des nächsten Titels,  lang drücken zum Erhöhen der Lautstärke
    ADKEY1AD-Anschluss 1Erstes Segment auslösen
    ADKEY2 AD-Anschluss 2Fünftes Segment auslösen
    USB+USB* DPUSB-Anschluss
    USB-USB- DMUSB-Anschluss
    BUSYAbspiel-StatusLOW bedeutet abspielen, HIGH bedeutet nicht abspielen

    Verwendung mit dem Arduino

    Der DFPlayer Mini hat unterschiedliche Arbeitsmodi. Dazu zählt der serielle Modus, in dem Kommandos über die serielle Schnittstelle des Computers empfangen werden können, der AD Key Modus (Stand Alone), in dem viele Taster mit spezifischen Vorwiderständen ausgelesen werden können, sowie der I/O Modus, der bei der Verwendung mit dem Arduino-Board genutzt wird. Im Folgenden geht dieses Tutorial auf den letzteren Fall ein.


    Sieh dir jetzt meinen neuen Arduino-Videokurs an: Jetzt ansehen!


    I/O Modus mit Arduino

    Im I/O Modus des DFPlayer Mini wird eine serielle Kommunikation zwischen Arduino und DFPlayer verwendet. Über eine spezielle Programmbibliothek lassen sich dann Steuersignale direkt an den Player senden.

    Schaltplan: DFPlayer Mini mit Arduino

    DFPlayer Mini mit Arduino Schaltung

    Der DFPlayer wird erstmal mit 5V+ und GND verbunden, danach werden seine RX und TX Pins mit den Arduino Pins 10 und 11 verbunden. Um die nativen RX und TX Pins des Arduinos (0 und 1) nicht zu blockieren, verwenden wir die Software-Serial-Bibliothek. Sie ermöglicht es, eine zweite serielle Schnittstelle auf anderen Pins zu nutzen. Als Letztes wird ein Lautsprecher an den DFPlayer angeschlossen. Alternativ wäre es auch möglich, anstelle des Lautsprechers einen Vorverstärker oder Kopfhörer und die Pins DAC_L, DAC_R und GND anzuschließen. Hier wäre also auch eine Stereo-Ausgabe möglich.

    Bauteile

    SD-Karte

    Die SD-Karte im FAT16 oder FAT32-Format formatiert werden. Auf dem Mac wird zusätzlich noch die Einstellung der Partitionstabelle auf Master-Boot-Record benötigt. Hat man diese Einstellung nicht vorgenommen, wird die SD-Karte nicht erkannt und das DFPlayer-Modul nicht initialisiert.

    Ist die Karte formatiert, lassen sich MP3-Dateien darauf kopieren. Abgespielt werden sie in der Reihenfolge, in der sie auf die Karte kopiert wurden. Der DFPlayer soll bis zu 100 Ordner mit bis zu 255 MP3s verwalten können. Getestet hab ich das nicht ;-)

    Software-Vorbereitung

    Für die Verwendung des DFPlayers muss die Programmbibliothek DFRobotDFPlayerMini installiert werden. Gehe dafür in der Arduino-Software ins Menü Sketch>Programmbibliotheken einbinden>Programmbibliotheken verwalten … und gib im Suchfeld DFPlayer ein. Installiere die erwähnte Bibliothek DFRobotDFPlayerMini.

    Beispiel-Code

    Der folgende Code ist der Beispielcode, den du nach der Installation der Programmbibliothek im Menü unter Datei>Beispiele>DFRobotDFPlayerMini>GetStarted finden kannst. Er spielt alle MP3s auf der SD-Karte für jeweils drei Sekunden ab und geht dann zur nächsten Datei.

    /***************************************************
    DFPlayer - A Mini MP3 Player For Arduino
     <https://www.dfrobot.com/product-1121.html>
     
     ***************************************************
     This example shows the basic function of library for DFPlayer.
     
     Created 2016-12-07
     By [Angelo qiao](Angelo.qiao@dfrobot.com)
     
     GNU Lesser General Public License.
     See <http://www.gnu.org/licenses/> for details.
     All above must be included in any redistribution
     ****************************************************/
    
    /***********Notice and Trouble shooting***************
     1.Connection and Diagram can be found here
     <https://www.dfrobot.com/wiki/index.php/DFPlayer_Mini_SKU:DFR0299#Connection_Diagram>
     2.This code is tested on Arduino Uno, Leonardo, Mega boards.
     ****************************************************/
    
    #include "Arduino.h"
    #include "SoftwareSerial.h"
    #include "DFRobotDFPlayerMini.h"
    
    SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
    DFRobotDFPlayerMini myDFPlayer;
    void printDetail(uint8_t type, int value);
    
    void setup()
    {
      mySoftwareSerial.begin(9600);
      Serial.begin(115200);
      
      Serial.println();
      Serial.println(F("DFRobot DFPlayer Mini Demo"));
      Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));
      
      if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with mp3.
        Serial.println(F("Unable to begin:"));
        Serial.println(F("1.Please recheck the connection!"));
        Serial.println(F("2.Please insert the SD card!"));
        while(true){
          delay(0); // Code to compatible with ESP8266 watch dog.
        }
      }
      Serial.println(F("DFPlayer Mini online."));
      
      myDFPlayer.volume(10);  //Set volume value. From 0 to 30
      myDFPlayer.play(1);  //Play the first mp3
    }
    
    void loop()
    {
      static unsigned long timer = millis();
      
      if (millis() - timer > 3000) {
        timer = millis();
        myDFPlayer.next();  //Play next mp3 every 3 second.
      }
      
      if (myDFPlayer.available()) {
        printDetail(myDFPlayer.readType(), myDFPlayer.read()); //Print the detail message from DFPlayer to handle different errors and states.
      }
    }
    
    void printDetail(uint8_t type, int value){
      switch (type) {
        case TimeOut:
          Serial.println(F("Time Out!"));
          break;
        case WrongStack:
          Serial.println(F("Stack Wrong!"));
          break;
        case DFPlayerCardInserted:
          Serial.println(F("Card Inserted!"));
          break;
        case DFPlayerCardRemoved:
          Serial.println(F("Card Removed!"));
          break;
        case DFPlayerCardOnline:
          Serial.println(F("Card Online!"));
          break;
        case DFPlayerUSBInserted:
          Serial.println("USB Inserted!");
          break;
        case DFPlayerUSBRemoved:
          Serial.println("USB Removed!");
          break;
        case DFPlayerPlayFinished:
          Serial.print(F("Number:"));
          Serial.print(value);
          Serial.println(F(" Play Finished!"));
          break;
        case DFPlayerError:
          Serial.print(F("DFPlayerError:"));
          switch (value) {
            case Busy:
              Serial.println(F("Card not found"));
              break;
            case Sleeping:
              Serial.println(F("Sleeping"));
              break;
            case SerialWrongStack:
              Serial.println(F("Get Wrong Stack"));
              break;
            case CheckSumNotMatch:
              Serial.println(F("Check Sum Not Match"));
              break;
            case FileIndexOut:
              Serial.println(F("File Index Out of Bound"));
              break;
            case FileMismatch:
              Serial.println(F("Cannot Find File"));
              break;
            case Advertise:
              Serial.println(F("In Advertise"));
              break;
            default:
              break;
          }
          break;
        default:
          break;
      }
    }

    Tja, und was fangen wir nun mit dem ganzen neuen Wissen an? Wie wäre es damit:


    Wenn dir das Projekt gefallen hat und du von weiteren interessanten Projekten inspiriert werden willst, sieh dir doch mal mein neues E-Book »Arduino Projekte Volume 1« an!

    • Die beliebtesten Arduino-Projekte von StartHardware
    • Inklusive Schaltplan, Beschreibung und Code
    • Arduino-Schnellstart-Kapitel
    • Kompakter Programmierkurs


    21 Gedanken zu „DFPlayer Mini-MP3-Player für Arduino“

    1. Pingback: Arduino Puppenhaus-Beleuchtung mit Sound – Arduino Tutorial

    2. Pingback: Applausmaschine mit Arduino und Sound – Arduino Tutorial

    3. Pingback: RailFX Kirche mit Arduino Nano – Arduino Tutorial

    4. Pingback: RailFX-Truppenübungsplatz für Modellbahn und Modellbau – Arduino Tutorial

    5. Pingback: RailFX Jahrmarkt-Modul – Arduino Tutorial

    6. Pingback: So baust du eine Sound Machine mit Arduino und dem DFPlayer

    7. Pingback: RailFX: Arduino Bahnhof – Mit Sound und Abfahrtsanzeiger

    8. Pingback: RailFX: Sound-Modul mit Arduino für Modellbahn und Modellbau

    9. Moin,
      Ich hab mich auch mal drangesetzt dieses Projekt als Einführung in den DFPlayer zu machen, allerdings gibt er mir leider das Problem, das es mir immer einen Timeout printed. hat jemand eine Idee woran das liegen könnte. Das einzige das mir einfallen würde was ich anders gemacht habe als in dem tutorial ist einen anderen Lautsprecher zu nehmen der vielleicht ein bisschen zu stark für den Arduino ist (3 Watt und 8 Ohm). Allerdings wüsste ich nicht warum er deshalb timeouten sollte.
      Ich freue mich über jegliche Tipps
      MfG
      Enno

      1. Hi Enno,
        check noch mal deine Schaltung. Bekommst du am Anfang die Nachricht: »DFPlayer Mini online.«? Ist es der DF Player Mini oder der MP3-tf-16p?
        Liebe Grüße
        Stefan

        1. Moin,
          Ja die Nachricht bekomme ich und es ist auch der DFPlayer Mini. Ich habe die Schaltung jetzt tatsächlich noch einmal umgeändert, da ich vorher die Schaltung der Applausmaschine genommen hatte und dachte dass es auch so ginge, da die digital Pins welche angesprochen werden ja die gleichen sind. Jetzt bekomme ich die Fehlermeldung “Get Wrong Stack” aber vielen Dank dass der erste Fehler schon einmal behoben ist. Allerdings hab ich auch gerade keinen Speaker angeschlossen da ich den zu starken gegen einen besser angepassten getauscht habe und dieser erst morgen ankommt. :)
          MfG
          Enno

    10. Hallo alle zusammen,

      ich habe das nachgebaut und wollte es dann testen. Wenn ich dann Spannung darauf gebe wird mir gleich der Fehler der SD-Karte ausgegeben. Also, dass diese nicht vorhanden wäre.
      Kann das daran liegen, dass diese zu groß ist? Die wo ich benutze hat 16GB.
      Benutzen tue ich ein AZDelivery WTV020 Sound Audio Modul SD Card.

      Wäre toll wenn mir da jemand helfen kann.

      Gruß, Domenik

      1. Hi Domenik,
        das Tutorial ist für den DFPlayer Mini. Ich glaube nicht, dass der mit dem WTV020 kompatibel ist. D.h., dass es mit dem Modul nicht auf diese Art funktioniert.
        Liebe Grüße
        Stefan

    11. Moin,
      vielen Dank für diese ausführliche Beschreibung – klasse!
      ich habe den code und den Schaltplan als Vorlage genutzt und es funktioniert auch super mit dem dem 3W Lautsprecher
      jetzt habe ich aktive Lautsprechen an den Pins DACL und DACR sowie GND angeschlossen
      die abgespielten Sounds sind jetzt durch starkes Brummen gestört
      ein Masse-Problem? wie kann ich das lösen

      1. Hi Michael, die DAC_R und DAC_L Anschlüsse sind schon richtig. Woher das Brummen kommt, kann ich nicht sagen. Aber probier mal einen großen Kondensator zwischen 5V+ und GND (1000uF) einzufügen. Hast du noch andere große Verbraucher in deiner Schaltung? Liebe Grüße Stefan

      2. Hallo Michael,

        der Arduino mit dem Soundmodul und der Verstärker müssen jeweils eine eigene Stromversorgung haben
        so hat es bei mir funktioniert, ohne Brummen und Rauschen…

    12. Hallo, ich habe dieses Projekt nachgebaut, die Funktion ist ok. Alle Titel werden nach und nach alle 3sec. angespielt.
      Ich möchte aber das alle Songs voll ausgespielt werden was muss ich im Sketch ändern, bin leider kein Programmierer. Bitte um Info

      Vielen Dank
      Frank

      1. Hi Frank, gute Frage. Ich hab mal ein paar weitere Beispiele im Beitrag (ganz unten) verlinkt. Vielleicht hilft dir ja da schon was weiter. (Jukebox mit Arduino, Soundmachine mit Arduino, Applausmaschine, RailFX-Jahrmarkt-Modul) Liebe Grüße

    Schreibe einen Kommentar

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

     

    Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.