Overview of Bluetooth Low Energy solutions in the context of the software.

29
Przegląd rozwiązań Bluetooth Low Energy w kontekście oprogramowania. Bartosz Reichel infoShare Gdańsk 2015.06.11

Transcript of Overview of Bluetooth Low Energy solutions in the context of the software.

Przegląd rozwiązań Bluetooth Low Energy w kontekście oprogramowania.

Bartosz ReichelinfoShare

Gdańsk 2015.06.11

Agenda

● Wprowadzenie do BT-LE● Hardware Y

● Software a

● Porównanie możliwości dwóch systemów pod względem API, wstawki sprzętowe.

BLE – kilka słów wprowadzenia

● Info związane z wersjami BT oraz wsparciem● BLE = Bluetooth 4.0, 4.1, 4.2, ...

UWAGA: To, że urządzenie jest zgodne z którąś z wersji nie oznacza, że system operacyjny obsługuje (posiada sterowniki) dla danego „chipsetu”. Niestety taką praktykęReklamy można było spotkać w tańszym sprzęcie pod obsługą systemu Android !!!

Y

Rozwiązania alternatywne

Y

2.4GHz

Możliwe topologie

STAR

MESH

Y

Możliwe topologie

STAR

MESH

CONNECTION LESS !

Y

a

Skanowanie

● startLeScan● startLeScan z UUID –

problemy ze stabilnością

● BluetoothLeScanner● ScanCallback/ScanFil

ter

● BluetoothLEAdvertisementWatcher

a

Gdzie jest UUID, czym jest ?

● Struktura podzielona na (Generic Attribute Profile (GATT))

– Serwisy

– Charakterystyki

● UUID może być reprezentowane w pełni, jako 128 bitowa liczba lub jak notacja skrócona (standardowe serwisy określone przez SIG).

a

w odpowiedzi uzyskujemy

● device

● rssi

● ScanRecord

-------------- (New API)

● getTimestampNanos

● getDevice

● getRssi

● getScanRecord

● BluetoothLEAdvertisementReceivedEventArgs

● Advertisement

● AdvertisementType

● BluetoothAddress

● DeviceId

● Timestamp

● RawSignalStrengthInDBm

a

Opcje dodatkowe (filtrowania)

API (filtry) zbudowane w konwencji fluent interface

● new ScanFilter.Builder()

.setRssiRange(-75, 0)

.setServiceUuid(

new ParcelUuid(

UUID.fromString("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"))

)

.build();

● InRangeThresholdInDBm/OutOfRangeThresholdInDBm

● OutOfRangeTimeout

● BluetoothLEScanningMode(Active/Passive)

a

Skanowanie „oszczędne” - w tle

BluetoothLeScanner scanner = getBluetoothAdapter().getBluetoothLeScanner();

ScanSettings settings = new ScanSettings.Builder().setScanMode(ScanSettings.SCAN_MODE_LOW_POWER)).build();

List<ScanFilter> filters = new ArrayList<ScanFilter>();

scanner.startScan(filters, settings, myCallbackMethod);

● BluetoothLEAdvertisementWatcherTrigger

● BackgroundTaskBuilder

● Podejście w aplikacjach windows (WinRT) bazuje na ogólnym rozwiązaniu z użyciem zadań działających w tle (obsługiwane przez system, wymaga utworzenia biblioteki zewnętrznej)

a

RSSI – Proximity ?!

Ogólnie, bajt typu, bajt rozmiaru, dane. Nagłówek zajmuje 2 bajty, czyli maksymalnie przesłać naraz można 29 bajtów.

W tym przypadku - pierwsza flaga oznacza jak jest postrzegane urządzenie (w tym przypadku LE Limited discoverable oraz nieobsługiwane Basic Rate/Enhanced Data Rate – BR/EDR)- druga o długości 26 bajtów, zawiera nagłówek iBeacon:● 4 bajty prefix: Company: 0x4C00, Type: 0x02, Długość danych: 0x15 (21)● GUID/UUID: 0xF7826DA64FA24E988024BC5B71E0893E● Major: 0x792E● Minor: 0xFA06● TX Power: 0xB3 (-77dBm) UWAGA: TX_POWER >= RSSI, ale tu TXPower w sensie zmierzonego RSSI w odległości

1m

a

Struktura serwisów dla „Proximity”*

● Link Loss Service● Immediate Alert Service● Tx Power Service

● Określenie czasów nadawania dla pakietów advertising.

* BLUETOOTH SPECIFICATION Proximity Profilea

Wyliczanie odległości na podstawie RSSI

0 20 40 60 80 100 120 140 160 180 20040

45

50

55

60

65

70

75

80

85

90

FSPL=20log10(d )+20log10( f )−147.55

Y

● Zatem jeśli telefon ma czułość na poziomie -80dBm a nadajnik nadaje z mocą 0dBm (np.. domyślne dla Nordic) to otrzymujemy 80dBm co daje nam w przybliżeniu teoretyczny zasięg 100m

● Niestety, jest on teoretyczny. Zależy od jakości układu antenowego, w jaki sposób użytkownik trzyma telefon, pomieszczenia, …

