Kapitel Beacon umstrukturiert

pull/19/head
Sebastian Preisner 2 years ago
parent 1e560ec515
commit 89fac4fe82

@ -100,7 +100,7 @@ Bei der Laufzeitdifferenzmessung, auch bekannt als \ac{tdoa}, wird die Differenz
#### Signalstärkemessung {-}
Die Messung der Signalstärke, auch bekannt als \ac{rss} ist ein gängiges Verfahren bei der Lokalisierung mithilfe von Funksystemen [@Chen_2019; @Davidson_2017a; @Ye_2019]. Hierbei wird die Empfangsleistung und damit die Dämpfung des Signals am Empfänger gemessen. Dabei hängt die Signaldämpfung unter anderem von der Distanz zwischen Sender und Empfänger ab. Zur Berechnung der Entfernung ist die Kenntnis über den mathematischen Zusammenhang zwischen Entfernung und Signaldämpfung notwendig. Diese Ausbreitungsmodelle sind für viele Szenarien bekannt [@Strang_2008_BOOK].
Die Messung der Signalstärke, auch bekannt als \ac{rss} ist ein gängiges Verfahren bei der Lokalisierung mithilfe von Funksystemen [@Chen_2019; @Davidson_2017a; @Ye_2019]. Hierbei wird die Empfangsleistung und damit die Dämpfung des Signals am Empfänger gemessen. Die Signaldämpfung hängt dabei unter anderem von der Distanz zwischen Sender und Empfänger ab. Zur Berechnung der Entfernung ist die Kenntnis über den mathematischen Zusammenhang zwischen Entfernung und Signaldämpfung notwendig. Diese Ausbreitungsmodelle sind für viele Szenarien bekannt [@Strang_2008_BOOK].
### Fazit
@ -263,43 +263,24 @@ In den folgenden Abschnitten wird die verwendete Hardware sowie die Umsetzung be
## Beacon
Als Bluetooth-Beacon kommen Puck.js\footnote{https://www.puck-js.com/} 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-Beacon kommen Puck.js\footnote{https://www.puck-js.com/} 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.
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} [@ http://www.espruino.com/Reference#software] <--- Jabref!!!. Die Programmierung findet über eine Online \ac{ide}, die in Abbildung \ref{fig:ide} zu sehen ist, statt und macht das Experimentieren mit den Bluetooth-Beacon 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]. Die Programmierung wird mit Hilfe einer \ac{ide}, Abbildung \ref{fig:ide}, im Browser vorgenommen und macht das Experimentieren mit den Bluetooth-Beacon sehr einfach.
Zur Identifikation der Beacon wird eine Einzigartige Universelle Identifikation benötigt. Espruino bietet eine Reservierte 16 bit \ac{uuid} ``0x0590`` für die Entwicklung von Anwendung mit ihrer Hardware. Diese \ac{uuid} wird zur Filterung der Advertising-Pakete im Scanner verwendet.
Zur Umsetzung eines Selbst korrigierenden Systems müssen die Bluetooth-Beacon sowohl als Scanner wie auch als Beacon fungieren. Beacon 1 sendet dabei ein Advertising-Paket welches Beacon 2 und 3 empfängt und verarbeitet. Dabei wird die $txPower$, also der \ac{rssi}-Wert beim Empfänger ausgelesen und in das Advertising-Paket geschrieben. Nun steht im Advertising-Paket von Beacon 2 und 3 jeweils die $scPower$, also der \ac{rssi}-Wert auf \SI{1}{\meter} Entfernung von Beacon 1. Der Ablaufplan In Abbildung \ref{fig:selfkorrekting-ablauf} verdeutlicht die Funktionsweise eines Beacon.
Zur Umsetzung eines Selbst korrigierenden Systems müssen die Bluetooth-Beacon sowohl als Scanner wie auch als Beacon fungieren. Beacon 1 sendet dabei ein Advertising-Paket welches Beacon 2 und 3 empfängt und verarbeitet. Dabei wird die $txPower$, also der \ac{rssi}-Wert des Beacon beim Empfänger ausgelesen und in das Advertising-Paket geschrieben. Nun steht im Advertising-Paket von Beacon 2 und 3 jeweils die $scPower$, also der \ac{rssi}-Wert auf \SI{1}{\meter} Entfernung von Beacon 1. Dieser Wert wird nun von Beacon 2 und 3 Advertised und beim Empfang neuer Pakete von Beacon 1 aktualisiert. Der Ablaufplan In Abbildung \ref{fig:selfkorrekting-ablauf} verdeutlicht die Funktionsweise eines Beacon.
```js
function updateAdvertising(device) {
// our data - all 0 for nothing,
// or RSSI + 6 bytes address
var id = device.id.substr(12, 5).replace(':','');
Ein Advertisingpaket der Beacons ist 5 byte groß. Es setzt sich aus der 16 bit langen \ac{uuid} ``0x0590`` und 3 byte für die Übertragung der $scPower$ zusammen. Die $scPower$ wird dabei in einer festen Reihenfolge abgespeichert und Übertragen. Für einen produktiven Einsatz sollten diese Werte jedoch gekennzeichnet werden. Hierfür sind weitere 26 byte in dem Advertising-Paket frei.
if (!scanIds.includes(id)) return;
## Smartphone
data[scanIds.indexOf(id)] = device.rssi * -1;
NRF.setAdvertising({}, {
showName: false,
connectable: false,
scannable: false,
interval: 100, // Minimal intervall for not connactable devices
manufacturer: be.manufacturer,
manufacturerData: data
});
// For debugging:
// console.log("Found Device: " + id);
}
```
## Auswertung
Die Auswertung der Testmessungen wurd auf dem Computer und nicht auf dem Smartphone durchgeführt. Dies erlaubt es auch im Nachhinein, mit ein und der selben Messung unterschiedlichste Modelle zu betrachten. Außerdem müssen Messungen nicht wegen eventueller Programmierfehler wiederholt werden.
## Software
### Android App
### Bluetooth Beacon
Als Programmiersprache kommt Python zum Einsatz. Python bietet eine Vielzahl an Bibliotheken zur Arbeit mit großen Datenmengen und zur wissenschaftlichen Auswertung. Tabelle \ref{tab:libraries} zeigt eine Auflistung der eingesetzten Bibliotheken und eine kurze Beschreibung.
# Testaufbau

@ -37,6 +37,9 @@ acronym:
- id: id
short: ID
long: Identifikator
- id: ide
short: IDE
long: Integrierte Entwickungsumgebung
- id: ieee
short: IEEE
long: Institute of Electrical and Electronics Engineers

Loading…
Cancel
Save