Prof. J. Walter - Informationstechnik, Mikrocomputertechnik, Digitale Medien Ausgewählte Lösung
Hochschule Karlsruhe Logo Informationstechnik Labor
Swimming Pixel - Mikro Funkstrecken
Wintersemester 20/21
fejo1020@hs-karlsruhe.de
esma1014@hs-karlsruhe.de

Ausgewählte Lösung

In diesem Kapitel wird die finale Umsetzung des Projekts Swimming Pixel - Mikro Funkstrecken vorgestellt. Alle weiteren Details und genauere Beschreibungen können dem Kapitel der Konzeptentwicklung entnommen werden.


Drahtlose Verbindung

Es wird das WiFi-Modul des ESP32 für eine WiFi-Verbindung über TCP/IP benutzt. Ein Router stellt ein WiFi-Netzwerk bereit, in das sich die Pixel und der PC einwählen. Darüber wird sowohl dem Pixel und dem PC jeweils das Senden und Empfangen von Daten ermöglicht.

Netzwerkprotokoll

Verwendet wird das MQTT-Protokoll, welches sich für das komfortable Übertragen und Abrufen von Daten  anbietet. Als etablierter Standard für das Internet of Things (IoT) lässt es sich nutzen, um die hierfür notwendige Kommunikation zwischen dem Host und den Clienten auszuführen. Für das Projekt „Swimming Pixel“ ist dies von Bedeutung, da das Netzwerkprotokoll auch mit einer Anzahl von 1024 Pixel und somit einer hohen Datenmenge funktionieren soll.

 

Latenzzeitbestimmung

Die zeitlich veränderliche Latenzzeit hat große Auswirkungen auf die Positionsbestimmung des Pixels. Um die Latenzzeit zu bestimmen, werden daher verschiedene Optionen geprüft. Die Latenzzeit kann im Wesentlichen auf zwei Ursachen zurückgeführt werden. Zum einen durch die verzögerte Audio-Ausgabe und zum anderen durch die Netzwerkübertragung mittels MQTT. Die Latenzzeit durch die Audio-Übertragung beträgt unter Windows 10 ca. 1,3ms (=0,442 m) und wird daher vorerst nicht weiter betrachtet. Die Latenzzeit der Übertragung durch das Netzwerkprotokoll ist für den größten Anteil der Streuung verantwortlich, welche zu einer Positionsabweichung von bis zu +-100m führen kann.

Über eine Auswertung der Latenzzeit durch den PC wird der durch die Netzwerkübertragung entstandene Zeitverzug für jede Ausführung der Positionsbestimmung neu ermittelt. Somit lässt sich die Positionsberechnung genauer ausführen, da die Pixel sonst mit unbekannter Zeitdifferenz (abhängig von der variablen Latenzzeit) verfrüht mit der Audioaufnahme starten würde. Es würden sich dadurch fehlerhafte Positionswerte ergeben.

 

Offsetkorrektur

Da es ablaufbedingt zu einem konstanten Fehler bei der Entfernungsmessung eines Pixels zu den beiden Lautsprechern kommt, muss dieser Fehler korrigiert werden, um einen Offset der errechneten Position des Pixels zu vermeiden. Bestimmt wird dieser Fehler durch das Nullpunktprinzip. Dafür wird das Mikrofon an einer definierten Position platziert, und die Positionsmessung durchgeführt. Die Differenz zwischen errechneter Position und tatsächlicher Position kann dann einmalig als Laufzeitdifferenz umgerechnet werden und als gespeicherter Wert in alle folgenden Berechnungen der Entfernung mit einfließen. Da die Messwerte trotz Latenzzeitkorrektur noch eine zufällige Komponente enthalten, werden sie gemittelt. Durch den bekannten Mittelwert kann durch die Offsetkorrektur die Streuung um etwa 90 m verschoben werden und somit eine Streuung um den realen Positionswert der Pixel erzielt werden.

 

Die Hardware

Da die Hardware-Bestellung sich außerplanmäßig verzögerte, konnte der vorgesehene Aufbau aus Zeitgründen nicht mehr umgesetzt werden. Weil dadurch Tests mit der geplanten Hardware folglich nicht mehr möglich waren, wird im Folgenden zwischen dem geplanten und umgesetzten Hardware-Aufbau unterschieden. Der tatsächlich umgesetzte Hardware-Aufbau dient dazu das Konzept auch ohne die geplante Hardware zu überprüfen und durch überlegte Ansätze erste softwareseitige Verbesserungen zu erzielen.

 

geplanter Hardware-Aufbau

Der PC/Laptop gibt ein Chirp-Signal an dessen interne Soundkarte. Diese kann über ein Klinken-Klinken-Steckerkabel das Signal an einen Audio-Verstärker übermitteln. Der Verstärker wird dabei durch einen entsprechenden 3,5mm Klinkenstecker durch einen 12V-LiPo-Akku versorgt und gibt über zwei 2,5mm2-Lautsprecherkabel das verstärkte Analogsignal an die Lautsprecher weiter. Die verwendeten Lautsprecher sind Hochtöner und können Frequenzen bis 23kHz erzeugen. Das ausgewählte Mikrofon ist in der Lage Ultraschall mit bis zu 20kHz zu empfangenen und wandelt durch den eingebauten ADC die akustischen Schallwellen mit einer Samplingrate von 44100 Hz in Digitalsignale um. Die Digitalsignale werden im Anschluss über den  I2S-Bus an den ESP32 übertragen. Durch die Verwendung des I2S-Buses und den DMA-Buffern wird der Prozessor auf dem ESP32 entlastet, da keine AD-Wandlung auf dem ESP32 nötig ist. Das WiFi-Modul auf dem ESP32 und das integrierte WiFi-Modul im Laptop werden zur drahtlosen Datenübertragung verwendet. Ein Router stellt das Netzwerk bereit, über das das MQTT-Protokoll ausgeführt wird. Der Aufbau ist unter Blockschaltbild zu finden.

umgesetzter Hardware-Aufbau

Der PC/Laptop gibt ein Chirp-Signal an dessen interne Soundkarte. Diese kann mittels eines Klinken-Klinken-Steckerkabels das Signal über den Aux-Anschluss an einen Audio-Verstärker einer Stereo-HiFi-Anlage übermitteln. Der Verstärker ist dabei in der HiFi-Anlage integriert und wird über ein Netzteil (230V AC-Eingangsspannung) versorgt. Er gibt über zwei 2,5mm2-Lautsprecherkabel das verstärkte Analogsignal an die Lautsprecher weiter. Die verwendeten Lautsprecher besitzen Hoch-, Mittel, und Tieftöner und können durch die interne Ansteuerung durch die HiFi-Anlage Frequenzen bis zu 20 kHz erzeugen. Das ausgewählte Mikrofon ist in der Lage Ultraschall mit bis zu 20kHz zu empfangenen und wandelt durch den eingebauten ADC die akustischen Schallwellen mit einer Samplingrate von 44100 Hz in Digitalsignale um. Die Digitalsignale werden im Anschluss über den  I2S-Bus an den ESP32 übertragen. Durch die Verwendung des I2S-Buses und den DMA-Buffern wird der Prozessor auf dem ESP32 entlastet, da keine AD-Wandlung auf dem ESP32 nötig ist. Das WiFi-Modul auf dem ESP32 und das integrierte WiFi-Modul im Laptop werden zur drahtlosen Datenübertragung verwendet. Ein Router stellt das Netzwerk bereit, über das das MQTT-Protokoll ausgeführt wird.

Abb.: Blockschaltbild des umgesetzten Testaufbaus

Durch den im oberen Blockschaltbild gezeigten Aufbau konnte mit privaten Hardware-Ressourcen Tests innerhalb des Projekt-Zeitrahmens durchgeführt werden.

Abb.: Versuchsaufbau

Software (PC)

