Arduino Nano ESP32 – MP3-Player

In diesem Leitfaden entdecken wir, wie man einen MP3-Player mit einem ESP32, einem MP3-Player-Modul, einer microSD-Karte und einem Lautsprecher erstellt. Die MP3-Dateien, die Musik oder aufgezeichnete Audiodaten sein können, befinden sich auf der microSD-Karte. Der Arduino Nano ESP32 wird so programmiert, dass er Befehle sendet, um das MP3-Player-Modul zu steuern: welches Lied von der SD-Karte ausgewählt wird, es in Ton umzuwandeln und diesen Ton dann an den Lautsprecher zu senden. Wir werden uns mit den folgenden Aspekten befassen:

Anschließend können Sie den Code einen Schritt weiterführen, indem Sie ein Potentiometer oder einen Drehencoder verwenden, um die Lautstärke einzustellen.

Erforderliche Hardware

1×Arduino Nano ESP32
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×Serieller MP3-Player-Modul
1×Micro-SD-Karte
1×3.5mm Aux-Lautsprecher
1×Breadboard
1×Verbindungskabel
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 (30 Sensoren/Displays)
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.

Über das serielle MP3-Player-Modul und Lautsprecher

Pinbelegung des seriellen MP3-Player-Moduls

Ein serielles MP3-Player-Modul hat drei Schnittstellen:

  • Die Schnittstelle zum Arduino Nano ESP32 umfasst 4 Pins:
    • RX-Pin: Datenpin, muss mit einem TX-Pin des Arduino Nano ESP32 verbunden werden
    • TX-Pin: Datenpin, muss mit einem RX-Pin des Arduino Nano ESP32 verbunden werden
    • VCC-Pin: Versorgungs-Pin, muss mit VCC (5 V) verbunden werden
    • GND-Pin: Versorgungs-Pin, muss mit GND (0 V) verbunden werden
  • Die Schnittstelle zum Lautsprecher ist eine 3,5-mm-AUX-Ausgangsbuchse
  • Die Schnittstelle zur Micro-SD-Karte ist ein Micro-SD-Karten-Sockel an der Rückseite des Moduls
Pinbelegung des seriellen MP3-Player-Moduls

Lautsprecher-Pinbelegung

Ein Lautsprecher hat in der Regel zwei Schnittstellen:

  • Audio-Signalschnittstelle: Es handelt sich um einen 3,5-mm-Aux-Stecker, der an das MP3-Player-Modul angeschlossen wird.
  • Stromversorgungs-Schnittstelle: USB, ein 5-V-Netzteil oder eine andere Stromversorgungs-Schnittstelle sind möglich.

Wie es funktioniert

Um loszulegen, stellen Sie sicher, dass Sie Folgendes haben:

  • Sammle eine Sammlung von Liedern oder aufgezeichnetem Audio, das du abspielen möchtest, und speichere sie auf einer microSD-Karte.
  • Stecke die microSD-Karte in das MP3-Player-Modul.
  • Verbinde das MP3-Player-Modul mit dem Arduino Nano ESP32 und verbinde den Lautsprecher mit dem MP3-Player-Modul. Stelle außerdem sicher, dass der Lautsprecher an eine Stromquelle angeschlossen ist.

Jede MP3-Datei auf der Micro-SD-Karte erhält eine ID, beginnend bei 0. Dann kannst du dem Arduino Nano ESP32 verschiedene Dinge mit dem MP3-Player-Modul tun lassen, z. B.:

  • Abspielen: Starte das ausgewählte Lied.
  • Pause: Pausiere das Lied.
  • Nächster Song abspielen: Wechsle zum nächsten Lied.
  • Vorheriger Song abspielen: Wechsle zum vorherigen Lied.
  • Lautstärke ändern: Passe die Lautstärke an.

Wenn das MP3-Player-Modul einen Befehl erhält, liest es die MP3-Datei von der microSD-Karte aus, wandelt sie in ein Audiosignal um und sendet dieses Signal über eine 3,5-mm-Aux-Verbindung an den Lautsprecher.

Verdrahtungsdiagramm

Schaltplan des Arduino Nano ESP32 MP3-Player-Moduls

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Arduino Nano ESP32 Code - Musik abspielen

Der untenstehende Code spielt das erste Lied, das auf der Micro-SD-Karte gespeichert ist.

