ESP32 - MP3-Player

In diesem Leitfaden erfahren wir, wie man einen MP3-Player mit einem ESP32, einem MP3-Player-Modul, einer Micro-SD-Karte und einem Lautsprecher erstellt. Die MP3-Dateien, die Musik oder aufgenommenes Audio sein können, befinden sich auf der Micro-SD-Karte. Der 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 Klang umzuwandeln und diesen Klang dann an den Lautsprecher zu senden. Wir werden uns mit den folgenden Aspekten befassen:

Anschließend kannst du den Code einen Schritt weiterführen, indem du ein Potentiometer oder einen Drehencoder integrierst, um die Lautstärke anzupassen.

Erforderliche Hardware

1×ESP32 ESP-WROOM-32 Entwicklungsmodul
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 ESP32
1×(Empfohlen) Breakout Expansion Board for ESP32
1×(Empfohlen) Stromverteiler für ESP32

Oder Sie können die folgenden Kits kaufen:

1×DIYables ESP32 Starter-Kit (ESP32 enthalten)
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 ESP32 umfasst 4 Pins:
    • RX-Pin: Datenpin, muss an einen TX-Pin des ESP32 angeschlossen werden
    • TX-Pin: Datenpin, muss an einen RX-Pin des ESP32 angeschlossen werden
    • VCC-Pin: Stromversorgungspin, muss an VCC angeschlossen werden (3,3 V oder 5 V)
    • GND-Pin: Masse-Pin, muss an GND (0 V) angeschlossen werden
  • Die Schnittstelle zum Lautsprecher ist eine 3,5-mm-Aux-Ausgangsbuchse.
  • Die Schnittstelle zur Micro-SD-Karte ist ein Micro-SD-Karten-Steckplatz auf der Rückseite des Moduls.
Pinbelegung des seriellen MP3-Player-Moduls

Lautsprecher-Pinbelegung

Ein Lautsprecher hat in der Regel zwei Schnittstellen:

  • Audio-Signal-Schnittstelle: Es handelt sich um einen 3,5-mm-Aux-Stecker, der mit dem MP3-Player-Modul verbunden wird
  • Stromversorgungs-Schnittstelle: Kann USB, ein 5-Volt-Netzteil oder eine andere Stromversorgungs-Schnittstelle sein

Wie es funktioniert

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

  • Sammle eine Sammlung von Liedern oder aufgenommenen Audiodateien, die du abspielen möchtest, und speichere sie auf einer microSD-Karte.
  • Setze die microSD-Karte in das MP3-Player-Modul ein.
  • Schließe das MP3-Player-Modul an den ESP32 an und verbinde den Lautsprecher mit dem MP3-Player-Modul. Stelle außerdem sicher, dass der Lautsprecher mit einer Stromquelle verbunden ist.

Jede MP3-Datei auf der microSD-Karte erhält eine ID, beginnend bei 0. Dann kannst du dem ESP32 verschiedene Dinge mit dem MP3-Player-Modul sagen, wie zum Beispiel:

  • Wiedergabe: Starte den ausgewählten Song.
  • Pause: Pausiere den Song.
  • Nächsten Song abspielen: Zum nächsten Song wechseln.
  • Vorherigen Song abspielen: Zum vorherigen Song wechseln.
  • Lautstärke ändern: Passe die Lautstärke der Musik an.

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

Verdrahtungsdiagramm

  • Wie man ESP32 und MP3-Player mit einem Breadboard verbindet
ESP32 MP3-Player-Modul Verdrahtungsdiagramm

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.

Wie verbindet man ESP32 mit einem MP3-Player?

ESP32-Code - Musik abspielen

Der untenstehende Code spielt das erste Lied ab, das auf der microSD-Karte gespeichert ist.

/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser 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/esp32/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 void setup() { Serial.begin(9600); Serial2.begin(9600, SERIAL_8N1, 16, 17); 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++) { Serial2.write(frame[i]); } }

Schnelle Schritte

ESP32-Code – Musik abspielen mit Bedientasten

Der untenstehende Code ist eine Aktualisierung des vorherigen Codes. Er fügt vier Tasten hinzu, damit du mit dem MP3-Player interagieren kannst.

/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser 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/esp32/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 ezButton button_play(32); // create ezButton object that attach to ESP32's pin GPIO32 ezButton button_pause(33); // create ezButton object that attach to ESP32's pin GPIO33 ezButton button_next(25); // create ezButton object that attach to ESP32's pin GPIO25 ezButton button_prev(26); // create ezButton object that attach to ESP32's pin GPIO26 void setup() { Serial.begin(9600); Serial2.begin(9600, SERIAL_8N1, 16, 17); 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++) { Serial2.write(frame[i]); } }

Der Schaltplan des obigen Codes:

ESP32 MP3-Player Lautsprecher Verdrahtungsdiagramm

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:

  • Fügen Sie ein Potentiometer hinzu, um die Lautstärke zu steuern, siehe ESP32 Potentiometer Tutorial
  • Fügen Sie eine IR-Fernbedienung hinzu, siehe ESP32 IR-Fernbedienung Tutorial
  • Fügen Sie ein RFID-Lesegerät und eine Karte hinzu, um einen RFID-MP3-Player zu erstellen, siehe ESP32 RFID Tutorial

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!