ESP8266 - Mini Mp3 Spieler
Der ESP8266 (NodeMCU, Wemos D1 Mini und ähnliche Platinen) ist ein beliebter WiFi-fähiger Mikrokontroller, der mit 3,3V läuft. Die Kombination mit dem DIYables Mini Mp3 Player-Modul ermöglicht ein WiFi-fähiges Audiogerät mit nur wenigen Drähten und einer Micro-SD-Karte.
In diesem Tutorial werden Sie:
- Das Mini Mp3 Player-Modul mit dem ESP8266 verdrahten — kein Widerstand erforderlich.
- Die SD-Karte formatieren und Dateien korrekt benennen.
- Den ESP8266 programmieren, um mp3-Titel abzuspielen, zu pausieren, fortzusetzen und zu stoppen.
- Lautstärkeregelung über Schaltflächen hinzufügen.
- Schleifenbildung, Zufallsmodus und ordnerbasierte Wiedergabe einrichten.
- Das Modul nach Titeln und Lautstärke abfragen.

Erforderliche Komponenten
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Kein Widerstand erforderlich. Der ESP8266 verwendet 3,3V-Logik — eine perfekte Übereinstimmung für das Modul.
Modulübersicht
Das DIYables Mini Mp3 Player-Modul umhüllt den YX5200-24SS mp3-Decoder-Chip. Es liest mp3-Dateien von einer Micro-SD-Karte und gibt Audio durch einen integrierten Verstärker (max. 3W-Lautsprecher) oder DAC-Pins für externe Verstärkung aus.
Sie steuern es über UART mit 9600 Baud. Der Funktionsumfang umfasst:
- Abspielen, Pausieren, Fortsetzen, Stoppen, Weiter, Zurück
- Lautstärkeregelung: 0 bis 30
- 6 EQ-Voreinstellungen (Normal, Pop, Rock, Jazz, Klassik, Bass)
- Eine Spur wiederholen, einen Ordner wiederholen, alle wiederholen oder Zufallsmodus
- Aus nummerierten Ordnern abspielen
- Werbungsunterbrechungen
- Statusabfragen (aktueller Titel, Lautstärke, Wiedergabezustand)
Modulstifte
| Stift | Beschreibung |
|---|---|
| VCC | 3,2V – 5,0V Stromversorgung |
| GND | Masse |
| RX | Serieller Eingang von ESP8266 TX |
| TX | Serieller Ausgang zu ESP8266 RX |
| SPK_1 | Lautsprecher + (integrierter Verstärker, max. 3W) |
| SPK_2 | Lautsprecher − |
| DAC_R | Rechter Line-Level-Ausgang |
| DAC_L | Linker Line-Level-Ausgang |
| BUSY | LOW während der Wiedergabe |
| IO_1 | Kurzdruck = zurück, Langdruck = Lautstärke− |
| IO_2 | Kurzdruck = weiter, Langdruck = Lautstärke+ |

Verdrahtung auf ESP8266
Der ESP8266 hat nur eine Hardware-UART, die von der USB-Seriellbrücke verwendet wird. Für das mp3-Modul verwenden wir SoftwareSerial auf zwei verfügbaren GPIO-Pins.
| Mini Mp3 Player | ESP8266 (NodeMCU) | Bemerkungen |
|---|---|---|
| VCC | 3.3V | |
| GND | GND | |
| RX | D7 (GPIO 13) | Kein Widerstand — bereits 3,3V |
| TX | D5 (GPIO 14) | |
| SPK_1 | Lautsprecher + | |
| SPK_2 | Lautsprecher − |

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Weitere Informationen finden Sie unter ESP8266-Pinbelegung und wie man ESP8266 und andere Komponenten mit Strom versorgt.
Vermeiden Sie GPIO 0, 2 und 15 für die mp3-Serienleitungen — diese Stifte beeinflussen das Startverhalten. D5 und D7 sind sichere Universaleingabe-/Ausgangsstifte.
Vorbereitung Ihrer SD-Karte
- Formatieren Sie als FAT16 oder FAT32.
- Fügen Sie mp3-Dateien mit nullgefüllten Namen hinzu:
- Für Ordner:
Dinge, die zu beachten sind:
- Die Nummerierung beginnt bei 1, nicht bei 0.
- Die Titelreihenfolge hängt von der Kopierreihenfolge ab, nicht von den Dateinamen. Formatieren Sie zuerst, dann kopieren Sie Dateien einzeln.
- Ordner: 01–99. Dateien in Ordnern: 001–255.
Installieren der Bibliothek
- Verbinden Sie den ESP8266 über USB mit Ihrem Computer.
- In der Arduino IDE wählen Sie Ihre Platine (z. B. NodeMCU 1.0) und den Port aus.
- Gehen Sie zu Bibliotheken in der Seitenleiste.
- Suchen Sie "DIYables_MiniMp3" und installieren Sie sie.

