Arduino Nano ESP32 - Mini Mp3 Spieler
Der Arduino Nano ESP32 ist ein leistungsstarkes 3,3V-Board mit eingebautem WiFi und Bluetooth. In diesem Tutorial werden wir es mit dem DIYables Mini Mp3 Player-Modul verbinden, um einen vollständig steuerbaren Mp3-Player zu bauen. Hier ist, was wir durchgehen werden:
- Verbindung des Moduls mit dem Nano ESP32 — dank 3,3V Logikpegel ist kein Widerstand erforderlich.
- Vorbereitung der SD-Karte mit korrekt benannten mp3-Dateien.
- Schreiben von Code zum Abspielen, Pausieren, Fortsetzen, Stoppen und Überspringen von Titeln.
- Steuerung der Lautstärke über Tasten und seriellen Befehle.
- Einrichtung von Titel-Schleife, vollständigem Shuffle und Ordner-basierter Wiedergabe.
- Lesen des Status des Moduls (aktueller Titel, Lautstärke, Wiedergabezustand).

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Hinweis: Kein 1K-Widerstand erforderlich — Der Nano ESP32 verwendet 3,3V-Logik, die nativ mit dem Modul übereinstimmt.
Mini Mp3 Player Modul Übersicht
Das DIYables Mini Mp3 Player-Modul ist ein eigenständiges Mp3-Decoder-Modul, das vom YX5200-24SS-Chip angetrieben wird. Legen Sie eine Micro-SD-Karte mit mp3-Dateien ein, verbinden Sie einen kleinen Lautsprecher und senden Sie seriellen Befehle, um die Wiedergabe zu steuern.
Das Modul akzeptiert 9600 Baud UART-Befehle und bietet diese Funktionen:
- Vollständige Wiedergabesteuerung: Abspielen, Pausieren, Fortsetzen, Stoppen, Nächster, Vorheriger
- 31 Lautstärkepegel (0 bis 30)
- 6 Equalizer-Voreinstellungen (Normal, Pop, Rock, Jazz, Klassik, Bass)
- Wiederholungsmodi: Titel-Schleife, Ordner-Schleife, Alles-Schleife, Shuffle
- Ordner-organisierte Wiedergabe für kategorisiertes Audio
- Werbung einfügen (Unterbrechen und Fortsetzen)
- Echtzeit-Statusabfragen
Anschlussbelegung
| Anschluss | Funktion |
|---|---|
| VCC | 3,2V bis 5,0V Stromversorgung |
| GND | Masse |
| RX | UART-Eingang (mit Board TX verbinden) |
| TX | UART-Ausgang (mit Board RX verbinden) |
| SPK_1 | Lautsprecher + (integrierter 3W-Verstärker) |
| SPK_2 | Lautsprecher − |
| DAC_R | Rechter Line-Level-Ausgang |
| DAC_L | Linker Line-Level-Ausgang |
| BUSY | LOW = Wiedergabe, HIGH = untätig |
| IO_1 | Kurzer Druck → Vorheriger, langer Druck → Lautstärke runter |
| IO_2 | Kurzer Druck → Nächster, langer Druck → Lautstärke rauf |

Schaltplan
Der Nano ESP32 arbeitet mit 3,3V-Logik — dieselbe Spannung, die das Mini Mp3 Player-Modul intern verwendet. Das bedeutet, Sie können TX/RX direkt verbinden, ohne dass ein Widerstand erforderlich ist.
Wir werden Serial1 auf dem Nano ESP32 für die Kommunikation mit dem Modul verwenden und das Standard-Serial für den Serial Monitor frei halten.
| Mini Mp3 Player | Arduino Nano ESP32 | Notizen |
|---|---|---|
| VCC | 3,3V | Modul akzeptiert auch 5V von VBUS bei Bedarf |
| GND | GND | |
| RX | TX1 (D5) | Direkte Verbindung — kein Widerstand erforderlich |
| TX | RX1 (D4) | Direkte Verbindung |
| SPK_1 | Lautsprecher + | |
| SPK_2 | Lautsprecher − |

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
SD-Karten-Setup
Bereiten Sie die Micro-SD-Karte vor dem Einlegen in das Modul vor:
- Formatieren Sie als FAT16 oder FAT32.
- Kopieren Sie mp3-Dateien ins Stammverzeichnis mit null-aufgefüllten Namen:
Für Ordner-Wiedergabe:
Denken Sie daran:
- Die Titelnummern beginnen bei 1 (nicht 0).
- Das Modul bestimmt die Titelreihenfolge aus der Kopierfolge, nicht aus den Dateinamen. Formatieren Sie die Karte zuerst, kopieren Sie die Dateien dann einzeln in Reihenfolge.
- Ordnernamen: 2 Ziffern, null-aufgefüllt (01–99). Dateinamen darin: 3 Ziffern, null-aufgefüllt (001–255).
Bibliotheks-Installation
- Verbinden Sie den Nano ESP32 mit Ihrem Computer über USB-C.
- Öffnen Sie die Arduino IDE, wählen Sie Arduino Nano ESP32 als Ihr Board und wählen Sie den richtigen Port.
- Gehen Sie zum Bibliotheken-Panel auf der linken Seite.
- Suchen Sie nach "DIYables_MiniMp3" und installieren Sie die Bibliothek von DIYables.
- Klicken Sie auf Installieren.

