ZigBee cc2530 - łączność

Wszystko o sieciach ZigBEE
głównie układy CC25xx
ODPOWIEDZ
Awatar użytkownika
SunRiver
Administrator
Posty: 912
Rejestracja: 08 paź 2017, 11:27
Lokalizacja: Festung Oppeln
Kontakt:

ZigBee cc2530 - łączność

Post autor: SunRiver »

Jeśli to czytasz to znaczy, że masz już wszystko co potrzeba więc należałoby się połączyć i nawiązać komunikację.
W przypadku modułów Core2530 mamy ułatwione zadanie gdyż jest w pamięci wgrany bootloader i nie potrzebujemy CC Debugera , ale .....
no właśnie ale ...  żeby móc się połączyć musimy nieco poznać trochę faktów i zasad sieci ZigBEE.

Obrazek

Podstawy:

Do pracy w sieci ZigBEE konieczne jest minimalnie posiadanie dwóch modułów Core2530/XCore2530  co jest niejako logiczne , ale  tu
chodzi o coś więcej niż para sieciówek do połączenia gdyż w sieciach ZigBEE minimalne połączenie  wymaga obecności 2ch urządzeń, a są to :

--- Koordynator ---

W sieciach ZigBEE wymagana jest obecność 1 koordynatora, którego rola polega na :

>Wybiera kanał komunikacji, oraz ustala PANID budowanej sieci
>Pozwala ruterom i urządzeniom końcowym dołączać się do sieci
>Trasuje dane w sieci</li>
>Musi zawsze być zasilany i nie może wchodzić w tryb uśpienia
>Przechowuje dane dla urządzeń końcowych będących w trybie uśpienia i pozwala na ich pobranie po przejściu do tryby pracy.

Jak więc widać to jest podstawowe urządzenie w sieci i musi być ono obecne.

--- Ruter ---

To drugi typ urządzenia w sieci ZigBEE  wystarczą koordynator i ruter by zestawić komunikację i transmisję danych w sieci,
ale ruter ma też obowiązki :

>Musi być dołączony do sieci zanim rozpocznie transmisję danych
>Pozwala innym ruterom i urządzeniom końcowym dołączać się do sieci do której sam został dołączony
>Rozsyła dane w sieci po określonych trasach
>Również ruter nie może wchodzić w tryb uśpienia
>Również potrafi przechowywać dane dla urządzeń końcowych

W większości przypadków do transmisji wystarczy nam 2 wymienione urządzenia  i na takiej konfiguracji zestawimy podstawowe
połączenie i transmisję danych, ale warto wiedzieć czym są i jakie mają zadania wspomniane urządzenia końcowe;

--- Urządzenie końcowe ---

Urządzenie końcowe to moduł pomiarowo-wykonawczy może stanowić wiele urządzeń w tym zasilanych bateryjnie. np może być czujnikiem oświetlenia,  czujnikiem gazu , temperatury czy też zwykłym włącznikiem  itd.  Ono też musi spełniać określone warunki:

>Przed wykonaniem transmisji musi się połączyć z ruterem lub koordynatorem
>Do niego i przez niego nie mogą się łączyć żadne urządzenia z siecią - warto o tym pamiętać
>Nie może trasować danych w sieci , transmisji dokonuje zawsze przez najbliższy węzeł nadrzędny (ruter)
>Może być zasilany z baterii , przechodzić w stan uśpienia

Jak więc widać  obecność rutera i koordynatora wystarczą do nawiązywania połączenia , ale żadne z nich nie może pracować na zasilaniu
bateryjnym gdyż nie mogą przechodzić w stan uśpienia w celu oszczędzania energii , natomiast samo urządzenie końcowe nie może bez rutera
nawiązać połączenia i transmisji danych, zaś ruter nie może stworzyć sieci ....  Trochę dużo tych zależności jak też restrykcji, ale za to
uzyskujemy ciekawą sieć PAN ...

Sieć ZigBEE może pracować w topologiach widocznych na rysunku niżej:

Obrazek

Jak wiec widać mamy wiele możliwości dołączania urządzeń w sieci co pozwala na pełną kontrolę z punktu koordynatora ,
który jako jedyny może być w danej sieci tylko jeden.

Ale ...  taka konstrukcja sieci pozwala na dołączenie w ramach jednej sieci , 500 ruterów, a na każdym z nich do 64 końcowe urządzenia to
naprawdę spore możliwości i to w praktyce gdyż takie testy przeprowadzano , sieć funkcjonowała prawidłowo.
No dobrze znamy już podstawy podstaw więc do roboty.....



SPRZĘTOWISKO i OPROGRAMOWANIE 

Jak już wspominałem nasze moduły Core2530 mają wgrany bootloader  co umożliwi wgranie wymaganego oprogramowania do zestawienia
połączenia przez UART używając adaptera USB na FTDI lub Zestawu DEV  ZB502 czy ZB600.  Bootloader jest ustawiony na komunikację
z prędkością 115200bps 8bitów danych i 1 bit stopu.

W tym celu pobieramy sobie program, SerialBootTool ...

Obrazek

