Sound und akustische Signale für deine Projekte mit Arduino und ESP32

Es gibt sehr viele Möglichkeiten um mit den Arduino und ESP32, akustische Signale oder Sound auszugeben. Je nach Anforderung sind unterschiedliche Voraussetzungen erforderlich was die benötigte Hard und Software anbetrifft.
Benötigt man lediglich ein Warnsignal, reicht ein Summer aus der an einem digitalen Arduino Pin angeschlossen ist.
Soll aber gesprochener Text zu hören sein, wäre ein Lautsprecher der ein analoges Signal erwartet die bessere Wahl. Damit das aber ein Entwicklungsboard ausgeben kann, ist ein Digital-Analog Konverter (DAC) notwendig. Bei einer selbst erzeugten Microfonaufnahme einen Analog-Digital Konverter (ADC).

Und soll etwa eine mp3-Datei abgespielt werden muss diese ja auch noch Decodiert werden.

Wie ein paar einfache Lösungen aussehen und was da sonst noch geht, möchte ich hier und in dem Video einmal vorstellen.







Wie gesprochene Worte zu einer MP3-Datei werden

  1. Das Mikrofon nimmt die gesprochenen Worte als analoge Schallwellen auf.
  2. Ein Analog-Digital-Wandler (ADC) wandelt die analogen Schallwellen in digitale Audiodaten um.
  3. Die digitale Audiodaten werden von einem Codec komprimiert und als MP3-Datei gespeichert.
  4. Wenn die MP3-Datei abgespielt wird, wird der Codec verwendet, um die digitalen Audiodaten zu decodieren und in ein PCM-Format umzuwandeln.
  5. Ein Digital-Analog-Wandler (DAC) wandelt die PCM-Audiodaten in analoge Schallwellen um.
  6. Die Schallwellen werden von einem Lautsprecher wiedergegeben und können von unserem Ohr gehört werden.

Wie eine MP3-Datei in deinem Ohr hörbar wird

Eine MP3-Datei ist eine komprimierte digitale Audio-Datei, die aus vielen Bits besteht. Diese Bits werden von einem Codec decodiert, der die digitalen Audiodaten in ein PCM-Format (Pulse Code Modulation) umwandelt. PCM ist eine Methode, um analoge Audio-Signale in digitale Signale umzuwandeln.

Die PCM-Audiodaten werden dann an einen Digital-Analog-Wandler (DAC) gesendet, der die digitalen Signale in analoge Schallwellen umwandelt. Diese Schallwellen werden dann von einem Lautsprecher wiedergegeben und können von unserem Ohr gehört werden.

Damit die digitalen Audiodaten korrekt vom Codec zum DAC übertragen werden können, wird das i2S-Protokoll verwendet. Das i2S-Protokoll ist ein serieller Kommunikationsstandard, der speziell für die Übertragung von Audio-Daten entwickelt wurde. Es ermöglicht eine präzise Übertragung der Audio-Daten zwischen den Geräten mit einer geringen Latenz und einem geringen Rauschen.

Das i2S-Protokoll überträgt die digitalen Audiodaten als serielle Bitstrom, wobei das linkskanäle- und das rechtskanäle-Signal getrennt übertragen werden, um eine bessere Trennung und Qualität zu erreichen. Zusätzlich werden in den Daten einige Steuerinformationen eingebettet, wie beispielsweise die Sampling-Frequenz oder die Auflösung der Daten, um sicherzustellen, dass die Daten korrekt und ohne Verzögerung vom Codec zum DAC übertragen werden.

Zusammenfassend: Eine MP3-Datei wird vom Codec in digitale Audiodaten umgewandelt, die dann vom DAC in analoge Schallwellen umgewandelt werden. Das i2S-Protokoll wird verwendet, um die digitalen Audiodaten zwischen dem Codec und dem DAC zu übertragen, damit sie korrekt und ohne Verzögerung übertragen werden.


Die I²S-Schnittstelle

I2S (Inter-IC Sound) ist ein elektrischer serieller Bus-Interface-Standard. Das i2s Protokoll ist ein Weg, wie Computer und andere Geräte miteinander sprechen können, um Musik oder andere Töne zu übertragen.

Wenn man Musik aufnimmt oder wiedergibt, muss der Computer die Töne in digitale Daten umwandeln, die er verarbeiten kann. Das i2s Protokoll ist ein Weg, diese digitalen Daten zwischen verschiedenen Geräten zu übertragen, damit sie zusammenarbeiten können.

Das i2s Protokoll verwendet mindestens drei Leitungen, um die digitalen Daten zu übertragen: eine für das Takt-Signal, eine für das Link-Signal (Stereo R und L) und eine für das Daten-Signal.
Das Takt-Signal (Clock) ist wie ein Dirigent, der den Rhythmus angibt, während das Link-Signal (Kanal) die verschiedenen Geräte synchronisiert, um sicherzustellen, dass sie im gleichen Tempo arbeiten.
Das Daten-Signal enthält die eigentlichen Ton-Daten, die übertragen werden.

