Bluetooth Low Energy: informacje podstawowe i specyfikacja
Bluetooth Low Energy jest technologią komunikacji bezprzewodowej opracowaną właśnie z myślą o urządzeniach noszonych przez człowieka lub będących w jego pobliżu. BLE nie jest kompatybilne z tradycyjnym protokołem Bluetooth, ale oferuje podobny zasięg przy znacząco mniejszym poborze energii. Obie technologie zwykle koegzystują w urządzeniach bazowych, jak smartfony, tablety czy laptopy, ale nie tylko. Bluetooth Low Energy ma zdefiniowany szereg profili specyficznych dla różnych aplikacji. Profile te definiują sposób organizacji danych w warstwie programowej, podczas gdy implementacja sprzętowa pozostaje stała i od nich niezależna. Inaczej mówiąc – BLE jest implementowane tak samo, jak USB: stała warstwa sprzętowa, różne implementacje programowe zależnie od potrzeb. Podstawowym profilem jest GATT (Generic Attribute Profile – profil ogólny atrybutów). Profil ten określa, w jaki sposób przesyłać niewielkie ilości informacji, zwane atrybutami, między urządzeniem a stacją bazową. Prawie wszystkie inne profile są pochodnymi GATT, stworzonymi do konkretnych zastosowań. Przykładem może być profil HOGP (HID Over GATT), pozwalający na użycie urządzeń USB HID w wariancie bezprzewodowym. Opierają się na nim myszki, klawiatury i kontrolery gier BLE. Jedno urządzenie Bluetooth Low Energy może implementować wiele profili, zależnie od rodzaju przekazywanych informacji.
Wyjątkiem od tych standardowych profili jest odmiana opracowana dla sieci typu Mesh – urządzenia BLE mają bowiem możliwość łączenia się z innymi sprzętami, a implementacja profilu MESH ustala sposób tworzenia sieci i przekazywania informacji między poszczególnymi węzłami. Z kolei MMDL (Mesh Models) to zbiór profili, w tym kontekście zwanych modelami, dedykowanych do specyficznych zastosowań. Ten sposób pracy może być szczególnie pożądany przy tworzeniu sieci czujników monitorujących większą przestrzeń, a awaria lub utrata zasięgu, nawet przez kilka z nich, nie powinna wpływać na łączność pozostałych urządzeń w sieci, chyba że awarii ulegnie jedyny „łącznik” między dwoma obszarami tej infrastruktury.
Oficjalna specyfikacja standardu BLE określa zasięg łączności na poniżej 100 m w otwartej przestrzeni, maksymalną moc nadawania między 10 mW a 500 mW, maksymalny szczytowy pobór prądu poniżej 15 mA. Oczywiście zależy to od warunków propagacji i potrzebnego zasięgu. W praktyce większość urządzeń BLE codziennego użytku ogranicza zasięg do około 10 metrów w otwartej przestrzeni. Prędkość transmisji „w powietrzu” wynosi 128 kbps, 500 kbps, 1 Mbps lub 2 Mbps. Prędkość transferu dostępna dla urządzenia jest odpowiednio niższa ze względu na dodatkowe dane, takie jak preambuła czy suma kontrolna, więc przy prędkości „w powietrzu” 500 kbps użytkownik ma dostępną prędkość do 270 kbps. W przypadku 2 Mbps będzie to wartość 1,37 Mbps – jest to całkiem niezły wynik, wystarczający do implementacji głosowej łączności bezprzewodowej, wymiany danych z opaski sportowej, czy w końcu do grania na konsoli lub komputerze za pomocą bezprzewodowego kontrolera, w którym opóźnienia są zdecydowanie niepożądane. BLE oferuje też wbudowane w warstwę sprzętową szyfrowanie AES-128 w trybie CCM. Implementacja ta pozwala na jednoczesne potwierdzenie „tożsamości” urządzenia i szyfrowaną łączność. Dalsze szyfrowanie nie jest zatem konieczne, choć można je zaimplementować w warstwie aplikacji.
Przegląd układów z Bluetooth Low Energy
Rozważmy typowy scenariusz, w którym trzeba przekazać 1 kB danych z urządzenia noszonego przez użytkownika do jego smartfona. Policzmy średni pobór prądu i czas trwania łączności dla kilku różnych układów. Od razu pojawia się pewien problem: rezultaty wyszukiwania sugerują, iż niemal wszystkie układy BLE występują w komplecie ze zintegrowanym mikrokontrolerem i to głównie ARM. Teoretycznie więc powinniśmy uwzględnić użycie tego wbudowanego mikrokontrolera w naszych obliczeniach, ale nie każdy układ pozwala na zastosowanie owego procesora do aplikacji użytkownika nie związanych z łącznością Bluetooth. Dlatego też nasze obliczenia będą obejmować tylko kwestię łączności, zatem układ będzie aktywny tylko tyle czasu, ile potrzeba by nawiązać połączenie ze stacją bazować i przesłać 1 kB danych używając profilu GATT.
Istotną dla tych rozważań informacją jest moc nadajnika, a ta zależy od warunków propagacji. W przypadkiu, gdy nasze przykładowe urządzenie, czyli opaska sportowaz znajduje się na lewym nadgarstku, a odbiornik – czyli smartfon – w prawej kieszeni spodni, moc nadajnika może wynosić od 0 dBm do +4 dBm. Sytuacja jest zgoła inna, gdy smartfon jest z dala od ciała, które pochłania sygnał Bluetooth – powiedzmy, że mamy do czynienia z odległością dwóch metrów od urządzenia.
Wtedy zależnie od warunków propagacji potrzebna moc może wynosić od –12 dBm do 0 dBm. W sytuacji, gdy smartfon jest w ręce użytkownika, wystarczy moc od –20 dBm do –10 dBm. Byłoby wskazane podanie średniego poboru prądu dla każdego z tych scenariuszy, jednakże producenci są innego zdania i podają maksymalny pobór dla 0 dBm oraz dla fazy odbioru danych, zatem uśredniony pobór zostanie podany tylko dla tych wartości.
Firmę STMicroelectronics reprezentuje w naszym zestawieniu mikrokontroler STM32WB15CC, należący do rodziny STM32WB, której głównym przeznaczeniem są wszelkiego rodzaju urządzenia związane z automatyką domową czy monitorowaniem stanu zdrowia. Transceiver będący częścią układów tej rodziny jest kompatybilny zarówno z Bluetooth Low Energy, jak i z protokołami ZigBee i Thread, choć wariant w układzie STM32WB15CC wspiera tylko Bluetooth 5.4 i Bluetooth Low Energy. Moduł radiowy ma też dedykowany, 32-bitowy mikrokontroler ARM Cortex M0+ przeznaczony do obsługi łączności, podczas gdy główny rdzeń, 32-bitowy mikrokontroler ARM Cortex M4, pozostaje nieaktywny. Układ pobiera maksymalnie 5,5 mA w trakcie nadawania (przy mocy 0 dBm), 4,5 mA w trakcie odbioru i tylko 510 nA w stanie oczekiwania z podtrzymaniem pamięci i z aktywnym RTC. W ramach ochrony komunikacji układ obsługuje szyfrowanie AES-128 dla protokołu Bluetooth, ale wspiera też dodatkowy mechanizm kryptograficzny z kilkoma metodami do wyboru oraz sprzętowy generator liczb losowych. Niewielki rozmiar mikrokontrolera oraz niski pobór prądu czynią go atrakcyjnym wyborem do urządzeń noszonych, właśnie takich jak właśnie smartwatche. A główny rdzeń z wbudowanymi FPU i DMA pozwala na tworzenie dość złożonych aplikacji o szerokim spektrum zastosowań.
Microchip ma w swojej ofercie zarówno same układy SoC z serii PIC32CX-BZ3, jak i gotowe moduły (WBZ35x) oparte o 32-bitowy mikrokontroler ARM Cortex M4F i zintegrowany moduł Bluetooth Low Energy 5.2/ZigBee 3.0. Moduły te mają zaimplementowany wspólny system radiowy, któregom moc nadawania jest regulowana w zakresie od –24 dBm do 11 dBm w krokach co 1 dBm. Czułość odbiornika, zależnie od trybu pracy i prędkości transmisji, osiąga od –95 dBm do –108 dBm. Przewagą użycia gotowego modułu zamiast samego układu jest to, że moduł oferuje certyfikaty związane z dopuszczeniem do użycia nadajnika radiowego, co redukuje koszty i upraszcza projekt. Wadą w pewnych wypadkach mogą być wymiary samego modułu, ograniczające rozmiar docelowego produktu – wynoszą one bowiem 15,5×20,7 mm (wariant WBZ351) oraz 13,4×18,7 mm (WBZ350). Warianty różnią się zastosowanym mikrokontrolerem, co wpływa na liczbę wyprowadzeń. Zwykle Microchip w swoich notach chwali się niskim poborem energii mikrokontrolerów i innych układów już na pierwszych stronach, ale w tym jednak przypadku trzeba sięgnąć po dokładne charakterystyki znajdujące się niemal na końcu noty. Spojrzenie w te wartości jest doświadczeniem rozczarowującym: pobór w stanie uśpienia wynosi 550 μA (typ.). W trybie Deep Sleep jest już lepiej: 1,9 μA (typ.), 60 μA (maks.). W trybie XDS (eXtreeme Deep Sleep) jest jeszcze lepiej, bo pobór prądu spada do 90 nA. Moduł łączności w trybie BLE pobiera 26 mA przy nadawaniu z mocą 0 dBm i 20 mA przy odbiorze z czułością –90 dBm.