ESP32 - MP3-Player

Diese Anleitung zeigt Ihnen, wie Sie einen MP3-Player mit einem ESP32-Mikrocontroller unter MicroPython, einem MP3-Player-Modul, einer Micro-SD-Karte und einem Lautsprecher bauen. Der MP3-Player spielt Lieder oder Audiodateien ab, die auf der Micro-SD-Karte gespeichert sind. Der ESP32 steuert das MP3-Player-Modul, um Titel von der SD-Karte auszuwählen und abzuspielen, sie in Ton umzuwandeln und das Audiosignal an den Lautsprecher zu senden. Im Einzelnen lernen wir:

Anschließend können Sie den Code anpassen und ein Potentiometer oder einen Drehgeber zur Lautstärkeregelung hinzufügen.

ESP32 MicroPython MP3-Player

Überblick über Serial MP3 Player Module and Speaker

Pinbelegung des seriellen MP3-Player-Moduls

Ein serielles MP3-Player-Modul hat drei Hauptschnittstellen:

  • ESP32-Schnittstelle:
    • RX-Pin: Dient zum Empfangen von Daten. Verbinden Sie ihn über eine serielle Verbindung mit dem TX-Pin Ihres ESP32.
    • TX-Pin: Dient zum Senden von Daten. Verbinden Sie ihn über eine serielle Verbindung mit dem RX-Pin Ihres ESP32.
    • VCC-Pin: Stromversorgung. Verbinden Sie ihn mit dem 3,3V-Pin Ihres ESP32.
    • GND-Pin: Masse-Pin. Verbinden Sie ihn mit Masse (0V).
  • Lautsprecher-Schnittstelle:
    • Verfügt über eine 3,5-mm-AUX-Ausgangsbuchse.
  • Micro-SD-Karten-Schnittstelle:
    • Der Micro-SD-Kartensteckplatz befindet sich auf der Rückseite des MP3-Moduls.
    Serielles MP3-Player-Modul Pinbelegung
    image source: diyables.io

    Pinbelegung des Lautsprechers

    Ein Lautsprecher hat normalerweise zwei Anschlüsse:

    • Audioanschluss: Er hat einen 3,5-mm-AUX-Stecker zum Anschluss an einen MP3-Player.
    • Stromanschluss: Er kann an USB, ein 5V-Netzteil oder andere Stromquellen angeschlossen werden.

Funktionsweise

Folgendes müssen Sie tun:

  1. Laden Sie eine Liste von Liedern oder Aufnahmen auf eine Micro-SD-Karte.
  2. Setzen Sie die Micro-SD-Karte in das MP3-Player-Modul ein.
  3. Verbinden Sie das MP3-Player-Modul mit dem ESP32.
  4. Schließen Sie das MP3-Player-Modul an einen Lautsprecher an.
  5. Schließen Sie den Lautsprecher an eine Stromquelle an. Wenn Sie Kopfhörer oder Ohrhörer verwenden, entfällt dieser Schritt.

Jede MP3-Datei auf der Micro-SD-Karte ist nummeriert, beginnend bei 0, was die Reihenfolge der Lieder festlegt. Wir schreiben ein MicroPython-Skript für den ESP32, das verschiedene Befehle an das MP3-Player-Modul sendet. Unterstützte Befehle sind:

  • Wiedergabe starten
  • Stoppen
  • Nächsten Titel abspielen
  • Vorherigen Titel abspielen
  • Lautstärke einstellen

Nach Empfang des Befehls spielt das MP3-Player-Modul die auf der Micro-SD-Karte gespeicherten Dateien ab, wandelt sie in Audiosignale um und sendet diese über die 3,5-mm-AUX-Buchse an den Lautsprecher.

Verdrahtungsdiagramm

  • So verbinden Sie ESP32 und MP3-Player über ein Breadboard
ESP32 MicroPython MP3-Player-Modul Schaltplan

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

So verbinden Sie ESP32 und MP3-Player