Das i2s Protokoll ist wichtig für die Audioverarbeitung und wird oft in Musikinstrumenten, Audioverstärkern und anderen Geräten verwendet, die Töne übertragen müssen. Es ist eine effiziente und zuverlässige Möglichkeit, digitale Audio-Daten zwischen verschiedenen Geräten zu übertragen.

Entwicklungsboards die eine I2S Schnittstelle anbieten sind zum Beispiel der Arduino MKR Zero, Arduino MKR1000 WiFi, ESP8266, ESP32 und der Raspberry Pi Pico RP2040.
Boards mit dem ATmega328P Mikrocontroller, wie der Arduino Uno oder Arduino Nano können das nicht.


Digital Analog Wandler

Ein DAC (Digital-Analog-Wandler) wandelt digitale Daten, die aus Einsen und Nullen bestehen, in analoge Wellenformen um, die von Lautsprechern oder anderen analogen Geräten wiedergegeben werden können.

Digitale Daten werden in Computern und anderen digitalen Geräten in binärer Form gespeichert, das heißt als eine Abfolge von Einsen und Nullen. Zum Beispiel können digitale Audio-Daten als eine Abfolge von Einsen und Nullen gespeichert werden, die den Verlauf der Audio-Wellenform repräsentieren.

Der DAC ist dann in der Lage, diese digitalen Daten in eine analoge Wellenform umzuwandeln, die von einem Lautsprecher oder anderen analogen Geräten wiedergegeben werden kann. Der DAC erzeugt eine Spannung, die je nach Wert der digitalen Daten variiert, und erzeugt so eine analoge Wellenform, die dem Originalton ähnlich ist.


Codieren und Decodieren von Audio-Formaten wie zB. MP3

Das Codieren und Decodieren (Codec) von Audio-Formaten wie MP3 ist ein Prozess, bei dem digitale Audio-Daten in ein spezielles Format codiert werden, das den Ton bei möglichst geringer Dateigröße komprimiert. Beim Decodieren werden die komprimierten Daten wieder in die ursprüngliche Form der Audiodaten zurück gewandelt.

Das Codieren von Audio-Formaten wie MP3 basiert auf der Entfernung von hörbaren und nicht wichtigen Audiosignalen und der Verwendung von Techniken zur effektiven Komprimierung der verbleibenden Audiosignale. Hierzu werden verschiedene Techniken verwendet, wie z.B. psychoakustische Modellierung, Huffman-Codierung und andere Algorithmen.

Psychoakustische Modellierung basiert auf der Tatsache, dass das menschliche Ohr einige Audiosignale nicht hören kann, wenn sie von anderen, lauteren Audiosignalen maskiert werden. Hierdurch können Komprimierungsalgorithmen die Informationen aus dem Audiosignal entfernen, die von maskierenden Signalen überlagert werden und somit die Dateigröße reduzieren.

Huffman-Codierung ist ein weiterer Algorithmus, der zur Komprimierung von Audiodaten verwendet wird. Hierbei wird eine spezielle Methode zur Reduzierung der Bitrate verwendet, bei der häufig vorkommende Sequenzen von Daten durch kürzere Codewörter ersetzt werden.

Beim Decodieren von Audio-Formaten wie MP3 wird der Prozess der Komprimierung rückgängig gemacht, indem die komprimierten Daten wieder in die ursprüngliche Form der Audiodaten zurückgewandelt werden. Hierzu werden spezielle Algorithmen und Decoder verwendet, die die Codierungsschritte umkehren und die ursprünglichen Audio-Daten wiederherstellen.

Insgesamt erfordert das Codieren und Decodieren von Audio-Formaten wie MP3 ein hohes Maß an Verarbeitungsleistung und ist oft eine komplexe Aufgabe. Viele Mikrocontroller verfügen nicht über die notwendige Verarbeitungsleistung, um diese Aufgabe alleine zu bewältigen, daher werden oft zusätzliche Module benötigt die beide der Audio-Verarbeitung unterstützen.


Pulse Code Modulation

PCM steht für „Pulse Code Modulation“ und ist eine Methode zur digitalen Codierung von analogen Signalen, wie zum Beispiel Sprache oder Musik.

PCM Beispiel mit 4 Bit

Bei PCM wird das analoge Signal in kleine Abschnitte aufgeteilt und jedes dieser Abschnitte wird in der Regel durch einen Analog-Digital-Wandler in eine binäre Zahl umgewandelt. Diese Zahlenfolge wird dann als digitales Signal gespeichert oder übertragen.

Das digitale Signal kann später wieder in ein analoges Signal umgewandelt werden, indem die binären Zahlen zurück in analoge Signale umgewandelt werden.

PCM wird häufig bei der Aufzeichnung von Sprache und Musik verwendet, da es eine genaue und verlustfreie Übertragung des Signals ermöglicht.


, , ,