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:

Arduino Nano ESP32 Mini Mp3 Spieler

Erforderliche Hardware

1×Arduino Nano ESP32
1×USB-Kabel Typ-C
1×DIYables Mini Mp3 Player-Modul
1×Micro-SD-Karte
1×Lautsprecher
1×Steckbrett
1×Jumperkabel
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Breakout-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Stromverteiler für Arduino Nano ESP32

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

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
Mini Mp3 Player Anschlussbelegung

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 −
Arduino Nano ESP32 Mini Mp3 Player Schaltplan

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:

  1. Formatieren Sie als FAT16 oder FAT32.
  2. Kopieren Sie mp3-Dateien ins Stammverzeichnis mit null-aufgefüllten Namen:
/001.mp3 /002.mp3 /003.mp3

Für Ordner-Wiedergabe:

/01/001.mp3 /01/002.mp3 /02/001.mp3

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.
Arduino Nano ESP32 Mini Mp3 Player Bibliothek

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:

#include <DIYables_MiniMp3.h> DIYables_MiniMp3 mp3; void setup() { Serial.begin(115200); Serial1.begin(9600); // Hardware serial for the mp3 module mp3.begin(Serial1); delay(1000); // Wait for the module to boot mp3.setVolume(25); } void loop() { // Your code here }

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

/* * DIYables Mini Mp3 Player - Play One Track * * Product: DIYables Mini Mp3 Player Module * https://diyables.io/products/mini-mp3-player-module * * Plays track 001 once, then stops. * * Wiring Table: * Mini Mp3 RX -> Arduino Pin D11 * Mini Mp3 TX -> Arduino Pin D10 * Mini Mp3 VCC -> Vbus * Mini Mp3 GND -> GND * Speaker connected to SPK_1 and SPK_2 pins * * SD Card: Put mp3 files in root, named 001.mp3, 002.mp3, etc. */ #include <DIYables_MiniMp3.h> #include <SoftwareSerial.h> SoftwareSerial mp3Serial(D10, D11); // RX, TX DIYables_MiniMp3 mp3; void setup() { Serial.begin(9600); mp3Serial.begin(9600); mp3.begin(mp3Serial); delay(1000); // Wait for the module to initialize mp3.setVolume(25); // Set volume (0 to 30) Serial.println("Playing track 1..."); mp3.play(1); // Play track 001.mp3 } void loop() { // Nothing to do here }

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

/* * DIYables Mini Mp3 Player - Play Multiple Tracks * * Product: DIYables Mini Mp3 Player Module * https://diyables.io/products/mini-mp3-player-module * * Plays tracks one after another with a delay between them. * * Wiring Table: * Mini Mp3 RX -> Arduino Pin D11 * Mini Mp3 TX -> Arduino Pin D10 * Mini Mp3 VCC -> Vbus * Mini Mp3 GND -> GND * Speaker connected to SPK_1 and SPK_2 pins * * SD Card: Put mp3 files in root, named 001.mp3, 002.mp3, 003.mp3 */ #include <DIYables_MiniMp3.h> #include <SoftwareSerial.h> SoftwareSerial mp3Serial(D10, D11); // RX, TX DIYables_MiniMp3 mp3; int currentTrack = 1; int totalTracks = 3; // Change this to match your SD card unsigned long lastTrackTime = 0; unsigned long trackDuration = 5000; // Wait 5 seconds between tracks (adjust as needed) void setup() { Serial.begin(9600); mp3Serial.begin(9600); mp3.begin(mp3Serial); delay(1000); mp3.setVolume(20); Serial.println("Playing track 1..."); mp3.play(currentTrack); lastTrackTime = millis(); } void loop() { // After trackDuration, play the next track if (millis() - lastTrackTime >= trackDuration) { currentTrack++; if (currentTrack > totalTracks) currentTrack = 1; // Loop back to first track Serial.print("Playing track "); Serial.println(currentTrack); mp3.play(currentTrack); lastTrackTime = millis(); } }

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

/* * DIYables Mini Mp3 Player - Volume Control * * Product: DIYables Mini Mp3 Player Module * https://diyables.io/products/mini-mp3-player-module * * Use two buttons to increase/decrease the volume. * Press button on pin D2 to volume up, pin D3 to volume down. * * Wiring Table: * Mini Mp3 RX -> Arduino Pin D11 * Mini Mp3 TX -> Arduino Pin D10 * Mini Mp3 VCC -> Vbus * Mini Mp3 GND -> GND * Speaker connected to SPK_1 and SPK_2 pins * Button UP -> Pin D2 (other leg to GND) * Button DOWN -> Pin D3 (other leg to GND) * * SD Card: Put mp3 files in root, named 001.mp3, 002.mp3, etc. */ #include <DIYables_MiniMp3.h> #include <SoftwareSerial.h> SoftwareSerial mp3Serial(D10, D11); // RX, TX DIYables_MiniMp3 mp3; const int BUTTON_VOL_UP = D2; const int BUTTON_VOL_DOWN = D3; int volume = 15; // Start at half volume void setup() { Serial.begin(9600); mp3Serial.begin(9600); pinMode(BUTTON_VOL_UP, INPUT_PULLUP); pinMode(BUTTON_VOL_DOWN, INPUT_PULLUP); mp3.begin(mp3Serial); delay(1000); mp3.setVolume(volume); mp3.loopTrack(1); // Play track 1 on repeat Serial.print("Volume: "); Serial.println(volume); } void loop() { // Volume Up button (pressed = LOW because of INPUT_PULLUP) if (digitalRead(BUTTON_VOL_UP) == LOW) { if (volume < 30) { volume++; mp3.setVolume(volume); Serial.print("Volume: "); Serial.println(volume); } delay(200); // Simple debounce } // Volume Down button if (digitalRead(BUTTON_VOL_DOWN) == LOW) { if (volume > 0) { volume--; mp3.setVolume(volume); Serial.print("Volume: "); Serial.println(volume); } delay(200); // Simple debounce } }

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