Keine anderen Bibliotheken sind erforderlich.
Grundmuster für Code
Die ESP8266 SoftwareSerial-Bibliothek funktioniert zuverlässig bei 9600 Baud. Rufen Sie nach begin() immer delay(1000) auf, um das Modul initialisieren zu lassen.
ESP8266 Code — Eine Spur abspielen
Erste Schritte
- Bereiten Sie die SD-Karte vor, fügen Sie sie ein und verdrahten Sie das Modul wie gezeigt.
- Öffnen Sie die Arduino IDE, wählen Sie Ihre ESP8266-Platine aus und laden Sie sie hoch.
- Titel 001.mp3 wird sofort abgespielt.
Transportsteuerelemente
| Funktion | Erklärung | Code |
|---|---|---|
| play(n) | Titel n starten | mp3.play(1) |
| playNext() | Vorwärts überspringen | mp3.playNext() |
| playPrevious() | Rückwärts überspringen | mp3.playPrevious() |
| pause() | Ausgabe pausieren | mp3.pause() |
| resume() | Pausierte Spur fortsetzen | mp3.resume() |
| stop() | Wiedergabe beenden | mp3.stop() |
ESP8266 Code — Mehrere Spuren
ESP8266 Code — Lautstärkenschaltflächen
Lautstärkeregelung
| Funktion | Was es tut | Code |
|---|---|---|
| setVolume(v) | Auf eine bestimmte Stufe einstellen | mp3.setVolume(20) |
| volumeUp() | Um eins erhöhen | mp3.volumeUp() |
| volumeDown() | Um eins verringern | mp3.volumeDown() |
| getVolume() | Aktuelle Lautstärke lesen | mp3.getVolume() |
ESP8266 Code — Weiter/Zurück
ESP8266 Code — Pausieren/Fortsetzen
ESP8266 Code — Eine Spur wiederholen
Schleife & Zufallsmodus
| Funktion | Verhalten | Code |
|---|---|---|
| loopTrack(n) | Eine Spur wiederholen | mp3.loopTrack(1) |
| loopFolder(f) | Ordnerinhalt wiederholen | mp3.loopFolder(1) |
| loopAll() | Alles wiederholen | mp3.loopAll() |
| stopLoop() | Schleifenbildung abbrechen | mp3.stopLoop() |
| shuffle() | Zufallsreihenfolge | mp3.shuffle() |
ESP8266 Code — Ordnerwiedergabe
Ordnerfunktionen
| Funktion | Verwendung | Code |
|---|---|---|
| playFolder(f, t) | Ordner f, Titel t | mp3.playFolder(1, 1) |
| playLargeFolder(f, t) | Großer Ordnermodus | mp3.playLargeFolder(1, 500) |
| playFromMP3Folder(t) | /mp3-Ordner | mp3.playFromMP3Folder(1) |
ESP8266 Code — Serielle Monitorsteuerung
Equalizer-Voreinstellungen
| Konstante | Wert | Soundprofil |
|---|---|---|
| DIYables_MiniMp3::EQ_NORMAL | 0 | Flach |
| DIYables_MiniMp3::EQ_POP | 1 | Pop |
| DIYables_MiniMp3::EQ_ROCK | 2 | Rock |
| DIYables_MiniMp3::EQ_JAZZ | 3 | Jazz |
| DIYables_MiniMp3::EQ_CLASSIC | 4 | Klassik |
| DIYables_MiniMp3::EQ_BASS | 5 | Bass schwer |
Modulstatus lesen
Jede Abfrage blockiert (bis zu 100 ms). Gibt −1 bei Fehler zurück.
| Funktion | Gibt zurück | Bedeutung |
|---|---|---|
| isPlaying() | bool | wahr = Audio aktiv |
| getVolume() | int16_t | 0–30 |
| getEQ() | int16_t | 0–5 |
| getTrackCount() | int16_t | Alle Titel auf der Karte |
| getCurrentTrack() | int16_t | Aktuelle Titelnummer |
| getFolderCount() | int16_t | Ordneranzahl |
| getTrackCountInFolder(f) | int16_t | Titel in Ordner f |