Lesezeit ca. 4 Min.

Wuff, Miau, Muh


Logo von Raspberry Pi Geek
Raspberry Pi Geek - epaper ⋅ Ausgabe 2/2022 vom 02.12.2021

Mit dem ESP32 Sounds per Touch abspielen

Artikelbild für den Artikel "Wuff, Miau, Muh" aus der Ausgabe 2/2022 von Raspberry Pi Geek. Dieses epaper sofort kaufen oder online lesen mit der Zeitschriften-Flatrate United Kiosk NEWS.

Bildquelle: Raspberry Pi Geek, Ausgabe 2/2022

README

Der Hund bellt, die Katze miaut, die Kuh muht: Mit dem ESP32 und ein wenig leitender Farbe bauen wir ein beliebtes elektronisches Kinderbuch nach. Den dafür nötigen Programmcode liefern wir in diesem Artikel.

Inspiriert von einem beliebten interaktiven Lernspiel entstand die Idee, einen ESP32 die Stimmen von Tieren abspielen zu lassen, sobald ein Finger ein Bild des entsprechenden Tiers berührt. Die Bilder wurden mit der elektrisch leitenden Farbe Bare Conductive gezeichnet .

Der ESP32 verfügt über einige Touch-Eingänge, die sich bestens dazu eignen, die Berührung der leitenden Bilder zu detektieren. Zum Abspielen der Sounds verwenden wir eine vorhandene Bibliothek.

Aufbau

Der ESP32 verfügt über zwei analoge Ausgänge: DAC1 (GPIO25) und DAC2 (GPIO26). Über diese Ausgänge lassen sich auch Klänge und Musik ausgeben. Das einzige Problem: Die GPIOs liefern ...

Weiterlesen
epaper-Einzelheft 8,99€
NEWS Jetzt gratis testen
Bereits gekauft?Anmelden & Lesen
Leseprobe: Abdruck mit freundlicher Genehmigung von Raspberry Pi Geek. Alle Rechte vorbehalten.
Lesen Sie jetzt diesen Artikel und viele weitere spannende Reportagen, Interviews, Hintergrundberichte, Kommentare und mehr aus über 1050 Magazinen und Zeitungen. Mit der Zeitschriften-Flatrate NEWS von United Kiosk können Sie nicht nur in den aktuellen Ausgaben, sondern auch in Sonderheften und im umfassenden Archiv der Titel stöbern und nach Ihren Themen und Interessensgebieten suchen. Neben der großen Auswahl und dem einfachen Zugriff auf das aktuelle Wissen der Welt profitieren Sie unter anderem von diesen fünf Vorteilen:

  • Schwerpunkt auf deutschsprachige Magazine
  • Papier sparen & Umwelt schonen
  • Nur bei uns: Leselisten (wie Playlists)
  • Zertifizierte Sicherheit
  • Freundlicher Service
Erfahren Sie hier mehr über United Kiosk NEWS.

Mehr aus dieser Ausgabe

Titelbild der Ausgabe 2/2022 von Aktualisierungen. Zeitschriften als Abo oder epaper bei United Kiosk online kaufen.
Aktualisierungen
Titelbild der Ausgabe 2/2022 von Netzanalyst. Zeitschriften als Abo oder epaper bei United Kiosk online kaufen.
Netzanalyst
Titelbild der Ausgabe 2/2022 von LAN-Wachhund. Zeitschriften als Abo oder epaper bei United Kiosk online kaufen.
LAN-Wachhund
Titelbild der Ausgabe 2/2022 von Audioausgabe. Zeitschriften als Abo oder epaper bei United Kiosk online kaufen.
Audioausgabe
Mehr Lesetipps
Blättern im Magazin
Malen statt Ätzen
Vorheriger Artikel
Malen statt Ätzen
Mit Licht malen
Nächster Artikel
Mit Licht malen
Mehr Lesetipps

... generell keine besonders hohe Ausgangsleistung, ein Lautsprecher lässt sich also nicht direkt an die GPIOs anschließen. Wir benötigen daher einen Verstärker, der das Signal vom ESP32 so aufbereitet, dass man es über einen Lautsprecher abspielen kann.

Um dieses Problem zu lösen, gibt es viele Wege, von denen wir uns hier zwei genauer ansehen. Zum einen lassen sich einfach ein paar Mini-Boxen von der Stange anschließen 1 1 . Das klappt recht gut und erlaubt ein schnelles Ausprobieren. Um Klänge auszugeben, verbinden Sie einfach GPIO25 mit der Spitze des Klinkensteckers, die Masse (GND) des ESP32 kommt dann an den Massepol des Klinkensteckers.

Zum anderen – diese Möglichkeit nutzen wir – kann man ein kleines Verstärkermodul mit dazu passenden Lautsprechern verwenden. Diese Lösung empfiehlt sich, wenn Sie den ESP32 mit Soundfunktion in ein Gehäuse einbauen möchten, um zum Beispiel einen kindgerechten Audioplayer aufzubauen 2 2 .

Sie dürfen selbstverständlich auch nicht vergessen, die Bilder, die dann später die Sounds auslösen, an den ESP32 anzuschließen. Wir verwenden dazu die Touch-Eingänge 5 bis 8. Die Tabelle Zuordnung fasst zusammen, welcher Touch-Eingang dabei welchem GPIO-Pin entspricht.

Die Bilder der Tiere, die wir hier als Vorlage verwendet haben, stammen von der Webseite Vecteezy . Die Konturen der Bilder haben wir mit der elektrisch leitenden Farbe Bare Conductive nachgemalt. Die Sounds stammen aus dem Projekt FreeAnimalSounds . Eine Beschreibung zum Aufsetzen der Arduino IDE für den ESP32 finden Sie in einem eigenen Artikel .

