CC2530 łączcie się

CC2530 łączcie się
Razem głosów: 52 co stanowi: 85% całości.

imgres

Mamy 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.

Przechwytywanie

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
  • 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:

topolgie_20120104161929_20120104162021

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 / 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 …

Przechwytywanie

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.

SS105524

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 …

Przechwytywanie

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.

Przechwytywanie

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 <adres> <wiadomość/dane>   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
  • 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

Przechwytywanie

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 ….