Die Bibliothek hat null externe Abhängigkeiten.
Nano ESP32 Code — Basis-Template
Da der Nano ESP32 Hardware-Serien-Ports hat, verwenden wir Serial1 statt SoftwareSerial:
Keine SoftwareSerial-Bibliothek erforderlich! Hardware-Serial ist zuverlässiger, besonders bei der niedrigen 9600 Baud-Rate, die dieses Modul verwendet.
Nano ESP32 Code — Einen Titel abspielen
Wie man testet
- Laden Sie die SD-Karte mit mp3-Dateien und legen Sie sie in das Modul ein.
- Verbinden Sie das Modul mit dem Nano ESP32 wie oben gezeigt (kein Widerstand!).
- Verbinden Sie das Board über USB-C, wählen Sie Arduino Nano ESP32 und laden Sie hoch.
Sie sollten 001.mp3 über den verbundenen Lautsprecher hören.
Wiedergabebefehle
| Methode | Zweck | Beispiel |
|---|---|---|
| play(trackNum) | Einen bestimmten Titel starten | mp3.play(1) |
| playNext() | Zum nächsten Titel wechseln | mp3.playNext() |
| playPrevious() | Zum vorherigen Titel gehen | mp3.playPrevious() |
| pause() | Den aktiven Titel pausieren | mp3.pause() |
| resume() | Den Titel fortsetzen | mp3.resume() |
| stop() | Wiedergabe stoppen | mp3.stop() |
Nano ESP32 Code — Mehrere Titel abspielen
Wie man testet
- Stellen Sie sicher, dass die SD-Karte mindestens 3 Titel hat. Laden Sie hoch, und die Titel wechseln alle 5 Sekunden.
Nano ESP32 Code — Lautstärkeregelung
Wie man testet
- Verbinden Sie zwei Tasten, laden Sie den Sketch hoch und drücken Sie die Tasten während die Musik abgespielt wird.
Lautstärkebefehle
| Methode | Zweck | Beispiel |
|---|---|---|
| setVolume(v) | Zu einer bestimmten Lautstärkestufe springen | mp3.setVolume(20) |
| volumeUp() | Um 1 Schritt erhöhen | mp3.volumeUp() |
| volumeDown() | Um 1 Schritt senken | mp3.volumeDown() |
| getVolume() | Die aktuelle Stufe abfragen | mp3.getVolume() |
Nano ESP32 Code — Nächster/Vorheriger Knöpfe
Wie man testet
- Verbinden Sie die Tasten und laden Sie hoch. Drücken Sie NEXT oder PREV, um durch Ihre Titel zu navigieren.
Nano ESP32 Code — Pausieren/Fortsetzen Umschalter
Nano ESP32 Code — Einen Titel in Schleife abspielen
Wiederhole & Shuffle-Befehle
| Methode | Zweck | Beispiel |
|---|---|---|
| loopTrack(t) | Einen Titel kontinuierlich wiederholen | mp3.loopTrack(1) |
| loopFolder(f) | Alle Titel in einem Ordner wiederholen | mp3.loopFolder(1) |
| loopAll() | Alles auf der Karte wiederholen | mp3.loopAll() |
| stopLoop() | Den aktuellen Wiederholungsmodus beenden | mp3.stopLoop() |
| shuffle() | Wiedergabereihenfolge randomisieren | mp3.shuffle() |
Nano ESP32 Code — Aus einem Ordner abspielen
Ordner-Methoden
| Methode | Zweck | Beispiel |
|---|---|---|
| playFolder(f, t) | Titel t aus Ordner f auswählen | mp3.playFolder(1, 1) |
| playLargeFolder(f, t) | Großer Ordner-Modus (bis zu 3000 Titel) | mp3.playLargeFolder(1, 1500) |
| playFromMP3Folder(t) | Auf den speziellen /mp3 Ordner zugreifen | mp3.playFromMP3Folder(1) |
Nano ESP32 Code — Serieller Monitor-Steuerung
Seriellen Befehle
| Eingabe | Ergebnis |
|---|---|
| 1–9 | Diesen Titel abspielen |
| + / − | Lautstärke hoch / runter |
| p | Pausieren |
| r | Fortsetzen |
| s | Stoppen |
| n | Nächster Titel |
| b | Vorheriger Titel |
| ? | Status anzeigen |
Equalizer-Voreinstellungen
| Konstante | ID | Ton |
|---|---|---|
| DIYables_MiniMp3::EQ_NORMAL | 0 | Neutral |
| 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-Verstärkung |
Statusabfrage-Funktionen
Jede Abfrage blockiert bis zu 100 ms. Gibt −1 bei Timeout zurück.
| Methode | Rückgabewert | Informationen |
|---|---|---|
| isPlaying() | bool | Ob ein Titel aktiv ist |
| getVolume() | int16_t | Lautstärke (0–30) |
| getEQ() | int16_t | EQ-Voreinstellung (0–5) |
| getTrackCount() | int16_t | Gesamttitel auf Karte |
| getCurrentTrack() | int16_t | Aktuell abgespielter Titel |
| getFolderCount() | int16_t | Anzahl der Ordner |
| getTrackCountInFolder(f) | int16_t | Titel in Ordner f |