diff --git a/Thesis/README.md b/Thesis/README.md index 6845288..b0e38a2 100644 --- a/Thesis/README.md +++ b/Thesis/README.md @@ -155,7 +155,7 @@ Durch die stromsparenden Eigenschaften von \ac{ble} wird es häufig auch in klei Ein Advertising-Paket enthält 31 Bytes, die vom Nutzer frei definiert werden können. Dabei wird es jeweils auf allen drei Advertising-Kanälen versendet. Das Senden benötigt dabei weniger als \SI{10}{\milli\second}. Das Sendeintervall kann zwischen \SI{20}{\milli\second} und \SI{10.24}{\second} eingestellt werden. Tabelle \ref{tab:adpackettype} zeigt die Advertising-Pakettypen; bei Typen die keine Verbindung zulassen ist das minimal mögliche Sendeintervall auf \SI{100}{\milli\second} beschränkt [@BluetoothSIG_2014, Vol. 2 Part E S. 968 und Vol. 3 Part C S. 389]. -| Advertising PDU | Maximale adv Datenlänge | Scan Request Erlaubt | Verbindung Erlaubt | +| Advertising \ac{pdu} | Maximale adv Datenlänge | Scan Request Erlaubt | Verbindung Erlaubt | | ---------------- | ------------- | ----------- | -------- | | ADV_IND | 31 bytes | ja | ja | | ADV_DIRECT_IND | 6 bytes | nein | ja | @@ -163,6 +163,8 @@ Ein Advertising-Paket enthält 31 Bytes, die vom Nutzer frei definiert werden k | ADV_NONCONN_IND | 31 bytes | nein | nein | : Übersicht zu Advertising Pakettypen. \label{tab:adpackettype} +- Packetaufbau beschreiben!! + ### Entfernungsmessung mit der Signalstärke Die Bluetooth-Spezifikation sieht die Übertragung der Signalstärke, dem sogenannten \ac{rssi}, vor. Dabei handelt es sich um einen absoluten Wert in \ac{dbm} mit einer Abweichung von \num{\pm 6} \ac{db} [@BluetoothSIG_2014, Vol. 2 Part E S. 806]. Dadurch ist eine Entfernungsmessung, wie in Abschnitt \ref{trilateration} Signalstärkemessung beschrieben, möglich. @@ -180,6 +182,11 @@ Da die Signalstärke Schwankungen unterliegt, mehr dazu in Abschnitt \ref{messun ## Messung, Fehler-Quellen und Korrekturen !!! Draft !!! +- physikalische Eigenschaften von Bluetooth, +- wie funktioniert die Übertragung von Bluetooth konkret, +- Übertragungsgeschwindigkeiten +- wie könnte eine Fehlerrechnung, Fehlerfortpflanzung, etc. aussehen, +- Beschreibung und Betrachtung der physikalischen Eigenschaften einer Messkette + Signalverarbeitung In der Regel ist jede Messung fehlerbehaftet, auch wenn sie präzise durchgeführt wird. Zum Beispiel kann es schon beim Ablesen von Messdaten zu Fehlern kommen, aber auch das Einbringen eines Messgeräts kann die zu messenden Werte in einem System verändern. Aus diesem Grund ist die Beurteilung und Klassifikation von Messfehlern ein wichtiger Teil bei der Betrachtung einer Messkette. [@Lerch_2006_BOOK, S. 89]. In den folgenden Abschnitten werden die notwendigen Begriffe zur Beurteilung von Fehlern eingeführt und weiter die Fehlerkorrektur betrachtet. @@ -245,11 +252,40 @@ Diese Arbeit soll untersuchen wie eine solche Lokalisierung umgesetzt werden kan # Implementierung +In den folgenden Abschnitten wird die verwendete Hardware sowie die Umsetzung beschrieben. Zum Einsatz kommen die Programmiersprachen JavaScript, Python und Kotlin. Dieser Mix erklärt sich aus der gewählten Hardware. + ## Beacon -Als Bluetooth-Beacon kommt Puck.js\footnote{https://www.puck-js.com/} von der Firma Espruino\footnote{http://www.espruino.com/} zum Einsatz. Dieser bietet auf seiner offenen Plattform neben Bluetooth noch weitere Sensoren welche aber nicht Bestandteil dieser Arbeit sind. 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}. +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. + +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. + +```js +function updateAdvertising(device) { + // our data - all 0 for nothing, + // or RSSI + 6 bytes address + var id = device.id.substr(12, 5).replace(':',''); + + if (!scanIds.includes(id)) return; + + data[scanIds.indexOf(id)] = device.rssi * -1; -Für die Entwicklung bietet Espruino eine Reservierte 16 bit UUID ``0x0590`` an. + 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); +} +``` ## Software diff --git a/Thesis/acronyms.yaml b/Thesis/acronyms.yaml index 6488318..b64a921 100644 --- a/Thesis/acronyms.yaml +++ b/Thesis/acronyms.yaml @@ -52,6 +52,9 @@ acronym: - id: ms short: ms long: Millisekunde + - id: pdu + short: PDU + long: Protocol Data Unit - id: rss short: RSS long: Received Signal Strength @@ -70,6 +73,9 @@ acronym: - id: toa short: ToA long: Time of Arrival + - id: uuid + short: UUID + long: Universally Unique Identifier - id: wifi short: WiFi - long: Wireless Fidelity \ No newline at end of file + long: Wireless Fidelity