ESP32 - Mini MP3-Spieler
Der ESP32 ist ein vielseitiger 3,3-V-Mikrocontroller mit WiFi, Bluetooth und mehreren Hardware-Seriellen Anschlüssen. In Kombination mit dem DIYables Mini MP3-Spieler-Modul können Sie alles von einer einfachen Soundeffekt-Platine bis zu einem WiFi-gesteuerten Jukebox bauen.
Dieses Tutorial führt Sie durch:
- Verbinden des Mini MP3-Spielers mit einem ESP32 — direkt, ohne Widerstand.
- Laden von MP3-Dateien auf die SD-Karte korrekt.
- Abspielen, Pausieren, Fortsetzen, Stoppen und Überspringen von Tracks.
- Einstellen der Lautstärke mit physischen Tasten.
- Wiederholen von Tracks, Shuffle und Organisieren von Audio in Ordnern.
- Überwachung des Wiedergabestatus von Ihrem Code.

Erforderliche Komponenten
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables ESP32 Starter-Kit (ESP32 enthalten) | |
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Kein Widerstand erforderlich. Der ESP32 arbeitet mit 3,3 V — die gleiche Spannung, die der Mini MP3-Spieler UART erwartet.
Das Mini MP3-Spieler-Modul
Der DIYables Mini MP3-Spieler ist eine kleine Platine, die auf dem YX5200-24SS-Chip basiert. Sie dekodiert MP3-Dateien von einer Micro-SD-Karte und kann einen Lautsprecher direkt über ihren eingebauten 3-W-Verstärker antreiben. Alternativ können Sie die DAC-Pins verwenden, um einen externen Verstärker für lautere Ausgabe zu speisen.
Alles wird über serielle Befehle mit 9600 Baud gesteuert:
- Transport: Abspielen, Pausieren, Fortsetzen, Stoppen, Weiter, Zurück
- Lautstärke: 31 Stufen (0–30)
- Equalizer: Normal, Pop, Rock, Jazz, Classic, Bass
- Wiederholen: Einzelnen Track wiederholen, Ordner wiederholen, Alle Tracks wiederholen, Zufälliges Shuffle
- Ordner: Abspielen aus nummerierten Verzeichnissen auf der Karte
- Ankündigungen: Wiedergabe unterbrechen und dann fortsetzen
- Abfragen: Tracknummer, Lautstärke, Wiedergabestatus, Track-Anzahl lesen
Pin-Beschreibung
| Pin | Zweck |
|---|---|
| VCC | 3,2V bis 5,0V Stromversorgung |
| GND | Masse |
| RX | Serielles Dateneingangssignal (an ESP32 TX anschließen) |
| TX | Serielles Datenausgangssignal (an ESP32 RX anschließen) |
| SPK_1 | Lautsprecher + (eingebauter Verstärker, 3W max) |
| SPK_2 | Lautsprecher − |
| DAC_R | Rechter Kanal Linienausgang |
| DAC_L | Linker Kanal Linienausgang |
| BUSY | LOW = wird abgespielt, HIGH = gestoppt |
| IO_1 | Kurzer Druck → vorheriger Track; langer Druck → Lautstärke runter |
| IO_2 | Kurzer Druck → nächster Track; langer Druck → Lautstärke rauf |

Verkabelung
Der ESP32 verwendet nativ eine 3,3V-Logik, daher verbinden Sie die Serienleitungen direkt — kein Pegelumschalter oder Widerstände erforderlich.
Wir empfehlen die Verwendung von Serial2 (standardmäßig auf den meisten ESP32 DevKit-Boards verfügbar):
| Mini MP3-Spieler | ESP32 | Notizen |
|---|---|---|
| VCC | 3.3V | Oder 5V von VIN falls verfügbar |
| GND | GND | |
| RX | GPIO 17 (TX2) | Direktverbindung |
| TX | GPIO 16 (RX2) | Direktverbindung |
| SPK_1 | Lautsprecher + | |
| SPK_2 | Lautsprecher − |

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Wenn Sie nicht wissen, wie Sie ESP32 und andere Komponenten mit Strom versorgen, finden Sie Anleitungen im folgenden Tutorial: Wie man ESP32 mit Strom versorgt.
Tipp: Falls Ihr ESP32-Variante nicht GPIO 16/17 verfügbar macht (einige DevKit-C V4 Boards verwenden sie für PSRAM), können Sie Serial2 Pins im Code neu zuordnen:
SD-Karte vorbereiten
- Formatieren Sie als FAT16 oder FAT32.
- Platzieren Sie MP3-Dateien im Stammverzeichnis:
- Für organisierte Wiedergabe verwenden Sie nummerierte Ordner:
Wichtige Hinweise:
- Tracknummern beginnen bei 1.
- Das Modul indiziert Tracks nach der Reihenfolge, in der sie auf die Karte kopiert wurden, nicht nach dem Dateinamen. Formatieren Sie immer zuerst, dann kopieren Sie nacheinander.
- Ordnernamen: 01–99 (2-stellig), Dateinamen: 001–255 (3-stellig).
Installieren der Bibliothek
- Verbinden Sie den ESP32 mit Ihrem Computer.
- In der Arduino IDE wählen Sie Ihr ESP32-Board und den richtigen Port.
- Öffnen Sie den Bibliotheken-Manager.
- Suchen Sie "DIYables_MiniMp3" und installieren Sie die Bibliothek von DIYables.

