Raspberry Pi Pico: MP3-Mini-Soundboard mit DFPlayer Mini

Ein Soundboard ist eine Oberfläche, in der viele Regler, Schalter und Taster eingelassen sind, um Audio-Quellen zu bearbeiten, zu schneiden und zu mischen. Manche sagen auch Mischpult dazu. Die gibt es in verschiedenen Ausbaustufen. In diesem einfachen Anwendungsfall haben wir einfach nur 3 Taster, die eine bestimmte Audiodatei abspielen sollen, wenn sie gedrückt werden.

Als Audio-Player verwenden wir einen DFPlayer Mini. Das ist ein Mini-MP3-Player mit integriertem MicroSD-Kartenslot und Verstärker zur Audio-Ausgabe auf einem Lautsprecher. Mit dem Raspberry Pi Pico wollen wir den DFPlayer Mini über die serielle Schnittstelle steuern.

Aufbau und Bauteile

Raspberry Pi Pico DFPlayer Mini Lautsprecher
Pin 40 VCC / +5V Pin 1 VCC  
Pin 24 GPIO18 Pin 16 Busy  
Pin 38 GND Pin 7 GND  
Pin 22 GPIO17 / UART0 / RX Pin 3 TX  
Pin 21 GPIO16 / UART0 / RX Pin 2 RX  
    Pin 6 SPK + +
    Pin 8 SPK - -

Schnell und einfach alle Bauteile zusammen bestellen

MicroPython-Bibliothek für den DFPlayer

Die Software-seitige Ansteuerung erfolgt über die serielle Schnittstelle. Damit der DFPlayer Mini etwas tut, zum Beispiel einen Titel abspielen, muss er einen Code über die serielle Schnittstelle übermittelt bekommen. Hilfreich ist es, man verwendet eine Software-Bibliothek, die bestimmte Steuerungscodes bereits mit einem Programmierbefehl kombiniert haben. So Dinge, wie Play, Pause, Laut, Leise, usw.

Die folgende MicroPython-Bibliothek muss heruntergeladen und mit dem Dateinamen „picodfplayer.py“ auf dem Raspberry Pi Pico gespeichert werden.

Programmcode

Der Programmcode initialisiert den DFPlayer Mini über eine UART-Schnittstelle und die Busy-Leitung. Über den Zustand der Busy-Leitung ermitteln wir im Programmcode, ob gerade ein Titel gespielt wird, oder nicht. Über die UART-Schnittstelle bekommt der DFPlayer Mini seine Steuerungskommandos gesendet.

Das DFPlayer Mini braucht nach der Verbindung mit der Stromversorgung etwa 500 bis 1.500 ms, bis er seine Speicherkarte vollständig indiziert hat. Wie lange das dauert, ist abhängig von der Anzahl der Dateien auf der Speicherkarte. Bei mehreren hundert Titeln kann es etwas dauert, bis der DFPlayer Mini Kommandos entgegennehmen kann. Aus diesem Grund ist nach der Initialisierung eine kleine Pause eingebaut.

Weil am Anfang die Lautstärke auf dem höchsten Wert eingestellt ist, wird sie im Programmcode zuerst auf einen mittleren Wert eingestellt.

Dann kommen die Funktionen, die einen bestimmten Titel (Track) mit einem Kommando abspielen. Danach folgt die Initialisierung der Taster und welche Funktion sie aufrufen sollen.

# Bibliotheken laden
import time
from picozero import Button
from picodfplayer import DFPlayer

# Initialisierung DFPlayer (UART, TX-Pin, RX-Pin, Busy-Pin)
player = DFPlayer(0, 16, 17, 18)
time.sleep(1)
player.setVolume(15) # Lautstärke einstellen: 0 bis 30

# Funktion: Abspielen von Titel 1
def track1():
    print('Taster: Links')
    player.playTrack(1,1)

# Funktion: Abspielen von Titel 2
def track2():
    print('Taster: Mitte')
    player.playTrack(1,2)

# Funktion: Abspielen von Titel 3
def track3():
    print('Taster: Rechts')
    player.playTrack(1,3)

# Taster: Links
btn1 = Button(21)
btn1.when_pressed = track1

# Taster: Mitte
btn2 = Button(20)
btn2.when_pressed = track2

# Taster: Rechts
btn3 = Button(19)
btn3.when_pressed = track3

Dieser Programmcode hat den Nachteil, dass bei jedem Druck auf einen Taster der laufende Titel abgebrochen und der neue Titel abgespielt wird. Bei einem Soundboard möchte man das vielleicht nicht, um eine Fehlbedienung zu vermeiden.
Im folgenden Programmcode wird ein neuer Titel erst dann abgespielt wenn der laufende Titel vollständig abgespielt wurde.

# Bibliotheken laden
import time
from picozero import Button
from picodfplayer import DFPlayer

# Initialisierung DFPlayer (UART, TX-Pin, RX-Pin, Busy-Pin)
player = DFPlayer(0, 16, 17, 18)
time.sleep(1)
player.setVolume(15) # Lautstärke einstellen: 0 bis 30

# Funktion: Abspielen von Titel 1
def track1():
    if player.queryBusy() == False:
        print('Taster: Links')
        player.playTrack(1,1)

# Funktion: Abspielen von Titel 2
def track2():
    if player.queryBusy() == False:
        print('Taster: Mitte')
        player.playTrack(1,2)

# Funktion: Abspielen von Titel 3
def track3():
    if player.queryBusy() == False:
        print('Taster: Rechts')
        player.playTrack(1,3)

# Taster: Links
btn1 = Button(21)
btn1.when_pressed = track1

# Taster: Mitte
btn2 = Button(20)
btn2.when_pressed = track2

# Taster: Rechts
btn3 = Button(19)
btn3.when_pressed = track3

Hinweis: Mit diesem Aufbau und Programmcode ist es nicht vorgesehen, das Abspielen der Audio-Dateien zu beenden oder zu unterbrechen. Das Beenden des Programmcodes hat keinen Einfluss auf den DFPlayer Mini. Der lässt den aktuellen Titel unabhängig vom Mikrocontroller weiterlaufen. Zum Beenden der laufenden Audioausgabe musst Du den Lautsprecher oder gleich die Stromversorgung (VCC) zum DFPlayer Mini entfernen/abziehen/abklemmen.

Erweiterung

Denkbar ist, dass Du den Aufbau und Programmcode und damit das Mini-Soundboard um weitere Taster und Titel erweiterst.

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython

Elektronik-Set Pico Edition

Das Elektronik-Set Pico Edition ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.

  • LED: Einschalten, ausschalten, blinken und Helligkeit steuern
  • Taster: Entprellen und Zustände anzeigen
  • LED mit Taster einschalten und ausschalten
  • Ampel- und Lauflicht-Steuerung
  • Elektronischer Würfel
  • Eigene Steuerungen programmieren

Elektronik-Set jetzt bestellen Online-Workshop buchen

Online-Workshop: Programmieren mit dem Raspberry Pi Pico

Programmieren mit dem Raspberry Pi Pico

Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.

Online-Workshop buchen

Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.

Termine und Newsletter-Anmeldung

 

Elektronik-Sets für das Hardware-nahe Programmieren