Mikrokontrolery i systemy embedded

XBee – komunikacja bezprzewodowa, konfiguracja i zastosowanie modułów

Spis treści
XBee – komunikacja bezprzewodowa, konfiguracja i zastosowanie modułów

XBee to rodzina modułów radiowych firmy Digi International, która ułatwia budowę bezprzewodowych systemów wbudowanych. Obejmuje rozwiązania przeznaczone zarówno do prostych połączeń punkt–punkt, jak i rozbudowanych sieci mesh dla internetu rzeczy.

Czym są moduły XBee?

Moduły XBee to kompaktowe modemy radiowe zaprojektowane z myślą o łatwej integracji z mikrokontrolerami, komputerami jednopłytkowymi i innymi urządzeniami elektronicznymi.

Rodzina obejmuje warianty wykorzystujące między innymi Zigbee, IEEE 802.15.4, Wi-Fi, protokoły sub-GHz oraz sieci komórkowe. Poszczególne modele mają zbliżony format sprzętowy i sposób konfiguracji, ale nie zawsze są ze sobą zgodne pod względem radiowym lub programowym.

W zależności od wersji moduły mogą pracować między innymi w paśmie 2,4 GHz lub pasmach sub-GHz. Komunikacja z urządzeniem nadrzędnym najczęściej odbywa się przez interfejs szeregowy UART, którego parametry należy dopasować do ustawień mikrokontrolera albo komputera.

Zasięg komunikacji może wynosić od kilku metrów wewnątrz budynku do kilku kilometrów w otwartym terenie. Wpływają na niego model modułu, rodzaj anteny, moc nadajnika, częstotliwość pracy, ukształtowanie terenu, przeszkody oraz poziom zakłóceń.

Technologie i protokoły komunikacji

Wiele modułów XBee bazuje na standardzie IEEE 802.15.4, który definiuje warstwę fizyczną oraz sposób dostępu do medium transmisyjnego. Na tej podstawie mogą działać protokoły wyższych warstw, takie jak Zigbee, DigiMesh i rozwiązania firmowe.

Zigbee jest przeznaczony do komunikacji o niewielkiej przepustowości i niskim poborze energii. Stosuje się go między innymi w sieciach czujnikowych, automatyce budynkowej, systemach pomiarowych oraz rozwiązaniach inteligentnej energetyki.

Topologia mesh umożliwia przekazywanie danych przez węzły pośredniczące, zwiększając zasięg sieci i jej odporność na awarie pojedynczych połączeń. Dostępność tej funkcji zależy jednak od wybranego protokołu, modelu modułu i zainstalowanego oprogramowania układowego.

Historycznie moduły XBee dzielono między innymi na Series 1, wykorzystującą IEEE 802.15.4, oraz Series 2, przeznaczoną do sieci Zigbee. Nowsze produkty są oznaczane według rodziny, protokołu i generacji sprzętu. Przed rozpoczęciem konfiguracji należy więc sprawdzić dokładny model urządzenia.

Topologie sieci XBee i role węzłów

W zależności od protokołu moduły XBee mogą tworzyć następujące topologie:

  • połączenia punkt–punkt,
  • sieci gwiazdowe,
  • sieci wielopunktowe,
  • sieci mesh.

W typowej sieci Zigbee urządzenia pełnią trzy podstawowe role:

  • koordynator – inicjuje sieć, wybiera jej podstawowe parametry i umożliwia dołączanie kolejnych urządzeń; w jednej sieci Zigbee działa tylko jeden koordynator;
  • router – przekazuje pakiety pomiędzy węzłami, umożliwiając zwiększenie zasięgu i elastyczne wyznaczanie tras;
  • urządzenie końcowe – komunikuje się przez koordynator lub router, ale nie pośredniczy w transmisji; może okresowo przechodzić w stan uśpienia, aby ograniczyć zużycie energii.

