In diesem Beitrag zeige ich dir, wie du ein kleinen MP3-Player mit dem Arduino UNO Mini LE und ein ebenso kleines MP3 Shield programmierst.
Im Beitrag Arduino Lektion 72: MP3 Shield habe ich dir bereits ein Shield vorgestellt, welches einfach auf den Arduino UNO gesteckt wird und über 3,5 mm Klinkenbuchsen die Lautsprecher angeschlossen werden. Den hier verwendeten Mikrocontroller vom Typ Arduino UNO Mini LE (Limited Edition) habe ich von der Firma Conrad Elektronic vergünstigt erhalten, eigentlich ein Vitrinenstück, jedoch irgendwie zu schade um nur herumzustehen.
Bezug des MP3 Shields
Für diesen Beitrag verwende ich das Modul “MP3 DFPlayer Decoder Modul MH2024K-24SS” welches du bereits für knapp 4 € zzgl. Versandkosten auf ebay.de* findest.
Ich habe bei der Bestellung darauf geachtet, dass gleich ein passender 1 kOhm Widerstand dabei ist, da dieser beim Aufbau der Schaltung benötigt wird.
Damit du jedoch MP3 Dateien wiedergeben kannst, benötigst du noch eine SD-Karte* & ein kleinen Lautsprecher* mit Lötfäden.
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
Aufbau & Pinout des MP3 Shield
Das hier verwendete MP3 Shield hat die Abmaße (L x B x H) von 2 cm x 2 cm x 1,3 cm und besitzt auf der Oberseite ein Micro-SD-Kartenslot.
Pinout des MP3 Shield von Typ MH2024K-24SS
Aufbau der Schaltung
Für den Aufbau der Schaltung benötigen wir:
- einen Mikrocontroller, zum Beispiel Arduino UNO, Arduino UNO Mini LE,
- ein passendes USB Datenkabel,
- das MP3 Shield vom Typ MH2024K-24SS,
- zwei Breadboardkabel,
- ein 1 kOhm Widerstand, sowie
- ein 400 Pin Breadboard
Der Aufbau der Schaltung ist mit Breadboardkabeln schnell gemacht und ein 400 Pin Breadboard bietet für diese Schaltung auch mehr als genug platz.
Bauteil | Arduino UNO |
---|---|
MP3 Shield | |
VCC | 5V |
GND | GND |
TX | digitaler Pin D10 |
RX | digitaler Pin D12 über 1 kOhm Widerstand |
Lautsprecher | |
+ | SPK1 |
– | SPK2 |
Programmierung eines einfachen MP3 Players
Zunächst möchte ich dir zeigen, wie du einen einfachen MP3-Player programmieren kannst. D.h. es soll zunächst “nur” eine Datei abgespielt werden.
Benötigte Bibliothek von DFRobot
Für die Programmierung des MP3 Shields verwende ich die Bibliothek von DFRobot welche du vom GitHub Repository DFRobot / DFRobotDFPlayerMini als ZIP-Datei herunterladen kannst.
Wie du eine ZIP-Datei in der Arduino IDE installierst, habe ich dir bereits im Beitrag Arduino IDE, Einbinden einer Bibliothek ausführlich erläutert.
Quellcode eines einfachen MP3 Players
Der Bibliothek von DFRobot liegen drei Beispiele bei, von den wir zunächst das Beispiel “GetStartet” verwenden.
Ich habe das Beispiel einmal um ein paar Kommentare ergänzt.
#include "SoftwareSerial.h" #include "DFRobotDFPlayerMini.h" SoftwareSerial mySoftwareSerial(10, 12); // 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("Initialisieren der Verbindug zum DFPlayer ...")); Serial.println(F("(dieses kann ca. 3 bis 5 Sekunden dauern)")); if (!myDFPlayer.begin(mySoftwareSerial)) { //Use softwareSerial to communicate with mp3. Serial.println(F("Fehler beim Aufbau der seriellen Verbindung:")); Serial.println(F("1.bitte prüfe die Verbindungen")); Serial.println(F("2.bitte SD-Card einführen")); } Serial.println(F("Verbindung zum DFPlayer Mini hergestellt.")); //setzen der Lautstärke (0..30) myDFPlayer.volume(10); //abspielen des ersten Musikstücks myDFPlayer.play(1); } void loop() { static unsigned long timer = millis(); //30 Sekunden des Titels abspielen if (millis() - timer > 30000) { timer = millis(); myDFPlayer.next(); } //Ausgeben von Debuginformationen if (myDFPlayer.available()) { printDetail(myDFPlayer.readType(), myDFPlayer.read()); } } 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; } }
Video
In dem Video gebe ich ein lizenzfreies MP3 aus der YouTube Audiolibrary wieder.