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
IOlTrigger-Anschluss 1Kurzes Drücken zum Abspielen des vorherigen Titels, lang drücken zum Verringern der Lautstärke
GNDGNDGND
102Trigger-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
ADKEY2AD-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 and 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


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

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

  2. 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…

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

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.