ESP32 MicroPython-Code - Musik abspielen

Der folgende Code beginnt mit der Wiedergabe des ersten auf der Micro-SD-Karte gespeicherten Liedes.

/* * Dieser ESP32 MicroPython Code wurde von newbiely.de entwickelt * Dieser ESP32 MicroPython 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-micropython/esp32-micropython-mp3-player */ from machine import UART, Pin import time # Define constants CMD_PLAY_NEXT = 0x01 CMD_PLAY_PREV = 0x02 CMD_PLAY_W_INDEX = 0x03 CMD_SET_VOLUME = 0x06 CMD_SEL_DEV = 0x09 CMD_PLAY_W_VOL = 0x22 CMD_PLAY = 0x0D CMD_PAUSE = 0x0E CMD_SINGLE_CYCLE = 0x19 DEV_TF = 0x02 SINGLE_CYCLE_ON = 0x00 SINGLE_CYCLE_OFF = 0x01 ESP32_RX = 16 # The ESP32 pin GPIO16 connected to the TX of the Serial MP3 Player module ESP32_TX = 17 # The ESP32 pin GPIO17 connected to the RX of the Serial MP3 Player module # Initialize UART with the correct pins and baud rate mp3 = UART(1, baudrate=9600, tx=Pin(ESP32_TX), rx=Pin(ESP32_RX)) def mp3_command(command, dat): frame = bytearray(8) 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] = (dat >> 8) & 0xFF # data high byte frame[6] = dat & 0xFF # data low byte frame[7] = 0xef # ending byte mp3.write(frame) # Wait for the chip initialization to complete time.sleep(0.5) # Select the TF card mp3_command(CMD_SEL_DEV, DEV_TF) time.sleep(0.2) # wait for 200ms # Play MP3 mp3_command(CMD_PLAY, 0x0000) # 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 # Main loop to keep the script running while True: time.sleep(0.1) # Prevent tight loop

Schnelle Schritte

So richten Sie Ihren MicroPython-Code auf dem ESP32 mit der Thonny IDE ein und führen ihn aus:

  • Stellen Sie sicher, dass die Thonny IDE auf Ihrem Computer installiert ist.
  • Vergewissern Sie sich, dass die MicroPython-Firmware auf Ihrem ESP32-Board installiert ist.
  • Wenn Sie zum ersten Mal einen ESP32 mit MicroPython verwenden, lesen Sie die Anleitung ESP32 MicroPython Erste Schritte mit Schritt-für-Schritt-Anweisungen.
  • Verbinden Sie das ESP32-Board gemäß dem Schaltplan mit dem MP3-Player-Modul.
  • Verbinden Sie das ESP32-Board über ein USB-Kabel mit Ihrem Computer.
  • Öffnen Sie die Thonny IDE auf Ihrem Computer.
  • Gehen Sie in der Thonny IDE zu Tools Options.
  • Wählen Sie im Tab Interpreter aus dem Dropdown-Menü MicroPython (ESP32) aus.
  • Stellen Sie sicher, dass der richtige Port ausgewählt ist. Die Thonny IDE erkennt ihn normalerweise automatisch, eventuell müssen Sie ihn aber manuell auswählen (z. B. COM12 unter Windows oder /dev/ttyACM0 unter Linux).
  • Kopieren Sie den bereitgestellten MicroPython-Code und fügen Sie ihn in den Editor von Thonny ein.
  • Speichern Sie den Code auf Ihrem ESP32:
    • Klicken Sie auf die Schaltfläche Save oder drücken Sie Ctrl+S.
    • Wählen Sie im Speicherdialog MicroPython device.
    • Nennen Sie die Datei main.py.
  • Klicken Sie auf die grüne Schaltfläche Run (oder drücken Sie F5), um das Skript auszuführen.
  • Genießen Sie die Musik.

ESP32 MicroPython-Code - Musik mit Steuertastern abspielen

