BLE #3 Kontroler Bluetooth Low Energy

Kontroler Bluetooth Low Energy (BLE) to kluczowy komponent w architekturze urządzeń obsługujących tę technologię. Jest odpowiedzialny za obsługę warstwy fizycznej i Link Layer w protokole BLE. Pełni kluczową rolę w zarządzaniu radiowym, obsłudze transmisji danych, kontrolowaniu dostępu do kanałów oraz w realizacji podstawowych funkcji komunikacyjnych w standardzie Bluetooth Low Energy.

W drugim artykule z serii BLE omówiliśmy strukturę protokołu Bluetooth Low Energy. W dzisiejszym wpisie przyjrzyjmy się dokładnie czym jest niższa warstwa protokołu, czyli kontroler. Postaram się omówić w prostych słowach w jaki sposób działa komunikacja radiowa oraz wskazać jej podstawowe cechy.

Rola kontrolera w komunikacji

Kontroler obejmuje dwie najniższe najniższe warstwy architektury BLE, czyli warstwę fizyczną (Physical Layer) i warstwę łącza (Link Layer), a także interfejs HCI łączący kontroler z pozostałą częścią protokołu, czyli Hostem.

Głównym zadaniem kontrolera BLE jest zarządzanie procesem transmisji radiowej, co obejmuje kontrolę dostępu do kanałów, modulację sygnału oraz obsługę pakietów danych. Kontroler BLE odgrywa kluczową rolę w nawiązywaniu i utrzymywaniu połączeń między urządzeniami, zapewniając efektywną i niezawodną komunikację w ramach sieci Bluetooth Low Energy. Ponadto, kontroler odpowiada za obsługę różnych rodzajów PHY, umożliwiając dostosowanie parametrów transmisji do konkretnych warunków i wymagań aplikacji. W kontekście architektury BLE, kontroler pełni centralną funkcję w realizacji podstawowych operacji komunikacyjnych, co sprawia, że jest niezbędnym elementem w każdym urządzeniu obsługującym tę technologię.

Chociaż zajmujemy się tutaj ściśle protokołem Low Energy, warto wspomnieć, że kontroler to ten element, który w głównej mierze odróżnia i definiuje nam to, z jakim rodzajem komunikacji Bluetooth mamy do czynienia. Specyfikacja Bluetooth rozróżnia bowiem dwa rodzaje kontrolerów: Low Energy oraz BR/EDR. Urządzenie może mieć umieszczony jeden z nich lub oba jednocześnie. Kontroler stanowi w dużej mierze część sprzętową (hardware) urządzenia i to, jaki typ kontrolera zostanie fizycznie umieszczony będzie decydowało, czy mamy do czynienia z urządzeniem Bluetooth Low Energy, Bluetooh Classic (BR/EDR), czy może Bluetooth Dual Role (Low Energy + BR/EDR).

Rodzaje kontrolerów Bluetooth [źródło: Bluetooth Core Specification v5.4]

Modulacja GFSK

Mając do czynienia z komunikacją radiową możemy zastanawiać się jak to się dzieje, że przesyłane są dane i poszczególne bity. W przypadku komunikacji przewodowej za pomocą takich interfejsów jak UART, I2C czy SPI jest to bardziej intuicyjne – przesyłane są stany „wysoki” i „niski”, które określają wartość poszczególnych bitów. A jak to jest realizowane w przypadku sygnału radiowego, gdzie nośnikiem danych jest fala? Do tego wykorzystywana jest modulacja.

Modulacja częstotliwości to technika cyfrowej modulacji sygnału, gdzie zmiany w sygnale są reprezentowane przez zmiany w częstotliwości sygnału nośnego. Bluetooth Low Energy wykorzystuje modulację GFSK (Gaussian Frequency Shift Keying), w której sygnał jest kształtowany za pomocą funkcji Gaussa, co pozwala na płynne przejścia między różnymi poziomami częstotliwości. GFSK jest wykorzystywane jako sposób modulacji w warstwie fizycznej, umożliwiając efektywną transmisję danych przy niskim zużyciu energii. Ta technika jest kluczowym elementem, umożliwiającym osiągnięcie wysokiej niezawodności i efektywności energetycznej w ramach protokołu Bluetooth Low Energy.