In der Programmiersprache Python wird ein Programm für den PC erstellt, wodurch dieser über das Netzwerkprotokoll MQTT mit dem ESP32 auf dem Pixel kommunizieren kann. Zudem kann der PC durch das Programm das Chirp-Signal als Stereo-Audio-Signal erzeugen und an den Verstärker übermitteln. Die Audio-Aufnahme vom Mikrofon auf den Pixeln wird über das lokale Netzwerk auf den PC übertragen. Durch die Kreuzkorrelation wird der Laufzeitunterschied der zwei Lautsprechersignale berechnet. Nach den aufgestellten Formeln zur Bestimmung der Lateration, wird dadurch die Pixelposition errechnet. Über die Berechnung der Latenzzeit durch die Antwortverzögerung des Pixels mittels eines Echo-Flags , kann die zufällige Latenzzeit als Einflussgrößen näherungsweise herausgerechnet werden. Die Ortung wird dadurch genauer. Das Programm gibt die Ergebnisse als Konsolenausgabe aus.

 

Software (Pixel)

Als Mikrocontroller auf dem Pixel wird ein ESP32 verwendet. Dieser wird mit der Programmiersprache C programmiert. Die digitalisierten Signale werden über einen I2S-Bus an den ESP32 übertragen. Über eine WiFi-Bibliothek wird dem Pixel die Ansteuerung des integrierten WiFi-Modul ermöglicht. Zudem wird die Kommunikation über MQTT implementiert, sodass der Pixel das durch den PC gesendete Flag zur Signalisierung des Aufnahmestarts der Audioaufzeichnung und die drahtlose Datenübermittlung ausführen kann. Weiterhin gibt der Pixel über das MQTT-Protokoll nach Erhalt des Start-Flags ein Echo-Flag an den PC zurück, um die Latenzzeit der Netzwerkübertragung zu bestimmen.

 

Das Chirp Signal

Zur Ortung wird ein Chirp-Signal eingesetzt, welches sich im zeitlichen Verlauf in der Frequenz und der Amplitude  ändert.  Da aufgrund der verzögerten Bestellung keine Hochtöner zur Verfügung stehen, wird das Chirp-Signal mit Frequenzen im hörbaren Bereich erzeugt. Nachfolgend sie die verwendeten Parameter gelistet:

Signalparameter (Chirp):
Startfrequenz = 3000 Hz
Endfrequenz = 400 Hz
Startamplitude = 0,8
Endamplitude = 0,1
Chirpdauer = 0,1s

Versuche mit dem umgesetzten Hardware-Aufbau

Es wurden zwei Versuche zur Verbesserung der Software-Parameter durchgeführt und im Folgenden dokumentiert. Die Entfernung ist jeweils zum Koordinatenursprung angegeben. Dieser liegt, wie in der Skizze Versuchsaufbau beschrieben, im linken Lautsprecher.

 

Versuch 1 - Versuchsbeschreibung:

Es wird das Mikrofon stellvertretend für den Pixel an den Koordinaten (x = 0,0m / y = 2,0m ) platziert. Diese werden im Folgenden als x-Koordinate-Soll, sowie y-Koordinate-Soll bezeichnet. Anschließend wird die Ortung mehrfach durchgeführt, um Abweichungen festzustellen. In diesem Versuch wird ohne Offsetkorrektur, bei teilweiser Latenzzeitkorrektur, 20 mal gemessen. Die Lautsprecher stehen 1 Meter zueinander entfernt.

Auswertung: Die Koordinaten-Werte schwanken in geringem Maße, da die Latenzzeit noch nicht genau ermittelt wird. Außerdem besitzen die Koordinaten einen hohen Offset gegenüber den Soll-Koordinaten. Dieser lässt sich nun unter der Annahme eines konstanten Mittelwertes bestimmen.

Weiteres Vorgehen zur Auswertung:

Es wird aus den zuvor aufgenommenen Werten der arithmetische Mittelwert unter der vordefinierten Ausnahme von Werten getroffen. Es werden dabei jeweils 4 Wertepaare für die x- und y-Koordinate ausgenommen, deren Werte einmal die 2 kleinsten und die 2 größten Werte der x- und y Koordinaten (verglichen zu den anderen x- und y- Koordinaten im Versuch) beinhalten.