ESP32 MicroPython MP3-Player Lautsprecher Schaltplan

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

Der folgende Code ist eine erweiterte Version des vorherigen. Er verfügt über vier Taster, mit denen Sie den MP3-Player steuern können.

/* * Dieser ESP32 MicroPython Code wurde von newbiely.de entwickelt * Dieser ESP32 MicroPython 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-micropython/esp32-micropython-mp3-player */ from machine import UART, Pin import time from DIYables_MicroPython_Button import Button # Define constants CMD_PLAY_NEXT = 0x01 CMD_PLAY_PREV = 0x02 CMD_PLAY_W_INDEX = 0x03 CMD_SET_VOLUME = 0x06 CMD_SEL_DEV = 0x09 CMD_PLAY_W_VOL = 0x22 CMD_PLAY = 0x0D CMD_PAUSE = 0x0E CMD_SINGLE_CYCLE = 0x19 DEV_TF = 0x02 SINGLE_CYCLE_ON = 0x00 SINGLE_CYCLE_OFF = 0x01 ESP32_RX = 16 # The ESP32 pin GPIO16 connected to the TX of the Serial MP3 Player module ESP32_TX = 17 # The ESP32 pin GPIO17 connected to the RX of the Serial MP3 Player module # Initialize UART with the correct pins and baud rate mp3 = UART(1, baudrate=9600, tx=Pin(ESP32_TX), rx=Pin(ESP32_RX)) # Initialize buttons using the Button library button_play = Button(32) # The ESP32 pin GPIO32 for play button_pause = Button(33) # The ESP32 pin GPIO33 for pause button_next = Button(25) # The ESP32 pin GPIO25 for next button_prev = Button(26) # The ESP32 pin GPIO26 for previous # Set debounce time to 50 milliseconds for each button button_play.set_debounce_time(50) button_pause.set_debounce_time(50) button_next.set_debounce_time(50) button_prev.set_debounce_time(50) def mp3_command(command, dat): frame = bytearray(8) 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] = (dat >> 8) & 0xFF # data high byte frame[6] = dat & 0xFF # data low byte frame[7] = 0xef # ending byte mp3.write(frame) # Wait for the chip initialization to complete time.sleep(0.5) # Select the TF card mp3_command(CMD_SEL_DEV, DEV_TF) time.sleep(0.2) # wait for 200ms # Main loop to check buttons and send commands while True: # Update the state of each button button_play.loop() button_pause.loop() button_next.loop() button_prev.loop() # Handle play button press if button_play.is_pressed(): print("Play mp3") mp3_command(CMD_PLAY, 0x0000) # Handle pause button press if button_pause.is_pressed(): print("Pause mp3") mp3_command(CMD_PAUSE, 0x0000) # Handle next button press if button_next.is_pressed(): print("Play next mp3") mp3_command(CMD_PLAY_NEXT, 0x0000) # Handle previous button press if button_prev.is_pressed(): print("Play previous mp3") mp3_command(CMD_PLAY_PREV, 0x0000) time.sleep(0.01) # Small delay to be gentle on the CPU

Schnelle Schritte

  • Navigieren Sie in der Thonny IDE zu Tools Manage packages.
  • Suchen Sie nach “DIYables-MicroPython-Button” und finden Sie die von DIYables erstellte Button-Bibliothek.
  • Klicken Sie auf DIYables-MicroPython-Button und dann auf die Schaltfläche Install, um die Button-Bibliothek zu installieren.
ESP32 MicroPython Button-Bibliothek
  • Kopieren Sie den obigen Code und fügen Sie ihn in den Editor der Thonny IDE ein.
  • Speichern Sie das Skript auf Ihrem ESP32-Board.
  • Klicken Sie auf die grüne Schaltfläche Run (oder drücken Sie F5), um das Skript auszuführen. Das Skript wird ausgeführt.
  • Drücken Sie die Taster nacheinander.
  • Genießen Sie die Musik.

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.

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