Implementierung Bluetooth Beacon

pull/19/head
Kreativmonkey 2 years ago
parent 712a3b917d
commit e414e4498b

@ -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

@ -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
long: Wireless Fidelity

Loading…
Cancel
Save