Keine Abhängigkeiten — funktioniert sofort einsatzbereit.
Starter-Code-Vorlage
ESP32 Code — Einen Track abspielen
Probieren Sie es aus
- Laden Sie die SD-Karte, verbinden Sie das Modul, verbinden Sie den ESP32 über USB.
- Wählen Sie Ihr ESP32-Board in der IDE und laden Sie es hoch.
Wiedergabesteuerung
| Methode | Was passiert | Code-Beispiel |
|---|---|---|
| play(n) | Spielt Track Nummer n ab | mp3.play(1) |
| playNext() | Wechselt zum nächsten Track | mp3.playNext() |
| playPrevious() | Geht einen Track zurück | mp3.playPrevious() |
| pause() | Friert die Wiedergabe ein | mp3.pause() |
| resume() | Nimmt an der Stelle wieder auf, an der es aufgehört hat | mp3.resume() |
| stop() | Beendet die Wiedergabe vollständig | mp3.stop() |
ESP32 Code — Mehrere Tracks
ESP32 Code — Lautstärketasten
Lautstärke-API
| Methode | Aktion | Beispiel |
|---|---|---|
| setVolume(v) | Springe zu Stufe v | mp3.setVolume(20) |
| volumeUp() | Erhöhe um 1 | mp3.volumeUp() |
| volumeDown() | Verringere um 1 | mp3.volumeDown() |
| getVolume() | Aktuelle Stufe lesen | mp3.getVolume() |
ESP32 Code — Weiter/Zurück
ESP32 Code — Pausieren/Fortsetzen
ESP32 Code — Track in Schleife
Wiederholen und Shuffle
| Methode | Verhalten | Beispiel |
|---|---|---|
| loopTrack(n) | Endlos Track n wiederholen | mp3.loopTrack(1) |
| loopFolder(f) | Alle Tracks in Ordner f wiederholen | mp3.loopFolder(1) |
| loopAll() | Alle Tracks wiederholen | mp3.loopAll() |
| stopLoop() | Aktive Schleife abbrechen | mp3.stopLoop() |
| shuffle() | Wiedergabe randomisieren | mp3.shuffle() |
ESP32 Code — Ordner-Wiedergabe
Ordner-API
| Methode | Beschreibung | Beispiel |
|---|---|---|
| playFolder(f, t) | Spiele Track t aus Ordner f ab | mp3.playFolder(1, 1) |
| playLargeFolder(f, t) | Großer Ordner (15 Ordner, 3000 Tracks) | mp3.playLargeFolder(1, 2000) |
| playFromMP3Folder(t) | Abspielen aus /mp3 Ordner | mp3.playFromMP3Folder(1) |
ESP32 Code — Serielle Monitor-Steuerung
| Befehl | Auswirkung |
|---|---|
| 1–9 | Track abspielen |
| + / − | Lautstärke |
| p / r / s | Pausieren / Fortsetzen / Stoppen |
| n / b | Weiter / Zurück |
| ? | Status |
Equalizer-Optionen
| Konstante | ID | Zeichen |
|---|---|---|
| DIYables_MiniMp3::EQ_NORMAL | 0 | Neutral |
| DIYables_MiniMp3::EQ_POP | 1 | Helligkeit |
| DIYables_MiniMp3::EQ_ROCK | 2 | Punchy |
| DIYables_MiniMp3::EQ_JAZZ | 3 | Warm |
| DIYables_MiniMp3::EQ_CLASSIC | 4 | Ausgeglichen |
| DIYables_MiniMp3::EQ_BASS | 5 | Tiefbass |
Überprüfung des Modulstatus
Diese Funktionen blockieren bis zu 100 ms, während sie auf die Antwort des Moduls warten. Sie geben −1 zurück, wenn keine Antwort ankommt.
| Funktion | Rückgabe | Beschreibung |
|---|---|---|
| isPlaying() | bool | true während aktiver Wiedergabe |
| getVolume() | int16_t | Aktuelle Lautstärke (0–30) |
| getEQ() | int16_t | Aktiver Equalizer (0–5) |
| getTrackCount() | int16_t | Gesamtanzahl Tracks auf SD |
| getCurrentTrack() | int16_t | Gerade abgespielte Tracknummer |
| getFolderCount() | int16_t | Gesamtordner auf SD |
| getTrackCountInFolder(f) | int16_t | Tracks in Ordner f |