/* * DIYables Mini Mp3 Player - Next/Previous with Buttons * * Product: DIYables Mini Mp3 Player Module * https://diyables.io/products/mini-mp3-player-module * * Use two buttons to play next/previous tracks. * Displays the current track number on the Serial Monitor. * * Wiring Table: * Mini Mp3 RX -> Arduino Pin D11 * Mini Mp3 TX -> Arduino Pin D10 * Mini Mp3 VCC -> Vbus * Mini Mp3 GND -> GND * Speaker connected to SPK_1 and SPK_2 pins * Button NEXT -> Pin D2 (other leg to GND) * Button PREV -> Pin D3 (other leg to GND) * * SD Card: Put mp3 files in root, named 001.mp3, 002.mp3, etc. */ #include <DIYables_MiniMp3.h> #include <SoftwareSerial.h> SoftwareSerial mp3Serial(D10, D11); // RX, TX DIYables_MiniMp3 mp3; const int BUTTON_NEXT = D2; const int BUTTON_PREV = D3; void setup() { Serial.begin(9600); mp3Serial.begin(9600); pinMode(BUTTON_NEXT, INPUT_PULLUP); pinMode(BUTTON_PREV, INPUT_PULLUP); mp3.begin(mp3Serial); delay(1000); mp3.setVolume(20); mp3.play(1); // Start with track 1 Serial.println("Press NEXT or PREV button to change track"); } void loop() { if (digitalRead(BUTTON_NEXT) == LOW) { Serial.println("Next track"); mp3.playNext(); delay(300); // Simple debounce } if (digitalRead(BUTTON_PREV) == LOW) { Serial.println("Previous track"); mp3.playPrevious(); delay(300); // Simple debounce } }

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

/* * DIYables Mini Mp3 Player - Pause and Resume * * Product: DIYables Mini Mp3 Player Module * https://diyables.io/products/mini-mp3-player-module * * Demonstrates pausing and resuming playback using a single button. * Press the button to toggle between pause and resume. * * Wiring Table: * Mini Mp3 RX -> Arduino Pin D11 * Mini Mp3 TX -> Arduino Pin D10 * Mini Mp3 VCC -> Vbus * Mini Mp3 GND -> GND * Speaker connected to SPK_1 and SPK_2 pins * Button -> Pin D2 (other leg to GND) * * SD Card: Put mp3 files in root, named 001.mp3, 002.mp3, etc. */ #include <DIYables_MiniMp3.h> #include <SoftwareSerial.h> SoftwareSerial mp3Serial(D10, D11); // RX, TX DIYables_MiniMp3 mp3; const int BUTTON_PIN = D2; bool paused = false; void setup() { Serial.begin(9600); mp3Serial.begin(9600); pinMode(BUTTON_PIN, INPUT_PULLUP); mp3.begin(mp3Serial); delay(1000); mp3.setVolume(20); mp3.play(1); Serial.println("Playing. Press button to pause/resume."); } void loop() { if (digitalRead(BUTTON_PIN) == LOW) { if (paused) { mp3.resume(); Serial.println("Resumed"); } else { mp3.pause(); Serial.println("Paused"); } paused = !paused; delay(300); // Simple debounce } }

Nano ESP32 Code — Einen Titel in Schleife abspielen

/* * DIYables Mini Mp3 Player - Loop Track * * Product: DIYables Mini Mp3 Player Module * https://diyables.io/products/mini-mp3-player-module * * Loops (repeats) a track continuously with EQ setting. * * Wiring Table: * Mini Mp3 RX -> Arduino Pin D11 * Mini Mp3 TX -> Arduino Pin D10 * Mini Mp3 VCC -> Vbus * Mini Mp3 GND -> GND * Speaker connected to SPK_1 and SPK_2 pins * * SD Card file structure: * /001.mp3 * /002.mp3 * ... */ #include <DIYables_MiniMp3.h> #include <SoftwareSerial.h> SoftwareSerial mp3Serial(D10, D11); // RX, TX DIYables_MiniMp3 mp3; void setup() { Serial.begin(9600); mp3Serial.begin(9600); mp3.begin(mp3Serial); delay(1000); // Wait for the module to initialize mp3.setVolume(25); // Volume: 0 to 30 mp3.setEQ(DIYables_MiniMp3::EQ_NORMAL); Serial.println("Playing track 1 on loop..."); mp3.loopTrack(1); } void loop() { // Your code here }

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

