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
Pin | Beschreibung | Hinweis |
---|---|---|
VCC | Eingangsspannung | DC3,2~5,0V;Typ: DC4,2V; TYP: DC4,2V |
RX | Serieller UART-Eingang | |
TX | Serieller UART-Ausgang | |
DAC_R | Audioausgang rechter Kanal | Kopfhörer und Verstärker |
DAC_L | Audioausgang linker Kanal | Kopfhörer und Verstärker |
SPK2 | Lautsprecher – | Lautsprecher kleiner als 3 W |
GND | GND | GND |
SPK1 | Lautsprecher + | Lautsprecher kleiner als 3 W |
IO_1 | Trigger-Anschluss 1 | Kurzes Drücken zum Abspielen des vorherigen Titels, lang drücken zum Verringern der Lautstärke |
GND | GND | GND |
IO_2 | Trigger-Anschluss 2 | Kurzes Drücken zum Abspielen des nächsten Titels, lang drücken zum Erhöhen der Lautstärke |
ADKEY1 | AD-Anschluss 1 | Erstes Segment auslösen |
ADKEY2 | AD-Anschluss 2 | Fünftes Segment auslösen |
USB+ | USB* DP | USB-Anschluss |
USB- | USB- DM | USB-Anschluss |
BUSY | Abspiel-Status | LOW 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.
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
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
Hallo, ich brauche ein Modul, welches in Verbindung mit einer kleinen 5W Solarstation und einem Pufferakku als “stand alone” funktioniert. Möglichst wartungsfrei und mit geringem Eigenverbrauch im standby. Bin ich da schon richtig?
Hallo gemeinsam,
Ich hab den Schaltplan genauso nachgebaut und den code auch eingegebn, leider tut sich nichts und es kommen im serial monitor nur fragezeichen, Kann mir wer dabei weiterhelfen?
MFG
Oh, Du musst die Baud-Rate im Seriellen Monitor einstellen. Wahrscheinlich bist Du noch bei 9600. Stell mal um auf 115200. Liebe Grüße Stefan
Pingback: Arduino Puppenhaus-Beleuchtung mit Sound – Arduino Tutorial
Pingback: Applausmaschine mit Arduino und Sound – Arduino Tutorial
Pingback: RailFX Kirche mit Arduino Nano – Arduino Tutorial
Pingback: RailFX-Truppenübungsplatz für Modellbahn und Modellbau – Arduino Tutorial
Pingback: RailFX Jahrmarkt-Modul – Arduino Tutorial
Pingback: So baust du eine Sound Machine mit Arduino und dem DFPlayer
Pingback: RailFX: Arduino Bahnhof – Mit Sound und Abfahrtsanzeiger
Pingback: RailFX: Sound-Modul mit Arduino für Modellbahn und Modellbau
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
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
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
So jetzt läuft alles vielen Dank noch einmal.
Hi Enno,
schneller, als ich antworten kann :-) Cool, dass es jetzt läuft!
Liebe Grüße
Stefan
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
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
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
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
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…
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
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
Vielen Dank für die schnelle Info, gleich ausprobiert und es funktioniert.