Wszystkie urządzenia w jednej sieci muszą korzystać ze zgodnego protokołu i odpowiednich ustawień sieciowych. W Zigbee istotny jest identyfikator PAN. Kanał może zostać wybrany przez koordynator podczas tworzenia sieci, a pozostałe urządzenia dołączają do niej zgodnie ze swoją konfiguracją.

Interfejs sprzętowy i integracja z systemem

Typowy moduł XBee udostępnia elementy potrzebne do integracji z urządzeniem nadrzędnym:

  • piny zasilania,
  • linie interfejsu szeregowego UART,
  • wejście resetujące,
  • programowalne wejścia i wyjścia cyfrowe,
  • wejścia analogowe i dodatkowe interfejsy komunikacyjne w wybranych modelach.

Większość klasycznych modułów XBee jest zasilana napięciem 3,3 V. Przed połączeniem modułu z mikrokontrolerem pracującym z logiką 5 V należy sprawdzić dopuszczalne poziomy napięcia i w razie potrzeby zastosować konwerter poziomów logicznych.

Komunikacja z mikrokontrolerem najczęściej odbywa się przez UART. Dane są wysyłane i odbierane jako strumień bajtów, co ułatwia integrację z platformami takimi jak Arduino, STM32 i Raspberry Pi.

Podczas prototypowania można wykorzystać płytki rozszerzeń oraz adaptery USB–XBee. Zapewniają one odpowiednie zasilanie, konwersję poziomów napięć i połączenie z portem USB komputera.

W trybie transparentnym XBee działa jak bezprzewodowy odpowiednik przewodowego łącza szeregowego. Aplikacja wysyła dane przez UART, a moduł odpowiada za ich transmisję radiową.

Tryby pracy – AT i API

Moduły XBee obsługują dwa podstawowe sposoby komunikacji z urządzeniem nadrzędnym: tryb transparentny AT oraz tryb API. Najważniejsze różnice przedstawia poniższa tabela:

Cecha Tryb AT Tryb API
Sposób przesyłania danych strumień danych przez UART ustrukturyzowane ramki
Adresowanie odbiorca zapisany w konfiguracji modułu odbiorca może być wskazany w każdej ramce
Status transmisji ograniczone informacje szczegółowe odpowiedzi i statusy
Obsługa wielu węzłów mniej wygodna łatwiejsza i bardziej elastyczna
Typowe zastosowanie proste połączenie punkt–punkt rozbudowana sieć i zaawansowana diagnostyka

W trybie AT dane przesyłane do interfejsu UART są kierowane do skonfigurowanego odbiorcy. Ustawienia modułu można zmieniać za pomocą poleceń AT, podobnie jak w klasycznych modemach.

Tryb API wykorzystuje ramki zawierające między innymi typ operacji, adres odbiorcy, dane użytkownika, identyfikator ramki i sumę kontrolną. Pozwala komunikować się z wieloma węzłami, odczytywać statusy transmisji, wykonywać zdalne polecenia i dokładniej diagnozować sieć.

Tryb transparentny sprawdza się w prostych połączeniach punkt–punkt, natomiast w rozbudowanych sieciach z wieloma węzłami zwykle lepszym wyborem jest tryb API.

Kluczowe parametry konfiguracyjne XBee

Dostępność i znaczenie parametrów zależą od modelu, protokołu oraz wersji oprogramowania układowego. Do najczęściej używanych ustawień należą:

  1. CH – kanał radiowy – określa kanał wykorzystywany do komunikacji; w niektórych sieciach jest ustawiany ręcznie, a w innych wybierany automatycznie przez koordynator;
  2. ID lub PAN ID – identyfikator sieci – pozwala odróżnić daną sieć od innych sieci działających w tym samym otoczeniu radiowym;
  3. CE – rola koordynatora – w konfiguracjach obsługujących ten parametr wartość CE=1 oznacza koordynator, a CE=0 urządzenie niebędące koordynatorem; dokładna rola może również zależeć od wybranego zestawu funkcji;
  4. MY – adres lokalny – określa adres urządzenia w wybranych trybach IEEE 802.15.4; w sieciach Zigbee krótki adres sieciowy może być przydzielany automatycznie;
  5. DH i DL – adres docelowy – wskazują odpowiednio starszą i młodszą część adresu odbiorcy;
  6. SH i SL – numer seryjny modułu – tworzą unikalny, 64-bitowy adres sprzętowy używany do identyfikacji i adresowania urządzenia;
  7. AP – tryb komunikacji – wartość AP=0 oznacza tryb transparentny, a AP=1 standardowy tryb API; niektóre modele obsługują również API z sekwencjami ucieczki;
  8. prędkość transmisji UART – określa szybkość komunikacji modułu z mikrokontrolerem lub komputerem; ustawienia po obu stronach połączenia muszą być zgodne.

Konfiguracja XBee krok po kroku z użyciem XCTU

XCTU to oficjalne narzędzie firmy Digi służące do konfigurowania, aktualizowania, testowania i diagnozowania modułów XBee.

1. Podłączenie modułu

Moduł należy podłączyć do komputera za pomocą adaptera USB–XBee lub płytki XBee Explorer. Po zainstalowaniu sterowników urządzenie powinno być widoczne w systemie jako port szeregowy.

Przed podłączeniem trzeba upewnić się, że adapter zapewnia właściwe napięcie zasilania i obsługuje poziomy logiczne wymagane przez dany moduł.

2. Wykrycie modułu w XCTU

Po uruchomieniu XCTU należy wybrać właściwy port szeregowy oraz ustawić parametry transmisji, takie jak szybkość, liczba bitów danych, parzystość i liczba bitów stopu.

Program może automatycznie wyszukać urządzenie, sprawdzając popularne ustawienia transmisji. Po wykryciu modułu można odczytać jego parametry, wersję oprogramowania układowego i numer seryjny.

3. Aktualizacja oprogramowania układowego i wybór funkcji

W modułach obsługujących różne role lub protokoły należy wybrać właściwy produkt, wersję oprogramowania układowego oraz zestaw funkcji. W przypadku starszych urządzeń Zigbee mogą to być na przykład funkcje koordynatora, routera albo urządzenia końcowego działającego w trybie AT lub API.

Oprogramowanie układowe musi być zgodne z dokładnym modelem modułu. Przed aktualizacją warto zapisać bieżące ustawienia, ponieważ proces może przywrócić wartości domyślne.

4. Ustawienia sieci

Należy skonfigurować identyfikator PAN oraz pozostałe parametry wymagane przez wybrany protokół. Urządzenia działające w jednej sieci muszą korzystać ze zgodnych ustawień.

W prostych konfiguracjach IEEE 802.15.4 może być konieczne ręczne ustawienie tego samego kanału CH. W sieciach Zigbee koordynator może natomiast samodzielnie wybrać kanał podczas uruchamiania sieci.

5. Ustawienie ról i adresów

Jeden moduł Zigbee należy skonfigurować jako koordynator, a pozostałe jako routery lub urządzenia końcowe. Rola może być określana przez parametr CE, wybrany zestaw funkcji albo ustawienia właściwe dla danego oprogramowania układowego.

Adresy docelowe DH i DL można ustawić na podstawie 64-bitowego adresu odbiorcy utworzonego z parametrów SH i SL. W trybie API odbiorca może być również wskazywany osobno w każdej ramce.

6. Tryb API i zapis ustawień

Jeżeli aplikacja ma obsługiwać wiele urządzeń, sprawdzać statusy transmisji lub wykonywać zdalne polecenia, można ustawić AP=1 i korzystać z ramek API.

Po zakończeniu konfiguracji należy zapisać ustawienia w pamięci modułu. Następnie warto ponownie odczytać parametry i przeprowadzić test komunikacji w konsoli XCTU.

Proste przykłady konfiguracji

Połączenie punkt–punkt w trybie transparentnym

