From 3f71a8ffc26d1ca1fde661156ddc6beaef0b80c2 Mon Sep 17 00:00:00 2001 From: Sebastian Preisner Date: Wed, 9 Feb 2022 10:18:38 +0100 Subject: [PATCH] =?UTF-8?q?scPower=20=C3=9Cbertragung=20erweitert:=20-=20A?= =?UTF-8?q?blaufplan=20hinzugef=C3=BCgt=20-=20Abnappung=20des=20Textes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Thesis/README.md | 12 +- static/Ablaufplan-Advertising.md | 8 + static/Ablaufplan-Advertising.pdf | Bin 0 -> 14759 bytes static/Ablaufplan-Advertising.svg | 410 ++++++++++++++++++++++++++++++ 4 files changed, 426 insertions(+), 4 deletions(-) create mode 100644 static/Ablaufplan-Advertising.md create mode 100644 static/Ablaufplan-Advertising.pdf create mode 100644 static/Ablaufplan-Advertising.svg diff --git a/Thesis/README.md b/Thesis/README.md index 9eea64f..358bbc0 100644 --- a/Thesis/README.md +++ b/Thesis/README.md @@ -370,15 +370,19 @@ Für den Versuchsmodus wird der Beacon in den Advertising-\ac{pdu} ``ADV_NONCONN Im Programmiermodus befindet sich der Beacon im Advertising-\ac{pdu} ``ADV_IND``. Dieser ist notwendig damit eine Verbindung mit dem Beacon zur erneuten Programmierung hergestellt werden kann. Auch der Advertising-Name des Beacons wird in diesem Modus mit ausgesendet um das Gerät leichter zu Identifizieren. -### scPower +### Verarbeitung der $scPower$ -Zur Umsetzung eines selbst korrigierenden Systems müssen die Bluetooth-Beacon sowohl als Scanner wie auch als Advertiser fungieren. Im Versuchsmodus scannen die Beacon hierzu, parallel zum Aussenden der Advertising-Pakete, nach solche Paketen von den anderen beiden Beacon. Abbildung \ref{fig:selfkorrekting} zeigt den Ablauf des selbst korrigierenden Systems bei dem Beacon 5b5b ein Advertising-Paket aussendet, welches von den Beacon 690f und 9d31 empfangen und verarbeitet wird. Die Beacon 690f und 9d31 speichern den \ac{rssi}-Wert des Empfangenen Pakets von Beacon 5b5b als $scPower$ in ihrem Advertising-Paket und senden dieses aus. Bei jedem erneuten empfang eines Advertising-Pakets von Beacon 5b5b wird die $scPower$ aktualisiert. +Zur Umsetzung eines selbst korrigierenden Systems müssen die Bluetooth-Beacon sowohl als Scanner wie auch als Advertiser fungieren. Im Versuchsmodus scannen die Beacon hierzu, parallel zum Aussenden der Advertising-Pakete, nach solche Paketen von den anderen beiden Beacon. Abbildung \ref{fig:selfcorrecting} zeigt schematisch den Ablauf des selbst korrigierenden Systems anhand der Beacon 5b5b und 690f. Der Beacon 5b5b sendet sein Advertising-Paket aus, welches von dem Beacon 690 empfangen und verarbeitet wird. Der Beacon 690f speichert den \ac{rssi}-Wert des Empfangenen Pakets von Beacon 5b5b als $scPower$ in seinem Advertising-Paket und senden dieses aus. Bei jedem erneuten empfang eines Advertising-Pakets von Beacon 5b5b wird die $scPower$ aktualisiert. + +![Ablauf des Advertisings am Beispiel von zwei Beacon. \label{fig:selfcorrecting}](../static/Ablaufplan-Advertising.pdf){ width=60% } ## Smartphone -Als Smartphone für die Messungen kommt ein OnePlus 7t mit Android-Betriebssystem in der Version 11 zum Einsatz. Für die Anwendungsentwicklung wird die \ac{ide} Android Studio verwendet. Als Programmiersprache wurde Kotlin gewählt und die Smartphone-Anwendung als Bluetooth-Scanner umgesetzt. Über die Benutzeroberfläche, zu sehen in Abbildung \ref{fig:appfrontend}, müssen 4 Eingabefelder vor dem Versuchsstart durch den Anwender ausgefüllt werden. Der Testname dient dazu, die Testdaten bei der Auswertung zu identifizieren, er dient auch als Dateiname für die gespeicherten Daten. In den weiteren drei Feldern wird die, für den durchgeführten Versuch, real gemessene Entfernung zwischen Smartphone und dem jeweiligen Beacon notiert. Sollten ein oder mehrere Beacon im durchgeführten Versuch keine Relevanz haben, so muss hier eine 0 eingetragen werden. Über den Start/Stop-Button am unteren Bildschirmrand der Anwendung wird die Aufzeichnung gestartet. Nach dem Start können die empfangenen Daten im oberen Bildschirmbereich zur Funktionsüberprüfung eingesehen werden. Diese Daten aktualisieren sich automatisch mit jedem empfangenen Advertising-Paket. +Als Smartphone für die Messungen kommt ein OnePlus 7t mit Android-Betriebssystem in der Version 11 zum Einsatz. Für die Anwendungsentwicklung wird die \ac{ide} Android Studio verwendet. Als Programmiersprache wurde Kotlin gewählt und die Smartphone-Anwendung als Bluetooth-Scanner umgesetzt. + +Über die Benutzeroberfläche, zu sehen in Abbildung \ref{fig:appfrontend}, müssen 4 Eingabefelder vor dem Versuchsstart durch den Anwender ausgefüllt werden. Der Testname dient dazu, die Testdaten bei der Auswertung zu identifizieren, er dient auch als Dateiname für die gespeicherten Daten. In den weiteren drei Feldern wird die, für den durchgeführten Versuch, real gemessene Entfernung zwischen Smartphone und dem jeweiligen Beacon notiert. Sollten ein oder mehrere Beacon im durchgeführten Versuch keine Relevanz haben, so muss hier eine 0 eingetragen werden. Über den Start/Stop-Button am unteren Bildschirmrand der Anwendung wird die Aufzeichnung gestartet. Nach dem Start können die empfangenen Daten im oberen Bildschirmbereich zur Funktionsüberprüfung eingesehen werden. Diese Daten aktualisieren sich automatisch mit jedem empfangenen Advertising-Paket. -![Screenshot der Smartphone-Testanwendung: Bluetooth Advertise Logger. \label{fig:appfrontend}](../static/appfrontend.jpg){ height=600px } +![Screenshot der Smartphone-Testanwendung: Bluetooth Advertise Logger. \label{fig:appfrontend}](../static/appfrontend.jpg){ height=400px } Beim Empfang eines Advertising-Pakets wird geprüft, ob das Paket von einem der Beacon versendet wurde. Hierzu wird zunächst nach der \ac{uuid} gefiltert und anschließend nach den \ac{mac}-Adressen der drei Beacon. Ist das Paket von einem der Beacon, so werden die Daten des Advertising-Pakets in einer Textdatei, mit dem Testnamen als Dateinamen, auf dem Smartphone abgelegt. Die Daten werden im \ac{csv}-Format gespeichert, dabei sind die einzelnen Spalten mit Hilfe eines Kommas voneinander getrennt. In Tabelle \ref{tab:datastore} werden die Spalten aufgelistet und ihr Inhalt kurz erläutert. diff --git a/static/Ablaufplan-Advertising.md b/static/Ablaufplan-Advertising.md new file mode 100644 index 0000000..f309168 --- /dev/null +++ b/static/Ablaufplan-Advertising.md @@ -0,0 +1,8 @@ +sequenceDiagram + participant 5 as 5b5b + participant 6 as 690f + loop alle 100 ms + 5 ->>+ 6: Advertising + 6 ->> 6: Speichern scPower 5b5b<br/> im Advertising Paket + 6 ->>- 5: Advertising + end \ No newline at end of file diff --git a/static/Ablaufplan-Advertising.pdf b/static/Ablaufplan-Advertising.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a1dfa0c966f594f4d53267c9ccd5a8973c0ec9c3 GIT binary patch literal 14759 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 literal 0 HcmV?d00001 diff --git a/static/Ablaufplan-Advertising.svg b/static/Ablaufplan-Advertising.svg new file mode 100644 index 0000000..9985928 --- /dev/null +++ b/static/Ablaufplan-Advertising.svg @@ -0,0 +1,410 @@ + + + + + + + + + + + + + + + + + + + + + + + + + 5b5b + + + + + + + 690f + + + + + + + + + + + + + + + + + + + + + + + + Advertising + + + + + Speichern scPower 5b5b + im Advertising Paket + + Advertising + + + + + + + + loop + [alle 100 ms] + + + + 5b5b + + + + 690f + +