fix des Beacons

main
Sebastian Preisner 3 years ago
parent 863f2c0b25
commit 1cdbaced28

@ -327,17 +327,17 @@ In den folgenden Abschnitten wird die verwendete Hardware sowie die Umsetzung be
## Beacon ## Beacon
Als Bluetooth-Beacons kommen Puck.js\footnote{https://www.puck-js.com/}, Abbildung \ref{fig:puck}, von der Firma Espruino\footnote{http://www.espruino.com/} zum Einsatz. Diese bieten, auf ihrer offenen Plattform, neben Bluetooth noch weitere Sensoren wie: ein Magnetometer zur Messung von Magnetfeldern, ein Accelerometer zur Messung von Beschleunigungen, ein Gyroscope zur Messung der Winkelgeschwindigkeit, einen Temperatursensor und vieles mehr. Durch diese Sensoren kann der Beacon auch für weitere Anwendungen eingesetzt werden, was jedoch nicht Bestandteil dieser Arbeit sein soll. Als Bluetooth-Beacons kommen Puck.js [@puckjs], Abbildung \ref{fig:puck}, der Firma Espruino zum Einsatz. Die Beacons basieren auf einer offenen Plattform und bieten neben Bluetooth noch weitere Sensoren wie: ein Magnetometer zur Messung von Magnetfeldern, ein Accelerometer zur Messung von Beschleunigungen, ein Gyroscope zur Messung der Winkelgeschwindigkeit, einen Temperatursensor und vieles mehr. Durch diese Sensoren kann der Beacon auch für weitere Anwendungen eingesetzt werden, was jedoch nicht Bestandteil dieser Arbeit sein soll.
![Puck.js inklusive Gehäuse. \label{fig:puck}](../static/puckjs.jpeg) ![Puck.js inklusive Gehäuse. \label{fig:puck}](../static/puckjs.jpeg)
Durch eine Programmierschnittstelle lässt sich der Beacon mit Hilfe von JavaScript programmieren. Beim Einstieg hilft eine Datenbank mit Beispielprogrammen sowie ein ausführlich dokumentiertes \ac{api} [@Ltd_2017]. Zur Programmierung wird der Beacon mittels Bluetooth mit einer \ac{ide} im Browser verbunden. Abbildung \ref{fig:ide} zeigt die \ac{ide}: links befindet sich die Konsole über die einzelne Befehle direkt auf dem Beacon ausgeführt werden können, rechts ist der Editor zu sehen, in diesem können die Befehle zu Programmen zusammengeführt werden. Der Programmcode kann sowohl temporär zum Testen auf den Beacon geladen werden, als auch nach dem Test im Flash des Beacon gespeichert werden. Bei der temporären Ausführung ist der Code nach einem Batteriewechsel nicht mehr auf dem Beacon. Diese Art der Entwicklung macht das Experimentieren mit den Bluetooth-Beacons sehr einfach. Durch eine Programmierschnittstelle lässt sich der Beacon mit Hilfe von JavaScript programmieren. Beim Einstieg hilft eine Datenbank mit Beispielprogrammen sowie ein ausführlich dokumentiertes \ac{api} [@Ltd_2017]. Zur Programmierung wird der Beacon mittels Bluetooth mit der Integrierten Entwicklungsumgebung (\acs{ide}) im Browser verbunden. Abbildung \ref{fig:ide} zeigt die \acs{ide}: links befindet sich die Konsole über die einzelne Befehle direkt auf dem Beacon ausgeführt werden können, rechts ist der Editor zu sehen, in diesem können die Befehle zu Programmen zusammengeführt werden. Der Programmcode kann sowohl temporär zum Testen auf den Beacon geladen werden, als auch nach dem Test im Flash des Beacons gespeichert werden. Bei der temporären Ausführung ist der Code nach einem Batteriewechsel nicht mehr auf dem Beacon. Diese Art der Entwicklung macht das Experimentieren mit den Bluetooth-Beacons sehr einfach.
![Screenshot der Espruino \ac{ide} im Chrome-Browser. \label{fig:ide}](../static/espruino_ide.png) ![Screenshot der Espruino \ac{ide} im Chrome-Browser. \label{fig:ide}](../static/espruino_ide.png)
### Modi ### Modi
Während der Versuche mit den Beacons wird ein hohes Advertising-Intervall benötigt um möglichst viele Advertising-Pakete in kurzer Zeit zu versenden. Dadurch lässt sich die Messgenauigkeit bei kurzer Messdauer erhöhen, führt jedoch zu einer kürzere Batterielebensdauer des Beacon. Um die Batterie nicht zu stark zu belasten, wurden zwei Modi entwickelt. Durch den integrierten Button, kann zwischen dem Versuchsmodus und dem Programmiermodus gewechselt werden. Zur Visualisierung in welchem Modus sich der Beacon befindet wird die eingebaute grüne und rote LED verwendet. Beim Wechsel vom Programmiermodus in den Versuchsmodus leuchtet die grüne LED auf und blinkt dann alle \SI{10}{\second}. Wird der Button erneut gedrückt, zeigt die rote LED das Beenden des Versuchsmodus an und der Beacon wechselt in den Programmiermodus zurück. Während der Versuche mit den Beacons wird ein hohes Advertising-Intervall benötigt um möglichst viele Advertising-Pakete in kurzer Zeit zu versenden. Dadurch lässt sich die Messgenauigkeit bei kurzer Messdauer erhöhen, führt jedoch zu einer kürzeren Batterielebensdauer des Beacons. Um die Batterie nicht zu stark zu belasten, wurden zwei Modi entwickelt. Durch den integrierten Button, kann zwischen dem Versuchsmodus und dem Programmiermodus gewechselt werden. Zur Visualisierung in welchem Modus sich der Beacon befindet wird die eingebaute grüne und rote LED verwendet. Beim Wechsel vom Programmiermodus in den Versuchsmodus leuchtet die grüne LED auf und blinkt dann alle \SI{10}{\second}. Wird der Button erneut gedrückt, zeigt die rote LED das Beenden des Versuchsmodus an und der Beacon wechselt in den Programmiermodus zurück.
### Identifizierung ### Identifizierung
@ -380,14 +380,14 @@ Beim Empfang eines Advertising-Pakets wird geprüft, ob das Paket von einem der
| --------- | ----------------------- | | --------- | ----------------------- |
| Time | Empfangszeitpunkt als Unix-Zeitstempel | | Time | Empfangszeitpunkt als Unix-Zeitstempel |
| Test | Benutzerdefinierter Name des durchgeführten Tests | | Test | Benutzerdefinierter Name des durchgeführten Tests |
| Device | \ac{mac}-Adresse des Beacon | | Device | \ac{mac}-Adresse des Beacons |
| RSSI | Vom Smartphone ermittelter \ac{rssi}-Wert | | RSSI | Vom Smartphone ermittelter \ac{rssi}-Wert |
| 5b5b_dist | gemessene Referenzentfernung zum Beacon 5b5b | | 5b5b_dist | gemessene Referenzentfernung zum Beacon 5b5b |
| 5b5b_rssi | Ermittelte $scPower$ des Beacon 5b5b | | 5b5b_rssi | Ermittelte $scPower$ des Beacons 5b5b |
| 690f_dist | gemessene Referenzentfernung zum Beacon 690f | | 690f_dist | gemessene Referenzentfernung zum Beacon 690f |
| 690f_rssi | Ermittelte $scPower$ des Beacon 690f | | 690f_rssi | Ermittelte $scPower$ des Beacons 690f |
| 9d31_dist | gemessene Referenzentfernung zum Beacon 9d31 | | 9d31_dist | gemessene Referenzentfernung zum Beacon 9d31 |
| 9d31_rssi | Ermittelte $scPower$ des Beacon 9d31 | | 9d31_rssi | Ermittelte $scPower$ des Beacons 9d31 |
: Spaltenübersicht der gespeicherten \ac{csv}-Datei bei aktiver Messung. \label{tab:datastore} : Spaltenübersicht der gespeicherten \ac{csv}-Datei bei aktiver Messung. \label{tab:datastore}
@ -407,7 +407,7 @@ Im letzten Schritt werden überflüssige Spalten gelöscht. Tabelle \ref{tab:dat
| --------- | ----------------------- | | --------- | ----------------------- |
| Time | Empfangszeitpunkt als Unix-Zeitstempel | | Time | Empfangszeitpunkt als Unix-Zeitstempel |
| Test | Benutzerdefinierter Name des durchgeführten Tests | | Test | Benutzerdefinierter Name des durchgeführten Tests |
| Device | \ac{mac}-Adresse des Beacon | | Device | \ac{mac}-Adresse des Beacons |
| RSSI | Vom Smartphone ermittelter \ac{rssi}-Wert | | RSSI | Vom Smartphone ermittelter \ac{rssi}-Wert |
| scPower | Ermittelter \ac{rssi}-Referenzwert der benachbarten Beacon auf \SI{1}{\meter} | | scPower | Ermittelter \ac{rssi}-Referenzwert der benachbarten Beacon auf \SI{1}{\meter} |
| deviceDistance | Physisch ermittelte Entfernung zwischen dem Beacon und Smartphone | | deviceDistance | Physisch ermittelte Entfernung zwischen dem Beacon und Smartphone |
@ -518,7 +518,7 @@ Bei der Messung des Winkeleinfluss soll untersucht werden, wie sich die Lage der
| BeaconBeaconRotation270 | 0 | 270 | - | | BeaconBeaconRotation270 | 0 | 270 | - |
: Versuchsübersicht - Untersuchung des Einfluss verschiedener Rotationswinkel bei \SI{1}{\meter} Entfernung auf den \ac{rssi}-Wert. \label{tab:versuchstabelle-rotation} : Versuchsübersicht - Untersuchung des Einfluss verschiedener Rotationswinkel bei \SI{1}{\meter} Entfernung auf den \ac{rssi}-Wert. \label{tab:versuchstabelle-rotation}
![Verteilung der Rotationswinkel am Beispiel des Beacon. \label{fig:puck-rotation}](../static/BeaconRotation.pdf){ width=60% } ![Verteilung der Rotationswinkel am Beispiel des Beacons. \label{fig:puck-rotation}](../static/BeaconRotation.pdf){ width=60% }
#### Smartphone Rotation {-} #### Smartphone Rotation {-}

Loading…
Cancel
Save