Bibliothek

Wir verwenden eine Bibliothek, die für uns die Sounds abspielt, ohne dass wir selbst viel programmieren müssen. Die Bibliothek erhalten Sie kostenlos auf der Webseite von XTronical . Zur Installation speichern Sie die Datei XT_DAC_Audio‐4_2_1.zip im Verzeichnis arduino‐Version/libraries.

Wechseln Sie jetzt in die Arduino IDE und importieren Sie die Bibliothek unter dem Menüpunkt Sketch | Bibliothek einbinden | ZIP-Bibliothek hinzufügen. Daraufhin öffnet sich ein Dateibrowser, in dem Sie die heruntergeladene Datei auswählen.

Dateien zum Artikel herunterladen unter

www.raspi-geek.de/dl/47078

Weitere Infos und interessante Links

www.raspi-geek.de/qr/47078

Nach dem erfolgreichen Import finden Sie im Menü unter Datei | Beispiele |

XT_DAC_Audio | PlayWav ein Beispielprogramm, das eine kurze Passage aus „Star Wars“ abspielt. Laden Sie das Programm einfach einmal in den ESP32 und hören Sie, was passiert.

Eigene Sounds

So toll der Beispielsound auch ist, nach der zehnten Wiederholung geht er auf die Nerven. Lassen Sie uns einen Blick in den Beispielcode werfen, um zu erfahren, wie der ESP32 Sound erzeugt.

In der Arduino IDE sehen Sie neben dem Reiter PlayWav noch einen zweiten Reiter, der mit SoundData.h beschriftet ist. In SoundData.h ist ein riesiges Array als Bytes (char) definiert. Darin steckt der auszugebende Sound. Es erfordert nur ein paar einfache Schritte, um ein solches Array zu erzeugen. Konvertieren Sie dazu als Erstes eine beliebige Sounddatei ins WAV-Format.

Verwenden Sie dabei als Kodierung Unsigned 8 Bit PCM. Fast jedes Audioschnittwerkzeug ist in der Lage, diese Aufgabe zu erledigen. Falls Sie noch kein Audio-Tool auf Ihrem Rechner haben, installieren Sie am besten Audacity : Die freie Software lässt sich leicht bedienen und ist für Linux, MacOS und Windows verfügbar.

Um die WAV-Datei in ein Array für die Arduino IDE umzuwandeln, setzen Sie das Kommandozeilenwerkzeug Xxd ein, das Hexdumps erstellt. Es findet sich im Fundus aller gängigen Linux-Distributionen, auch in den Pi-OS-Repos. Windows-User müssen es aus dem Internet herunterladen .

Mit dem Kommando xxd ‐i Eingabe.wav > Ausgabe.h erzeugen Sie nun aus der Tondatei den gewünschten Hexdump. In unserem Beispiel lautet der Aufruf konkret xxd ‐i horse.wav > horse.h. Die Ausgabedatei müssen Sie anschließend nur noch in Ihr Arduino-Projekt hineinkopieren und die IDE einmal neu starten. Anschließend sehen Sie einen zusätzlichen Reiter mit dem Namen Ihrer Datei 3 3 .

Danach müssen Sie die Definition der Arrays noch ein wenig anpassen. Sie erweitern sie jeweils um das Schlüsselwort PROGMEM, damit die Daten nicht im Variablenspeicher des ESP32 landen. Die konkrete Definition für das Pferde-Beispiel würde unsigned char PROGMEM horse_wav[] lauten.

Programm

In Listing 1 sehen Sie das Programm, das den Versuchsaufbau steuert. Die ersten fünf Zeilen importieren die Sounds für die Tiere sowie die Bibliothek zur Soundwiedergabe, die nächsten fünf erzeugen Klassen für jeden Sound und für den Audioausgang. Dieses Projekt erfordert in der einleitenden Funktion setup() keinen Code (Zeilen 12 und 13).

Jetzt folgt ein etwas kniffligerer Teil: Die Touch-Sensoren erzeugen stark schwankende Werte. Über die Variable level (Zeile 15) legen wir fest, ab wel-chen Wert die Sensoren auslösen sollen. Der Wert der Variablen kann sich dabei von Aufbau zu Aufbau unterscheiden.

Die Sensoren produzieren im Betrieb zu allem Übel noch einiges an Rauschen, melden sich also eventuell auch ohne Berührung. Um das Problem zu lösen, fragen wir zuerst den Wert der Sensoren ab (Zeile 18). Anschließend prüfen wir, ob der Schwellwert unterschritten wurde (Zeile 19 bis 22) – die Touch-Eingänge haben normalerweise einen hohen Wert, der sich verringert, sobald man sie berührt.

Löst ein Sensor viermal hintereinander aus, spielt das Programm den passenden Sound ab (Zeile 23 bis 26). Das steuern die in Zeile 16 definierten Variablen t5 bis t8. Damit es bei der Ausgabe nicht zu wild wird, verhindern wir das Abspielen eines Sounds, falls dieser schon läuft.

Verschiedene Tiere wie Hund und Katze dürfen hingegen im Duett gleichzeitig loslegen. Möchten Sie das Spektakel live hören, schauen Sie doch einmal bei Youtube vorbei. Ein kurzes Video zeigt den Aufbau in Aktion.

Fazit

Der ESP32 bietet beeindruckende Möglichkeiten. Er bringt viele I/​O-Schnittstellen mit, die man vor einigen Jahren noch extern an Mikrocontroller anschließen musste. In Kombination mit der leitenden Farbe lassen sich viele interessante Projekte aufbauen, der Fantasie sind dabei kaum Grenzen gesetzt.

(cla)