Aktuell hatte ich einen Anwendungsfall den ich mit einfachen MP3 Playern nicht so einfach abdecken konnte, ich wollte in regelmäßigen Zeitabständen, oder aber auf Knopfdruck, immer eine Bestimmte Audiodatei wiedergeben. Das ganze sollte möglichst mobil, ohne größere Technik wie Smartphone oder ähnlichem auskommen und nicht all zu teuer sein. Der Perfekte Anwendungsfall für einen programmierbaren Microcontroller!
Benötigtes Material
- AZDelivery NodeMCU Amica Modul V2 ESP8266 ESP-12F WiFi WiFi Development Board mit CP2102 (Microcontroller)
- AZDelivery Mini MP3 Player DFPlayer Master Module (MP3 Modul mit Micro SD Slot)
- CQRobot-Lautsprecher 4 Ohm 3 Watt für Arduino, 2,54 mm Dupont-Schnittstelle (max. 3W!)
- Jumperkabel Female-Female (alternativ ein Breadboard)
- Micro USB Kabel zum Programmieren / Stromversorgung
- Ein 5V Netzteil für die Stromversorgung – es reicht ein altes Handy Netzteil
- Micro SD Karte für die Musik bzw. MP3 Dateien (max. 32GB im DFPlayer)
- Einen Kartenleser für die SD-Karte
- Optional: AZDelivery 18650 Battery Expansion Shield V3 Micro-USB-Anschluss (Für Batteriebetrieb)
Verkabelung / Schaltplan
Die Schaltung ist sehr simpel aufgebaut. Das MP3 Modul wird über die 5V Spannungsversorgung des ESP8266 mit versorgt (VIN & GND). Zudem werden die Kommunikations-Pins TX/RX des MP3 Moduls mit den Pins D6 (GPIO12) und D7 (GPIO13) des ESP8266 verbunden, worüber die Steuerung des MP3 Modul läuft. Wer mehr Informationen benötigt kann in das Datenblatt des DFPlayer Mini sehen. Ein Pinout Diagram gibt es hier. Hier gerne ein Link zur Fritzing Datei NodeMCU-MP3-Player.
Programmierung
Als erstes benötigen wir die Arduino IDE um unseren Microcontroller mit dem notwendigen Code zu versorgen. Lader euch die ARduino IDE herunter und installiert diese
Download and install Arduino IDE – Arduino Help Center
- Öffnet die Arduino IDE und wählt „Bibliotheken verwalten“
- Sucht nach der „DFRobotDFPlayerMini“ Bibliothek, wir benötigen diese um den MP3 Player ansteuern zu können.
- Ihr könnt meinen Code via Copy und Paste in die Arduino IDE übernehmen. Der Code ist simpel, wir initialisieren das MP3 Modul und spielen die erste MP3 Datei von der SD-Karte. Siehe Schema weiter unten.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
#include "SoftwareSerial.h" #include "DFRobotDFPlayerMini.h" #include // WiFi const char *ssid = "fritzbox"; // Enter your WiFi name const char *password = "xxxx"; // Enter WiFi password WiFiClient espClient; //Auswahl der Seriellen Pins 12,13 SoftwareSerial mySoftwareSerial(12, 13); // RX, TX DFRobotDFPlayerMini myDFPlayer; char command; int pausa = 0; void setup() { //Serial Kommunikation zum DFPlayer aufbazeb mySoftwareSerial.begin(9600); Serial.begin(115200); // connecting to a WiFi network WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.println("Connecting WiFi.."); } Serial.println("Connected to the WiFi network"); //Verbindung zum DFPlayer herstellen, dauert kurz Serial.println(); Serial.println(F("Initializing DFPlayer module ... Wait!")); if (!myDFPlayer.begin(mySoftwareSerial)) { Serial.println(F("Not initialized:")); Serial.println(F(" 1 Check DFPlayer Mini connections")); Serial.println(F(" 2 Insert SD card")); while (true); } Serial.println(); Serial.println(F("DFPlayer Mini module initialized!")); //Definitionen vornehmen myDFPlayer.setTimeOut(500); //Timeout serial 500ms myDFPlayer.volume(5); //Volume 5 myDFPlayer.EQ(0); //Normaler Equalizer //Play first mp3 found from SD Card myDFPlayer.play(1); } void loop() { } |
Programm auf den Microcontroller schreiben
Nun schreiben wir das Programm für einen ersten Test auf unseren Microcontroller. Da die Programme ggf. Controllerspezifisch sind müssen wir der Arduino IDE noch sagen welchem Microcontroller wir nun mit dem Programmcode beschreiben wollen. Nachzulesen auch hier.
- Hierzu öffnen wir über Datei > Voreinstellungen die Verwaltung um weitere Controller / Boards hinzufügen zu können
- Dort fügen wir die folgende URL ein von welcher sich die Arduino IDE alle notwendigen Informationen abholt
1 2 |
http://arduino.esp8266.com/stable/package_esp8266com_index.json https://dl.espressif.com/dl/package_esp32_index.json |
- Danach wählen wir den Board Manager
- Wir installieren die notwendigen Dateien für unseren ESP8266 idem ihr nach ESP8266 sucht und die Boards installiert
- Wählt nun das korrekte Board über Tools > Board > esp8266 aus „NodeMCU 1.0 (ESP-12E Module)“
Steckt euren ESP8266 via USB an euren Rechner und wählt unter Tools > Port den entsprechenden Serial Port aus. Wird das Board nicht erkannt oder kein Port angezeigt müsst ihr über den Windows Gerätemanager folgenden Treiber manuell hinzufügen. CP210x USB to UART Bridge VCP Drivers – Silicon Labs (silabs.com) – die Release Notes geben folgen Hinweis:
1 2 3 4 |
1. Using Windows File Explorer, locate the driver folder (that you previously unzipped) 2. Right click on the silabser.inf file and select Install 3. Follow the instructions |
Musik auf SD-Karte speichern / vorbereiten (MP3/WAV)
Der DFPlayer Mini unterstützt sowohl MP3 als auch WAV Dateien, bei der Speicherung der Songs auf eurer Micro-SD Karte gibt es allerdings folgendes zu beachten.
- Die Dateien MÜSSEN in Ordner, benannt mit 01 – 99, liegen
- Die Dateien MÜSSEN mit 001 bis 255 im Dateinamen beginnen. Also zb. „001 – Titel.mp3“
- Die SD-karte muss FAT16 oder FAT32 formatiert sein
1 2 3 4 |
SD-Karte mit FAT32 formatieren - Drücken Sie Windows + X und wählen Sie die Datenträgerverwaltung, um sie zu öffnen. - Im Fenster Datenträgerverwaltung klicken Sie mit der rechten Maustaste auf die Partition der SD-Karte und wählen Sie Formatieren. - Wählen Sie im Popup-Fenster FAT32 als Dateisystem. Klicken Sie auf OK, um die SD-Karte schnell auf das FAT32-Format zu formatieren. |
Ich habe also eine Test MP3 Datei in der Ordner „01“ abgelegt und den Dateinamen „001 – Test Titel.mp3“ verwendet.
Programm übertragen
Nun müsst ihr nur noch die SD-Karte in euren ESP-8266 einlegen, via Micro USB mit eurem Rechner verbinden und in der Arduino IDE das Programm auf euer Board übertragen.
- Klickt hierzu einfach auf den Pfeil um die Übertragung zu starten
Nach der Übertragung dauert es kurz und euer Microcontroller spielt eure erste MP3 von SD-Karte ab!
Viel Spaß beim weiteren ausprobieren und Programmieren!