/* * DIYables Mini Mp3 Player - Play from Folder * * Product: DIYables Mini Mp3 Player Module * https://diyables.io/products/mini-mp3-player-module * * Plays tracks from specific folders on the SD card. * * Wiring Table: * Mini Mp3 RX -> Arduino Pin D11 * Mini Mp3 TX -> Arduino Pin D10 * Mini Mp3 VCC -> Vbus * Mini Mp3 GND -> GND * Speaker connected to SPK_1 and SPK_2 pins * * SD Card file structure: * /01/001.mp3 <- playFolder(1, 1) * /01/002.mp3 <- playFolder(1, 2) * /02/001.mp3 <- playFolder(2, 1) * /02/002.mp3 <- playFolder(2, 2) * * IMPORTANT: * - Numbering starts from 1, NOT 0 * - Folder names must be 2-digit zero-padded (01-99) * - Track names must be 3-digit zero-padded (001-255) * - Format SD card as FAT32, then copy files one by one in order * - Track order is determined by the order files were copied, * NOT by filename. So copy them in the correct sequence. */ #include <DIYables_MiniMp3.h> #include <SoftwareSerial.h> SoftwareSerial mp3Serial(D10, D11); // RX, TX DIYables_MiniMp3 mp3; void setup() { Serial.begin(9600); mp3Serial.begin(9600); mp3.begin(mp3Serial); delay(1000); mp3.setVolume(20); // Play track 1 from folder 01 Serial.println("Playing folder 01, track 001..."); mp3.playFolder(1, 1); delay(5000); // Play track 2 from folder 01 Serial.println("Playing folder 01, track 002..."); mp3.playFolder(1, 2); delay(5000); // Play track 1 from folder 02 Serial.println("Playing folder 02, track 001..."); mp3.playFolder(2, 1); } void loop() { // Nothing to do here }

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

/* * DIYables Mini Mp3 Player - Serial Command Control * * Product: DIYables Mini Mp3 Player Module * https://diyables.io/products/mini-mp3-player-module * * Control the Mp3 player by typing commands in the Serial Monitor. * Great for testing all functions without extra hardware. * * Commands (type in Serial Monitor, then press Enter): * 1-9 Play track 1 to 9 * + Volume up * - Volume down * p Pause * r Resume * s Stop * n Next track * b Previous track (back) * ? Show current status * * Wiring Table: * Mini Mp3 RX -> Arduino Pin D11 * Mini Mp3 TX -> Arduino Pin D10 * Mini Mp3 VCC -> Vbus * Mini Mp3 GND -> GND * Speaker connected to SPK_1 and SPK_2 pins * * SD Card: Put mp3 files in root, named 001.mp3, 002.mp3, etc. */ #include <DIYables_MiniMp3.h> #include <SoftwareSerial.h> SoftwareSerial mp3Serial(D10, D11); // RX, TX DIYables_MiniMp3 mp3; void setup() { Serial.begin(9600); mp3Serial.begin(9600); mp3.begin(mp3Serial); delay(1000); mp3.setVolume(20); Serial.println("=== DIYables Mini Mp3 Player ==="); Serial.println("Commands:"); Serial.println(" 1-9 Play track number"); Serial.println(" + Volume up"); Serial.println(" - Volume down"); Serial.println(" p Pause"); Serial.println(" r Resume"); Serial.println(" s Stop"); Serial.println(" n Next track"); Serial.println(" b Previous track"); Serial.println(" ? Show status"); Serial.println("================================"); } void loop() { if (Serial.available()) { char cmd = Serial.read(); switch (cmd) { case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': Serial.print("Playing track "); Serial.println(cmd - '0'); mp3.play(cmd - '0'); break; case '+': Serial.println("Volume up"); mp3.volumeUp(); break; case '-': Serial.println("Volume down"); mp3.volumeDown(); break; case 'p': Serial.println("Paused"); mp3.pause(); break; case 'r': Serial.println("Resumed"); mp3.resume(); break; case 's': Serial.println("Stopped"); mp3.stop(); break; case 'n': Serial.println("Next track"); mp3.playNext(); break; case 'b': Serial.println("Previous track"); mp3.playPrevious(); break; case '?': { Serial.println("--- Status ---"); int16_t vol = mp3.getVolume(); Serial.print("Volume: "); Serial.println(vol); int16_t track = mp3.getCurrentTrack(); Serial.print("Current track: "); Serial.println(track); bool playing = mp3.isPlaying(); Serial.print("Playing: "); Serial.println(playing ? "Yes" : "No"); int16_t total = mp3.getTrackCount(); Serial.print("Total tracks: "); Serial.println(total); Serial.println("--------------"); break; } default: break; } } }

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
mp3.setEQ(DIYables_MiniMp3::EQ_POP);

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

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!