Ein Raspberry Pi Pico hat leider keine GPIOs, die sich als analoge Ausgänge konfigurieren lassen. Man kann also nicht einfach so Töne oder sogar Audio-Dateien abspielen. Allerdings gibt es einen Umweg über die Ausgabe von PWM-Signalen. Darüber ist es möglich, mit ganz einfachen Mitteln und spielend leicht MP3-Dateien mit dem Raspberry Pi Pico abzuspielen. Dafür eignet sich schon ein kleiner Lautsprecher (Mono) vom Typ KY-006. Für ernsthafte Anwendungen und Experimente wäre ein richtiger Lautsprecher mit z. B. 1 Watt / 8 Ohm und einem zusätzlichen Verstärker-Modul zu empfehlen.
Der hier verwendete Programmcode benötigt zum Abspielen der MP3-Dateien die CircuitPython-Firmware, weil dort bereits ein MP3-Decoder enthalten ist. Mit MicroPython funktioniert der verwendete Programmcode nicht.
Die Kombination aus Raspberry Pi Pico und CircuitPython ermöglicht in nur wenigen Schritten kreative Sound-Projekte. Nur eine Sache muss man dabei beachten, dass der Speicher des Raspberry Pi Pico nicht besonders groß ist und nur kleine MP3-Dateien oder ganz wenige auf dem Pico gespeichert werden können.
Aufbau und Bauteile
- KY-006 - Lautsprecher-Modul
- GPIO-Belegung (Pinout)
Raspberry Pi Pico | KY-006 | |
---|---|---|
Pin 3 | GND | - |
Pin 1 | GPIO 0 | S |
Hinweis: Der KY-006 ist nicht wirklich für die Tonausgabe von MP3-Dateien geeignet. Er rauscht, knackt, knarzt und schnarrt, je nach dem was genau abgespielt wird. Zum Testen ist das sicherlich ausreichend. Ernsthafte Anwendungen benötigen einen Verstärker und einen richtigen, zum Verstärker und zur Anwendung passenden Lautsprecher.
Schnell und einfach alle Bauteile zusammen bestellen
- Jetzt alle Bauteile bestellen
- Eigenes Elektronik-Set konfigurieren
MP3-Dateien zum Abspielen
Grundsätzlich eignen sich fast alle MP3-Dateien. Übliche MP3-Dateien mit Mono und Stereo, bis 64 kBit/s und 8 kHz bis 24 kHz werden unterstützt.
Um sicher zu sein, abspielfähige Dateien zu verwenden, bieten wir hierzu ein paar geeignete Dateien zum Download an, die direkt mit einem Dateimanager auf den Pico kopiert werden können.
- MP3-Dateien
Programmcode für CircuitPython: Eine einzelne MP3-Datei abspielen
Wenn es darum geht, eine einzelne Datei abzuspielen, dann reichen folgende Zeilen aus.
- Zuerst werden die erforderlichen Bibliotheken geladen.
- Dann wird der GPIO 0 (Pin 1) als Ausgang für ein PWM-Audio-Signal initialisiert.
- Anschließend wird die Datei für den MP3-Decoder ausgewählt.
- Und danach wird die Datei abgespielt.
- Die Endlosschleife dient hier dazu, das Ende des Abspielens zu erkennen. Alternativ bestünde die Möglichkeit den Pico während des Abspielens etwas anderes machen zu lassen.
Nach dem Ausführen des Programmcodes wird die Datei (im Verzeichnis mp3) sofort abgespielt.
# Bibliotheken ladenimport boardfrom audiomp3 import MP3Decoderfrom audiopwmio import PWMAudioOut# Initialisierung: GPIO 0 (Pin 1) als PWM-Audio-Ausgangaudio_out = PWMAudioOut(board.GP0)# MP3-Datei auswählenmp3 = MP3Decoder('mp3/pico.mp3')# MP3 abspielenprint('Abspielen')audio_out.play(mp3)# Ausführung während dem Abspielenwhile audio_out.playing: passprint('Ende')
Hinweis: Wenn Du keinen Ton hörst, dann prüfe bitte, ob der Lautsprecher mit den richtigen Pins verbunden ist, die im Programmcode stehen. Desweiteren solltest Du berücksichtigen, dass die Lautstärke sehr leise ist und man nur dann etwas hört, wenn man sich den Lautsprecher direkt ans Ohr hält. Laute Umgebungsgeräusche können diese Tonausgabe sehr leicht übertönen.
Programmcode für CircuitPython: Mehrere MP3-Dateien hintereinander abspielen
Wenn man mehrere Dateien hintereinander abspielen will, muss der Programmcode um eine Schleife und eine Liste mit den Dateinamen ergänzt werden.
# Bibliotheken ladenimport boardimport audiomp3import audiopwmio# Initialisierung: GPIO 0 (Pin 1) als PWM-Audio-Ausgangaudio_out = audiopwmio.PWMAudioOut(board.GP0)# MP3-Dateienmp3dir = 'mp3/'mp3files = ['pico.mp3','restaurant.mp3']# Wiederholungfor filename in mp3files: print('Abspielen:', filename) # Datei auswählen mp3 = audiomp3.MP3Decoder(open(mp3dir + filename, 'rb')) # Abspielen audio_out.play(mp3) # Ausführung während dem Abspielen while audio_out.playing: passprint('Ende')
Ergänzungen
Wer den Aufbau durchführt und den Programmcode ausprobiert, wird zwei Dinge bemängeln.
- Die Audio-Ausgabe ist sehr leise: Das liegt daran, dass der Strom, den ein GPIO-Ausgang liefern kann, nicht besonders groß ist. Deshalb muss der das Ausgangssignal (Strom) zur Ausgabe auf einem Lautsprecher verstärkt werden.
- Am Anfang und am Ende des Abspielen knackt es manchmal: Letzten Endes ist diese Art der Tonverarbeitung nur eine Notlösung, deren auditive Wahrnehmung nicht gefallen muss.
PWM-Signal verstärken
Um die Audio-Ausgabe sinnvoll nutzen zu können, muss das PWM-Signal (Strom) verstärkt werden. Man muss also den GPIO mit einem Verstärker (Eingang) verbinden und am Verstärker (Ausgang) den Lautsprecher anschließen. Hierfür eignen sich verschiedene Audio-Verstärker-Module.
- Raspberry Pi Pico: Audio-Verstärker-Module
Weitere verwandte Themen:
- Raspberry Pi Pico: Tonausgabe mit Buzzer KY-006
- Raspberry Pi Pico: MP3-Audioausgabe mit DFPlayer Mini
- Raspberry Pi Pico: Summer einschalten und ausschalten
- Raspberry Pi Pico: MP3, Musik, Sprache und Audio
Frag Elektronik-Kompendium.de
Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython
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
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