Dwa zgodne moduły XBee można skonfigurować jako proste, bezprzewodowe łącze szeregowe. Oba urządzenia powinny korzystać z tego samego protokołu oraz zgodnych ustawień sieciowych.

Adres docelowy pierwszego modułu należy ustawić na adres drugiego, a adres docelowy drugiego na adres pierwszego. Trzeba również dopasować szybkość UART do parametrów urządzeń podłączonych do modułów.

Dane wysłane do interfejsu UART jednego modułu zostaną odebrane przez interfejs UART drugiego. Dzięki temu po stronie mikrokontrolera nie trzeba implementować złożonego protokołu radiowego.

Prosta sieć Zigbee z koordynatorem i routerem

Pierwszy moduł należy skonfigurować jako koordynator Zigbee, a drugi jako router. Oba urządzenia muszą mieć zgodne oprogramowanie układowe oraz właściwy identyfikator sieci.

Po uruchomieniu koordynator tworzy sieć, natomiast router wyszukuje ją i dołącza zgodnie ze swoją konfiguracją. Po poprawnym zestawieniu połączenia można skonfigurować adresowanie docelowe lub przesyłać dane za pomocą ramek API.

Taką sieć można później rozbudować o kolejne routery i urządzenia końcowe. Routery mogą pośredniczyć w transmisji, zwiększając zasięg i odporność całego systemu.

Zastosowania modułów XBee

Moduły XBee znajdują zastosowanie przede wszystkim tam, gdzie liczą się niski pobór energii, niezawodna transmisja i możliwość łatwej rozbudowy sieci. Typowe obszary wykorzystania obejmują:

  • internet rzeczy – komunikacja pomiędzy czujnikami, urządzeniami wykonawczymi, bramkami i usługami chmurowymi;
  • inteligentną energetykę – zdalny odczyt liczników, systemy pomiarowe i monitorowanie infrastruktury;
  • automatykę budynkową – sterowanie oświetleniem, ogrzewaniem, roletami, alarmami i zużyciem mediów;
  • przemysł – telemetria, nadzorowanie maszyn, śledzenie zasobów oraz zbieranie danych z rozproszonych czujników;
  • rolnictwo i monitoring środowiska – pomiar warunków pogodowych, wilgotności gleby i parametrów otoczenia;
  • projekty hobbystyczne – bezprzewodowe roboty, pojazdy, stacje pogodowe i sieci czujnikowe współpracujące między innymi z Arduino.

Dobre praktyki i typowe problemy

Najczęstszymi przyczynami braku komunikacji są niezgodne parametry sieci, różne wersje protokołu, niewłaściwe role urządzeń oraz błędnie skonfigurowane adresy.

Przed rozpoczęciem diagnostyki należy sprawdzić następujące elementy:

  • dokładny model każdego modułu,
  • wersję i zestaw funkcji oprogramowania układowego,
  • identyfikator sieci oraz kanał radiowy,
  • role poszczególnych urządzeń,
  • adresy źródłowe i docelowe,
  • tryb AP oraz szybkość interfejsu UART.

Warto zmienić domyślny identyfikator PAN na własną wartość, aby ograniczyć ryzyko przypadkowego połączenia z inną siecią działającą w pobliżu.

W paśmie 2,4 GHz mogą występować zakłócenia powodowane przez Wi-Fi, Bluetooth i inne urządzenia radiowe. Pomocne może być wybranie mniej obciążonego kanału, zmiana położenia anteny lub zwiększenie odległości od źródła zakłóceń.

Błędy w ustawieniach DH, DL, MY, SH i SL mogą spowodować, że dane nie trafią do właściwego odbiorcy. Warto dokumentować adresy modułów, ich role, numery seryjne i przypisane funkcje.

Podczas korzystania z trybu API należy poprawnie obliczać długość ramek i sumy kontrolne, a także właściwie interpretować odpowiedzi i statusy transmisji. Konsola ramek dostępna w XCTU znacznie ułatwia testowanie oraz diagnozowanie komunikacji.