program jest banalny w obsłudze więc nie będę go opisywał , jak widać  wystarczy wybrać port COM (u mnie port COM6)  oraz wskazać
plik .bin i kliknąć Load Image:) Proste prawda ?? no dobrze .... Firmware musimy wgrać 2 różne, dlatego jedno z urządzeń nazywamy A
zaś drugie B tak by nam się nie myliły i do urządzenia A wgrywamy plik coordynator.bin  , zaś do B - ruter.bin.

Pliki powyższe należy sobie skompilować w środowisku IAR EW8051, ale jak nie macie to możecie je pobrać skompilowane tutaj Oprogramowanie jest w bardzo podstawowej wersji i umożliwia prostą komunikację między
ruterem i coordynatorem w sieci ZigBEE oraz konfigurację i parametryzację urządzeń i ich diagnostykę przy pomocy komend AT+
(opiszę je niżej)

Gdy już nasze urządzenia są uzbrojone w odpowiedni firmware możemy przystąpić do zestawienia połączenia,  ja jak widzicie mam
jedno wpięte w ZB600 , a drugie podłączone do FTDI na płytce ATB.

Obrazek

Do wgrywania oprogramowania też używam CC Debugera.  Moje firmware jest też znacznie bardziej rozbudowane od tego które udostępniam.
Teraz potrzebujemy 2 okna terminala ... na jednym łączymy się z ruterem , a na drugim z kordynatorem ...

Obrazek

jak widać na porcie COM10  po lewej mam KOORDYNATOR , a na COM6  mam RUTER, oba odpowiedziały OK i w tym momencie
mam zestawioną sieć ZigBEE jest możliwy przesył danych w obie strony. Oba urządzenia pracują na 38400bps  8 bitów danych 1 bit stopu.

Obrazek

co widać wyżej udało się i wcale nie było takie trudne prawda
Dobrze zobaczmy teraz jakie mamy parametry sieci i co możemy ustawić:

--- Komendy AT ---

AT+GETADDR  -- pozwala na odczytanie adresu naszego urządzenia

ADDR=0xF18D  to adres rutera  gdyż Koordynator zawsze ma adres 0x0000; znajomość adresów przydaje się gdy chcemy wysłać
spersonalizowane wiadomości/dane  dla konkretnego urządzenia w sieci co wykonujemy ciągiem:

--- P2P &lt;adres&gt; &lt;wiadomość/dane&gt;   np w naszym przykładzie:
--- P2P F18D Witaj Ruter   ;  jako że adres podaliśmy rutera wiec on otrzyma wiadomość

AT+GETPANID  -- pozwala pobrać PAN ID naszej sieci

--- PANID=0xCD82   - nasze połączenie ma ID 0xCD82

AT+GETCFG  -- pozwala pobrać ustawienia naszej sieci

38400 0
PANID=0xCD82
ADDR=0xF18D
ADDR=0x0000
CHANNEL=11/2405MHz

W zwracanych informacjach znajdziemy ustawienia UARTU , PANID, Adresy urządzeń w sieci  gdzie 1 ADDR to urządzenie wywołujące GETCFG
oraz informacje o kanale i częstotliwości transmisji

AT+RESTART   --- pozwala uruchomić ponownie urządzenie  zwraca RESTART OK jeśli wszystko przebiegło prawidłowo
AT+RESET --- resetuje urządzenie i zwraca SETUART OK; SETCHN OK; SETPANID OK</li>
AT+SETUART --- pozwala na ustawienie komunikacji UART , zwraca SETUART OK lub FALSE.  Pozwala ustawić  numer portu
UART - 0 lub 1,  baudrate w zakresie 9600 - 115200, oraz kontrolę przepływu.  Domyślne ustawienia to  UART0 , 38400bps, Flow control: 0  -- przykład ustawienia :  AT+SETUART 0 38400 0

AT+SETCHN  (nr kanału) --- pozwala ustawić kanał transmisji (domyślnie 11)>
AT+SETPANID (panid) --- pozwala ustawić PAN ID dla sieci w zakresie 0x0000 - 0x3FFE. Pan ID jest 16 bitowym identyfikatorem sieci,
coordynator automatycznie ustawia PAN ID.

AT+GETUART --- wyświetla ustawienia portu UART
AT+GETCHN --- wyświetla kanał i częstotliwość radia
AT+GETIEEE --- zwraca 64bitowy adress urządzenia np: w naszym przykładzie IEEE=99 A3 37 06 00 4B 12 00

Obrazek

I to w zasadzie wszystko co potrzebujemy w tej chwili do komunikacji i przesyłania informacji na poziomie podstawowym.
Gdy chcemy więcej należy już zapoznać się z językiem C dla 8051 w środowisku IAR EW8051 i wypada mieć CC Debuger,
a wtedy mamy pełną kontrolę nad tym co nam Core2530 udostępnia , a jest tego dużo

Wysokich transferów ....
..:: KONTO PRZYGOTOWANE DO USUNIĘCIA ::..
💫Lothar TeaM
💦GitHUB
💦Google Drive
💦Sotton

ODPOWIEDZ

Wróć do „ZigBEE”