● Im dalej (okolice 40dBm na wykresie, tym krzywa jest bardziej płaska – błąd, niewielkie zmiany RSSI a duże odległości).

Y

Stabilność RSSI ?

Y

Połączenie - rodzaje

● connectGatt, opcja autoConnect – nie zawsze stabilna

● createBond (BLUETOOTH_ADMIN) - parowanie, możliwe do przeprowadzenia w sekcji urządzeń bluetooth

● Potrzeba utworzenia więzów w systemie (Device Manager), na tym etapie przeprowadzony jest etap parowania urządzeń

a

Szyfrowanie (BT) Android Windows

skanowanie -

connect - -/

bond+connect +

mesh (csr) + ✘ ✘

a

Indication .vs. notification

● Wymaga potwierdzenia, Handle Value Confirmation

● Lepszy do buforowania większej ilości danych

● Otrzymanie danych

UWAGA: CLIENT CHARACTERISTIC CONFIGURATION = CCCWpisywane do deskryptora charakterystyki odpowiedniej wartości pozwala na otzrymywanie powiadomień

https://android.googlesource.com/platform/external/bluetooth/bluedroid/+/jb-mr2-dev/btif/src/btif_gatt_server.c case BTIF_GATTS_SEND_INDICATION: BTA_GATTS_HandleValueIndication(p_cb->conn_id, p_cb->attr_handle, p_cb->len, p_cb->value, p_cb->confirm); // TODO: Might need to send an ACK if handle value indication is // invoked without need for confirmation.

a

● setCharacteristicNotification

● GattClientCharacteristicConfigurationDescriptorValue

a

Urządzenia mobilne jako nadające („beacon”)

● BluetoothLeAdvertiser ● BluetoothLEAdvertisementPublisher

a

Oczywiście istnieją opcje podpinania urządzeń powodujących, że urządzenie mobilne może stać się urządzeniem nadającym, jednak tu chodzi o gotowe rozwiązania.

Android Windows

Własny pakiet rozgłoszeniowy

tak ograniczenia*

Moc nadawania (TX Power) skokowa brak

Częstotliwość nadawania skokowa brak

Możliwość połączenia tak tak

Możliwość zbierania danych wracających (callback)

tak brak (?)

* - teoretycznie, API zezwala na ustawienie ale traktuje je jako wartości zabronione. The following advertisement types are system-reserved and are not allowed. Co jest, w niektórych przypadkach, bardzo dużym ograniczeniem (np. name !!).

a

Urządzenia zewnętrzne

● To tylko krótki przegląd, czego możemy obecnie spodziewać się na rynku. Mowa tu o najprostszych urządzeniach (najczęściej z nich kojarzone to beacony)

Firma architektura Stos (wersja BT)

Dodatkowy stos

Inne

Texas Instruments

8051/ARM Cortex M3

4.1

Qualcom (dawniej CSR)

ARM Cortex M0+

4.2

Nordic ARM Cortex M0+

4.1 ANT+

CSEM SoC 4.1 0.9V

Y

Nadawanie – najlepiej w nieskończoność

● Najważniejsze parametry nadawania

– Moc nadawania (nie mylić z TX Power znajdującym się w nagłówku rozgłoszeniowym w niektórych protokołach). Ograniczenia prawne na pasmo ISM 10mW.

– Częstotliwość wysyłania pakietów (tak aby użytkownik zdążył je zobaczyć)

– Długość pakietu (maksymalnie 31 bajtów)● Energia (Klasyczna „bateria”, Energy Harvesting –

odzyskiwanie energii)

Ya

Porównanie dla kilku wybranych parametrów

Ya Wyniki dla optymistycznego wariantu, pomór mocy tylko przy wysyłaniu 50uJ, 0dBm

CR2032

CR2477

CR123

0,2 79,2 416,7 625

0,5 31,7 166,7 250

1 15,8 83,3 125

2 7,9 41,7 62,5

4 4 20,8 31,3

6 2,6 13,9 20,8

8 2 10,4 15,6

10 1,6 8,3 12,5

Wnioski - System

● Częste przebudowy „API”

● Dużo błędów (krytyka samego stosu)

● Niestabilność samego systemu w kontekście BT.

● Nadal wersja „testowa”

● Wiele elementów niejasnych, niedziałających.

● Duże ograniczenia dla nadawania.

● W obecnej chwili wsparcie tylko dla WinRT (częściowe dla innych platform ale ADV tylko dla WinRT)

a

Wnioski - BLE

● BLE na pewno przyszłościowe rozwiązanie.

● Obecnie oczekiwania (pomysły) przerastają możliwości BLE. Oczekiwania na kolejne wersje stosu.

● IoT – rozwój samych procesorów/mikrokontrolerów pokazuje, że dziś „rzeczy” nie należy utożsamiać z układami o niewielkiej mocy obliczeniowej a rozwiązaniami, które naprawdę mogą dużo (np. ARM Cortex M3), pozostając nadal na podobnym zużyciu energii.

● Coraz więcej firm wspiera ogólnie radio na pasmie 2.4GHz. Twórcom systemu operacyjnego pozostanie wspieranie danego stosu (niestety nie wszystkie są darmowe).

Y

Dziękuje