Auswertung: Durch den Mittelwert wird für die x-Koordinate = -9,7m und die y-Koordinate = 89,7m ermittelt. Nach Pythagoras lässt sich damit die Entfernung zum Ursprung mit 89,8m berechnen. Die Differenz zu der tatsächlichen Entfernung von 2,0 m beträgt damit 87,8m. Was einem Laufzeitunterschied von 0,258 Sekunden entspricht, dieser Wert entspricht dem Offsetkorrekturwert, der nun in der Software berücksichtigt werden kann.

Versuch 2 - Versuchsbeschreibung:

Es wird das Mikrofon an den Koordinaten ( y = 2m / x = 0,5m ) platziert. Diese werden im Folgenden als y-Koordinate_Soll sowie x-Koordinate-Soll bezeichnet. Anschließend wird die Ortung mehrfach durchgeführt, um Abweichungen festzustellen. In diesem Versuch wird mit Offsetkorrekturwert=0,258 Sekunden 20 mal die Position berechnet.

Auswertung:

Die Streuung der Messwerte liegt damit schon deutlich besser an den tatsächlichen Koordinaten des Mikrofons. Allerdings gibt es noch einzelne Ausreiser, die eine Mittelwertberechnung stark verfälschen würden.

Weitere Auswertung:

Es werden für die Mittelwertberechnung jeweils 4 Wertepaare für die x- und y-Koordinate nicht berücksichtigt, deren Werte einmal die 2 kleinsten und die 2 größten Werte der x- und y Koordinaten (verglichen zu den anderen x- und y- Koordinaten im Versuch) beinhalten.

Auswertung: Es ist ersichtlich, dass die Werte um die Soll-Koordinaten schwanken. Der berechnete Mittelwert beträgt für die x-Koordinate=0,3m und die y-Koordinate=2,3m. Damit konnte gezeigt werden, dass der Versuchsaufbau prinzipiell eine genaue Ortung zulässt. Die bestehende Abweichung im Mittelwert entsteht über dessen ungenaue Berechnung. Für eine genauere Bestimmung bräuchte man eine größere Stichprobe. Im Weiteren müssen nun die zufälligen Einflussfaktoren genauer ermittelt werden. Dazu gehört auch die genauere Ermittlung des zufälligen Einflusses durch die Latenzzeit. Darüber kann man auch mit einer geringen Stichprobe einen konstanten Mittelwert bestimmen, wodurch auch die Offsetkorrektur genauer durchgeführt werden kann.

 

Zusammenfassung

Abschließend lässt sich sagen, dass die akkustische Positionsbestimmung nach einigen Tests und Anpassungen der Software-Parameter gute Ergebnisse liefert. Die Position der Pixel kann bis auf wenigen Ausnahmen zuverlässig und auf wenige Zentimeter genau bestimmt werden. Es konnte somit wesentlich zu einem Fortschritt für die akustische Positionsbestimmung der „Swimming-Pixel“ beigetragen werden. Dazu gehört die Realisierung der Kommunikation zwischen den Pixel und dem PC im Zusammenspiel mit der Ortung und der Tonaufnahme des Mikrofons mittels des I2S-Buses. Darüber hinaus konnten Einflussgrößen auf die Positionsbestimmungen erkannt und Ansätze zur Fehlerkorrektur umgesetzt werden. Hierdurch ließ sich die Genauigkeit der Positionsbestimmung erhöhen. Durch die Berücksichtigung weiterer Fehlerkorrekturen oder gar einer zeitlichen Synchronisation der Pixel und des Hosts, kann die Genauigkeit der Positionsbestimmung noch weiter gesteigert werden.

Die bestellte Hardware kann entsprechend der Beschreibung in der Dokumentation durch eine nachfolgende Gruppe aufgebaut und getestet werden. Unsere Arbeit bietet damit eine Grundlage für eine Weiterentwicklung der akustischen Ortungsmöglichkeit.

 




  Mit Unterstützung von Prof. J. Walter Wintersemester 20/21