/* * Dieser Arduino Nano ESP32 Code wurde von newbiely.de entwickelt * Dieser Arduino Nano ESP32 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-nano-esp32/arduino-nano-esp32-mp3-player */ #define CMD_PLAY_NEXT 0x01 #define CMD_PLAY_PREV 0x02 #define CMD_PLAY_W_INDEX 0x03 #define CMD_SET_VOLUME 0x06 #define CMD_SEL_DEV 0x09 #define CMD_PLAY_W_VOL 0x22 #define CMD_PLAY 0x0D #define CMD_PAUSE 0x0E #define CMD_SINGLE_CYCLE 0x19 #define DEV_TF 0x02 #define SINGLE_CYCLE_ON 0x00 #define SINGLE_CYCLE_OFF 0x01 #define RX1PIN D8 // Arduino Nano Pin connected to the TX of the Serial MP3 Player module #define TX1PIN D7 // Arduino Nano Pin connected to the RX of the Serial MP3 Player module void setup() { Serial.begin(9600); Serial1.begin(9600, SERIAL_8N1, RX1PIN, TX1PIN); delay(500); // wait chip initialization is complete mp3_command(CMD_SEL_DEV, DEV_TF); // select the TF card delay(200); // wait for 200ms mp3_command(CMD_PLAY, 0x0000); // Play mp3 //mp3_command(CMD_PAUSE, 0x0000); // Pause mp3 //mp3_command(CMD_PLAY_NEXT, 0x0000); // Play next mp3 //mp3_command(CMD_PLAY_PREV, 0x0000); // Play previous mp3 //mp3_command(CMD_SET_VOLUME, 30); // Change volume to 30 } void loop() { } void mp3_command(int8_t command, int16_t dat) { int8_t frame[8] = { 0 }; frame[0] = 0x7e; // starting byte frame[1] = 0xff; // version frame[2] = 0x06; // The number of bytes of the command without starting byte and ending byte frame[3] = command; // frame[4] = 0x00; // 0x00 = no feedback, 0x01 = feedback frame[5] = (int8_t)(dat >> 8); // data high byte frame[6] = (int8_t)(dat); // data low byte frame[7] = 0xef; // ending byte for (uint8_t i = 0; i < 8; i++) { Serial1.write(frame[i]); } }

Schnelle Schritte

Arduino Nano ESP32 Code - Musik abspielen mit Bedienknöpfen

Der unten stehende Code ist eine Weiterentwicklung des vorherigen Codes. Er fügt vier Tasten hinzu, damit Sie mit dem MP3-Player interagieren können.

/* * Dieser Arduino Nano ESP32 Code wurde von newbiely.de entwickelt * Dieser Arduino Nano ESP32 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-nano-esp32/arduino-nano-esp32-mp3-player */ #include <ezButton.h> #define CMD_PLAY_NEXT 0x01 #define CMD_PLAY_PREV 0x02 #define CMD_PLAY_W_INDEX 0x03 #define CMD_SET_VOLUME 0x06 #define CMD_SEL_DEV 0x09 #define CMD_PLAY_W_VOL 0x22 #define CMD_PLAY 0x0D #define CMD_PAUSE 0x0E #define CMD_SINGLE_CYCLE 0x19 #define DEV_TF 0x02 #define SINGLE_CYCLE_ON 0x00 #define SINGLE_CYCLE_OFF 0x01 #define RX1PIN D8 // Arduino Nano ESP32 Pin connected to the TX of the Serial MP3 Player module #define TX1PIN D7 // Arduino Nano ESP32 Pin connected to the RX of the Serial MP3 Player module ezButton button_play(D2); // create ezButton object for pin D2 ezButton button_pause(D3); // create ezButton object for pin D3 ezButton button_next(D4); // create ezButton object for pin D4 ezButton button_prev(D5); // create ezButton object for pin D5 void setup() { Serial.begin(9600); Serial1.begin(9600, SERIAL_8N1, RX1PIN, TX1PIN);; delay(500); // wait chip initialization is complete mp3_command(CMD_SEL_DEV, DEV_TF); // select the TF card delay(200); // wait for 200ms button_play.setDebounceTime(50); // set debounce time to 50 milliseconds button_pause.setDebounceTime(50); // set debounce time to 50 milliseconds button_next.setDebounceTime(50); // set debounce time to 50 milliseconds button_prev.setDebounceTime(50); // set debounce time to 50 milliseconds } void loop() { button_play.loop(); // MUST call the loop() function first button_pause.loop(); // MUST call the loop() function first button_next.loop(); // MUST call the loop() function first button_prev.loop(); // MUST call the loop() function first if (button_play.isPressed()) { Serial.println("Play mp3"); mp3_command(CMD_PLAY, 0x0000); } if (button_pause.isPressed()) { Serial.println("Pause mp3"); mp3_command(CMD_PAUSE, 0x0000); } if (button_next.isPressed()) { Serial.println("Play next mp3"); mp3_command(CMD_PLAY_NEXT, 0x0000); } if (button_prev.isPressed()) { Serial.println("Play previous mp3"); mp3_command(CMD_PLAY_PREV, 0x0000); } } void mp3_command(int8_t command, int16_t dat) { int8_t frame[8] = { 0 }; frame[0] = 0x7e; // starting byte frame[1] = 0xff; // version frame[2] = 0x06; // The number of bytes of the command without starting byte and ending byte frame[3] = command; // frame[4] = 0x00; // 0x00 = no feedback, 0x01 = feedback frame[5] = (int8_t)(dat >> 8); // data high byte frame[6] = (int8_t)(dat); // data low byte frame[7] = 0xef; // ending byte for (uint8_t i = 0; i < 8; i++) { Serial1.write(frame[i]); } }

Der Schaltplan für den obigen Code:

Arduino Nano ESP32 MP3-Player-Lautsprecher Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Jetzt können Sie die Projekte bearbeiten, um weitere Funktionen hinzuzufügen, zum Beispiel:

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

Funktionsreferenzen

※ 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!