XSTICK USB – jak dołączyć PC do sieci XBee (na Arduino)
O znaczeniu komunikacji bezprzewodowej w dzisiejszym świecie nikogo nie trzeba przekonywać. Wraz ze wzrostem popularności tego typu transmisji zwiększa się oferta urządzeń ułatwiających zrealizowanie takiej transmisji w opracowywanych projektach. Jednym z producentów, którzy od wielu lat oferują taki asortyment jest firma Digi International, a moduły tego producenta z rodziny XBee zdobyły sobie uznanie zarówno wśród profesjonalistów, jak i hobbystów.
)
Przykład wykorzystania modemów z rodziny XBee opisywaliśmy w artykule Pierwsze kroki z XBee na przykładzie STM32. |
W tym artykule opiszemy jak do sieci XBee można dołączyć komputer osobisty. Jako platformę testową wykorzystaliśmy:
- zestaw uruchomieniowy Arduino Uno z mikrokontrolerem ATmega328 z rodziny AVR
- płytkę Arduino Wireless Shield SD pośredniczącą pomiędz Arduino Uno i modemem XBee
- modem Xbee, np: XBP24BZ7WIT-004
- modem XBee dołączany do komputera, np. XU-Z11 (XSTICK USB)
- przewód USB A <-> USB B (do zasilania Arduino)
Montaż
Jak widać na filmie, z zestawu uruchomieniowego Arduino Uno, płytki Arduino Wireless Shield SD oraz modemu Xbee XBP24BZ7WIT-004 tworzymy tzw. kanapkę. Złącza w płytkach idealnie pasują do siebie, nie powinno więc być kłopotu z ich połączeniem. Tak naprawdę do działania w trybie nadawania modemu XBee wystarczą tylko trzy przewody, a mianowicie zasilanie oraz Tx jako linia danych. Dzięki płytce Arduino Wireless Shield SD mamy te połączenia już zrealizowane – zasilanie i linia danych Tx z mikrokontrolera jest podłączona do modułu XBP24BZ7WIT-004 pracującego jako nadajnik.
Do odbioru sygnału radiowego użyjemy modułu z wyglądu przypominającego pendrive’a, który w praktyce jest połączeniem modułu Xbee oraz konwertera UART<->USB. Dzięki temu po dołączeniu modułu do komputera system widzi go jako wirtualny port COM, którego numer możemy sprawdzić w menadżerze urządzeń. Po podpięciu modułu XU-Z11 do komputera i podłączeniu zasilania dla płytki Arduino, komunikacja między modułami sieci bezprzewodowej nawiązywana jest automatycznie.
Celem sprawdzenia poprawności działania układu możemy posłużyć się dowolnym monitorem portu szeregowego komputera w którym na początku należy ustawić odpowiednie opcje dotyczące transmisji danych, w naszym przypadku będą to:
- Nr portu COM (konieczne jest indywidualne sprawdzenie jaki numer system nadaje urządzeniu XU-Z11 w Managerze Urządzeń).
- Prędkość transmisji: 9600 b/s
- Długość danych: 8 bit
- Parzystość: brak.
- Bity stopu: 1.
- Sterowanie przepływem: brak
W prezentowanym przykładzie mikrokontroler AVR ATmega328 znajdujący się na płytce Arduino wysyła przez port szeregowy tekst „KAMAMI XSTICK TEST”. Taki też tekst powinien pojawić się w oknie terminala po rozpoczęciu transmisji. Niestety nie do końca tak jest, wprawdzie widać nasz tekst, ale co oznaczają inne znaki z kodu ASCII (rys. 1)?
Rys. 1. Widok z terminala
Odebrana ramka wyświetlana jako kod szesnastkowy znaków ASCII wygląda następująco:
7E 00 20 90 00 13 A2 00 40 A6 54 0D 8C 7A 01 4B 41 4D 49 20 58 53 54 49 43 4B 20 54 45 53 54 0D 0A 4F
Niniejszą ramkę najlepiej zdekodować za pomocą aplikacji XCTU, która dokładnie opisze, które bajty do czego służą (rys. 2).
Rys. 2. Okno programu XCTU
Oprogramowanie XCTU można pobrać ze strony producenta.