Na czym polega modulacja FSK? Bazuje ona na tym, że dane w postaci „1” i „0” przesyłane i rozróżniane są za pomocą zmiany częstotliwości sygnału. I tak w przypadku logicznej „1” osiąga się to przez dodatnie odchylenie częstotliwości nośnej (czyli nieznancznie zwiększenie częstotliwości względem bazowej), a „0” przez odchylenie ujemne. W systemie Bluetooth minimalne odchylenie częstotliwości wynosi 115 kHz.

Modulacja FSK [źródło: https://pl.wikipedia.org/wiki/Frequency-Shift_Keying]

W przypadku GFSK wykorzystywany jest dodatkowo filtr Gaussa, który sprawia, że częstotliwość modulowanego sygnału nie zmieni się natychmiast na początku każdego okresu danych binarnych. W rezultacie przejście z bitu 0 do bitu 1 lub odwrotnie staje się płynniejsze. Zmiany amplitudy i fazy modulowanego sygnału będą stosunkowo mniejsze w porównaniu z tradycyjnym FSK. Ta metoda zmniejsza moc pasma bocznego i zakłócenia powodowane przez sąsiednie kanały.

Kanały Bluetooth Low Energy

Bluetooth LE działa w nielicencjonowanym paśmie 2,4 GHz, wykorzystując zakres częstotliwości od 2402 MHz do 2480 MHz, który jest podzielony na 40 kanałów, każdy w odstępie 2 MHz. Warstwa łącza i architektura transportu danych definiują sposób wykorzystania kanałów. Trzy z tych kanałów nazywane są głównymi kanałami rozgłoszeniowymi (Primary Advertising Channels), natomiast pozostałe 37 kanałów, nazywanych kanałami ogólnego przeznaczenia, służą do przesyłania większej ilości danych w rozszerzonym trybie rozgłoszeniowym (Secondary Advertisements) i podczas połączenia. Więcej o samym advertising-u i połączeniach powiemy sobie jeszcze w kolejnych wpisach.

Kanały w Bluetooth Low Energy [źródło: „Bluetooth LE – Regulatory Aspects Document – V0.3.3”]

Kanały rozgłoszeniowe to kanały oznaczone numerami od 37 do 39. Nie są to jednak ostatnie trzy kanały radiowe – zostały one umieszczone w różnych miejscach pasma używanego przez BLE, aby zminimalizować wpływ zakłóceń na prawidłowe działanie całej komunikacji. Warto dodać, że kanały te zostały ustalone w taki sposób, aby uwzględnić współistnienie BLE z innymi protokołami komunikacją 2,4 GHz – częstotliwości zostały dobrane tak, że w jak najmniejszym stopniu pokrywały się z tymi stosowanymi np. w WiFi.

Kanały o numerach od 0 do 36 są używane do nawiązywania połączeń i przesyłania danych w trybie Secondary Advertisements. Ważną informację pod kątem niezawodności działania BLE jest to, w jaki sposób te kanały są wykorzystywane. Nie jest bowiem tak, że komunikacja działa na jednym z tych kanałów. Kanały są przełączane w trakcie komunikacji wg ustalonego algorytmu, dzięki czemu w momencie wystąpienia zakłóceń możliwe jest prawidłowe przysyłanie danych na innym kanale. Za obsługę przełączania kanałów odpowiada warstwa Link Layer.

Bluetooth LE wykorzystuje na różne sposoby techniki widma rozproszonego do przekazywania danych wieloma kanałami. Zmniejsza to ryzyko kolizji, czyniąc komunikację bardziej niezawodną. Wszystkie tryby działania Bluetooth Low Energy, z wyjątkiem podstawowego trybu rozgłoszeniowego, wykorzystują standardowy algorytm wyboru kanału.

W historii rozwoju Bluetooth LE wprowadzono dwa algorytmy: algorytm wyboru kanału nr 2 (CSA#2) w wersji 5.0 specyfikacji Bluetooth oraz algorytm wyboru kanału nr 1 (CSA#1) wprowadzony w wersji 4.0. CSA#1 posiada pewne ograniczenia w statystycznym rozmieszczeniu używanych kanałów, szczególnie gdy dostępnych kanałów jest niewiele, natomiast CSA#2 skutecznie rozwiązuje ten problem. Te algorytmy są kluczowe dla efektywnego zarządzania pasmem i minimalizacji interferencji, co stanowi istotny element optymalizacji działania Bluetooth Low Energy z perspektywy efektywności energetycznej i niezawodności transmisji danych.

CSA#1 wykorzystuje prosty mechanizm, gdzie przeskakiwanie między kanałami następuje w sposób linowy np. co drugi lub trzeci kanał. W CSA#2 wprowadzono bardziej skomplikowany sposób obliczenia kolejnych kanałów, dzięki czemu uzyskano nieliniowość wykorzystania poszczególnych kanałów. Ta nieliniowość będzie występowała tylko, jeżeli rozpatrujemy stosunkowo krótki odcinek czasu, jednak wprowadza ona dodatkową, bardzo istotną zmienność, co ułatwia współdziałania tak wielu urządzeń BLE jednocześnie.

Rozkład wykorzystania kanałów w CSA#2 [źródło: „Understanding Reliability in Bluetooth Technology”]

Algorytmy wyboru kanałów wykorzystują informacje zawarte w mapie kanałów, które klasyfikują każdy z kanałów ogólnego przeznaczenia jako używany lub nieużywany. Domyślnie wszystkie kanały są oznaczone jako używane, ale urządzenia mogą ocenić, jak dobrze działa każdy kanał i oznaczyć go jako nieużywany. Algorytm wyboru kanału pozwala uniknąć dzięki temu częstotliwości, w których w danym momencie komunikacja jest utrudniona np. poprzez zewnętrzne zakłócenia. W ten sposób Bluetooth zmniejsza ryzyko kolizji poprzez wykorzystanie technik widma rozproszonego. Kiedy dwa urządzenia są połączone, wymaga to specyficznej techniki zwanej adaptacyjnym przeskakiwaniem częstotliwości (Adaptive Frequency Hopping).

Rodzaje PHY

W BLE istnieje kilka rodzajów fizycznych warstw (PHY), w tym LE 1M PHY (1 Mbps), LE 2M PHY (2 Mbps) i LE Coded PHY (z kodowaniem korekcyjnym błędów), z których każdy oferuje różne kombinacje przepustowości danych, zasięgu i efektywności energetycznej. PHY stanowi kluczowy element w warstwie fizycznej BLE, który wpływa na wydajność, niezawodność i oszczędność energii w komunikacji między urządzeniami Bluetooth Low Energy.

  1. LE 1M PHY (1 Mbps) – charakteryzuje się przepustowością danych równą 1 Mbps, a nominalna szerokość pasma kanału wynosi 1 MHz z wymaganą odchyłką częstotliwości wynoszącą co najmniej 185 kHz. Nie wykorzystuje dodatkowego kodowania. Jest podstawowym rodzajem PHY w BLE i jest wymagany we wszystkich urządzeniach zgodnych ze standardem Bluetooth Low Energy.
  2. LE 2M PHY (2 Mbps) – oferuje dwukrotnie wyższą przepustowość niż LE 1M PHY, wynoszącą 2 Mbps z wymaganą odchyłką częstotliwości wynoszącą co najmniej 370 kHz. Znajduje zastosowanie w scenariuszach wymagających szybszej transmisji danych, co może być istotne w niektórych zastosowaniach przemysłowych. Wsparcie dla LE 2M PHY jest opcjonalne i nie wszystkie urządzenia zgodne z BLE muszą je posiadać.
  3. LE Coded PHY – jest to rodzaj PHY, który wykorzystuje kodowanie korekcyjne błędów w celu poprawy niezawodności transmisji kosztem przepustowości. Działa z niższą przepustowością danych (125 kbps dla kodowanie S=8 lub 500 kbps dla S=2), ale oferuje większą odporność na zakłócenia i większy zasięg (nawet kilkukrotnie), co jest korzystne w aplikacjach wymagających większej stabilności połączenia, takich jak beaconing w handlu detalicznym czy monitorowanie w przemyśle. Wsparcie dla LE Coded PHY również jest opcjonalne.

Wszystkie rodzaje PHY wspierają wykrywanie błędów za pomocą sumy kontrolnej CRC, a LE Coded PHY obsługuje dodatkowo koder splotowy o nazwie Forward Error Correction (FEC). W przypadku kodowanego PHY wprowadzana jest nadmiarowość tzn. że na jeden przesyłany symbol przypadają nam 2 (dla S=2) lub 8 (dla S=8) bitów danych.

Wybór odpowiedniego rodzaju PHY zależy od konkretnych wymagań aplikacji, takich jak przepustowość, zasięg, niezawodność i zużycie energii. Odpowiednią konfigurację PHY można dostosować do konkretnych warunków działania i potrzeb projektu BLE.

Maszyna stanów w warstwie Link Layer

Kontroler BLE w trakcie pracy może wykonywać różne czynności, a w związku z tym przyjmować różne stany działania. Do ich obsługi i właściwego przełączania się między stanami służy wbudowana maszyna stanów. Maszyna stanów w warstwie Link Layer steruje przejściami między tymi stanami w zależności od zdarzeń, takich jak zgłoszenia ogłoszenia, żądania połączenia, czy utraty połączenia. To efektywne zarządzanie stanami pozwala na optymalne wykorzystanie energii i zasobów, co jest kluczowe w kontekście Bluetooth Low Energy, gdzie oszczędność energii jest jednym z głównych priorytetów.

Kontroler Bluetooth Low Energy może pracować w trybie rozgłoszeniowym (Advertising), skanowania (Scanning) lub połączenia (Connected). Jeżeli nie wykonuje żadnych operacji to jest w stanie gotowości (Standby). Dodatkowo możemy wyróżnić stan inicjalizacji (Initation) występujący przed połączeniem oraz dwa stany używane w trakcie pracy w trybie izochronicznym (Isochronous Broadcasting i Synchronization).

Maszyna stanów Link Layer [źródło: „Bluetooth LE – Regulatory Aspects Document – V0.3.3”]

Gdy urządzenie działa w trybie rozgłoszeniowym (Advertising), umożliwia innym urządzeniom skanującym znalezienie go i ewentualne połączenie się z nim. Jeżeli urządzenie umożliwia połączenie, a urządzenie skanujące je odnajdzie i zdecyduje się z nim połączyć, każde z nich przejdzie w stan połączenia.

Stan gotowości (Standby) to domyślny stan, w którym radio nie przesyła ani nie odbiera żadnych danych. Natomiast inicjowanie (Initation) to stan, w którym urządzenie skanujące decyduje się nawiązać połączenie z innym urządzeniem w stanie Advertising.

W stanie połączenia urządzenie może przyjąć dwie role: urządzenia centralnego (Central Role) oraz urządzenia peryferyjnego (Perypheral Role). Po wejściu ze stanu inicjującego w stan połączenia urządzenie powinno pracować jako urządzenie centralne. Po wejściu ze stanu rozgłoszeniowego w stan połączenia będzie odgrywał rolę urządzenia peryferyjnego. Kiedy podłączone są dwa urządzenia, urządzenie centralne kontroluje synchronizację i mapę kanałów oraz transmituje dane jako pierwsze.

Ramka danych w warstwie Link Layer

Na koniec dzisiejszego wpisu omówmy sobie jeszcze ramkę danych w warstwie Link Layer. Jest ona dość ważna, ponieważ stanowi podstawę protokołu i w niej będą umieszczane dane z kolejnych warstw. Ramka danych w warstwie Link Layer przyjmuje postać jak na grafice poniżej.

Ramka danych Link Layer [źródło: „Bluetooth LE – Regulatory Aspects Document – V0.3.3”]

Ten format pakietu jest używany w przypadku niekodowanych warstw PHY LE (LE 1M i LE 2M) i wykorzystywane do tworzenia pakietów na wszystkich kanałach fizycznych. Pierwsze cztery elementy są obowiązkowe i muszą być umieszczone w każdej ramce. Pole CTE jest opcjonalne i jest wykorzystywane w przypadku funkcji wykrywania kierunku (Angle of Arrival i Angle od Departure).

Preambuła

Wszystkie pakiety w warstwie łącza BLE mają preambułę, pełniącą kluczową rolę w procesie odbioru sygnałów. Preambuła służy do synchronizacji częstotliwości, szacowania taktowania symboli oraz uruchamiania automatycznej kontroli wzmocnienia (AGC) w odbiorniku. To ustalona sekwencja bitów 0 i 1 (wysyłanych naprzemiennie), która umożliwia sprawną synchronizację, co jest kluczowe dla poprawnej interpretacji pakietów danych. W przypadku pakietów LE 1M PHY, preambuła ma długość 8 bitów, natomiast dla pakietów przesyłanych w LE 2M PHY, preambuła ma długość 16 bitów.

Adres dostępu (Access Address)

Access Address to 32-bitowy identyfikator używany do jednoznacznego określenia danego połączenia między urządzeniem nadawczym a odbiorczym. Jest to wartość, która musi być znana obu stronom w trakcie nawiązywania połączenia. Access Address umożliwia odbiornikowi jednoznaczne zidentyfikowanie pakietów związanych z konkretnym połączeniem, co jest istotne w środowisku, gdzie występuje wiele urządzeń BLE.

Access Address jest czym innym niż adres urządzenia Bluetooth. Nie wiąże się z konkretnym urządzeniem, ale z konkretnym połączeniem między urządzeniami. Access Address jest na stałe ustalony w przypadku trybu rozgłoszeniowego (wtedy wszystkie urządzenia wykorzystują adres 0x8E89BED6) lub jest generowany losowo w przypadku połączenia (wtedy dwa połączone urządzenia mają wykorzystują ten sam Access Address).

Jednostka danych PDU

PDU (Protocol Data Unit) to jednostka danych, która przenosi informacje między urządzeniami w ramach przesyłanej ramki. PDU stanowi nośnik dla różnych rodzajów danych, takich jak dane użytkownika, komendy kontrolne czy informacje o stanie połączenia. W ramach danych w warstwie Link Layer BLE, PDU jest strukturą, która może różnić się w zależności od rodzaju komunikatu, który jest przesyłany. Na przykład, w przypadku ramki danych przesyłanej podczas nawiązanego połączenia, PDU może zawierać dane użytkownika, informacje o kontroli przepływu, a także inne informacje specyficzne dla danego kontekstu komunikacji.

Suma kontrolna CRC

CRC (Cyclic Redundancy Check) to 24-bitowa wartość kontrola używana do wykrywania błędów w przesyłanych danych. CRC jest obliczane na podstawie zawartości danej ramki i dołączane do niej jako jedno z pól nagłówka. Odbiornik może następnie obliczyć CRC na otrzymanych danych i porównać go z przesłanym CRC. Jeśli obliczone wartości się różnią, to oznacza, że wystąpił błąd transmisji.

Podsumowanie

W artykule przyjrzeliśmy się kluczowym aspektom kontrolera Bluetooth Low Energy (BLE) oraz jego roli w efektywnej komunikacji między urządzeniami. Zaczęliśmy od zrozumienia, jak kontroler odgrywa kluczową rolę w zarządzaniu komunikacją, pełniąc funkcję nadzorcy i sterując przepływem danych. Zanurzyliśmy się także w technologię modulacji GFSK, która stanowi fundament dla skutecznej transmisji danych w środowisku BLE. Przeanalizowaliśmy również strukturę kanałów w Bluetooth Low Energy oraz omówiliśmy różne rodzaje PHY, zwracając uwagę na ich wpływ na przepustowość, zasięg i efektywność energetyczną.

Poznaliśmy również sposób działania maszyny stanów w warstwie Link Layer, a także, przyjrzeliśmy się ramkom danych w warstwie Link Layer, zwracając uwagę na kluczowe elementy, takie jak PDU i CRC. Łącząc te tematy, możemy lepiej zrozumieć kompleksową rolę kontrolera BLE w budowaniu efektywnych, niezawodnych połączeń między urządzeniami Bluetooth Low Energy. To zrozumienie jest kluczowe dla każdego, kto chce zgłębić tajniki tej fascynującej technologii i wykorzystać ją w innowacyjny sposób.

Na dzisiaj to wszystko. Jeżeli podobał Ci się wpis lub masz jakieś własne przemyślenia, zostaw komentarz. Pamiętaj też, aby polubić mój profil na Facebook-u oraz zasubskrybować kanał na YouTube.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *