Programowanie modułu Tibbo EM1206

Programowanie modułu Tibbo EM1206
Pobierz PDF Download icon

W kwietniowym numerze Elektroniki Praktycznej rozpoczęliśmy naukę programowanie modułu ethernetowego Tibbo EM1206. W tym odcinku zajmiemy się połączeniem płyty ewaluacyjnej em1206 z siecią bezprzewodową.

90 ELEKTRONIKA PRAKTYCZNA 8/2010 notatnik konstruktora Programowanie modułu Tibbo EM1206 W  kwietniowym numerze Elektroniki Praktycznej rozpoczęliśmy naukę programowanie modułu ethernetowego Tibbo EM1206. W  tym odcinku zajmiemy się połączeniem płyty ewaluacyjnej em1206 z  siecią bezprzewodową. Listing 1. Deklaracja linii używanych do współpracy z modułem include ?global.tbh? ?poniższa deklaracja pinów jest przystosowana do mozaiki ścieżek ?na płycie em1206ev, w układzie docelowym może zostać zmieniona Const WLN_RST=PL_IO_NUM_11 Const WLN_CS=PL_IO_NUM_15 Const WLN_DI=PL_IO_NUM_12 Const WLN_DO=PL_IO_NUM_13 Const WLN_CLK=PL_IO_NUM_14 ?nazwa SSID Access Pointa, z którym zamierzamy się połączyć const AP_NAME=?TIBBO? ?klucz WEP: ?-pusty brak zabezpieczenia ?-10 znaków HEX, klucz 40bit (potocznie 64bit) ?-26 znaków HEX, klucz 104bit (potocznie 128) const WEP_KEY=?? dim error as no_yes Listing 2. Inicjalizacja systemu sub on_sys_init() dim x,y as byte ? zmienne dim task as pl_wln_tasks dim s as string error=NO ?flaga błedu ?sprawdzenie czy wcześniej zadeklarowano ?linie SPI dla GA1000 if WLN_RST=PL_IO_NULL or WLN_CS=PL_IO_NULL or WLN_DI=PL_IO_NULL or WLN_DO=PL_IO_NULL or WLN_CLK=PL_IO_NULL then sys.halt error=YES ? błąd sprawdź deklaracje end if ?alokowanie buforów sock.rxbuffrq(4) sock.txbuffrq(4) wln.buffrq(6) sys.buffalloc ?restart GA1000 io.num=WLN_RST io.enabled=YES io.state=LOW io.state=HIGH ?mapowanie zadeklarowanych wcześniej linii ?SPI dla GA1000 wln.csmap=WLN_CS io.num=WLN_CS io.enabled=YES wln.dimap=WLN_DI wln.domap=WLN_DO io.num=WLN_DO io.enabled=YES wln.clkmap=WLN_CLK io.num=WLN_CLK io.enabled=YES ?konfiguracja socketu sock.num=0 ? numer socketu ?protokół komunikacji sock.protocol=PL_SOCK_PROTOCOL_TCP ?nr portu sock.localportlist=?1001? ? dozwolony interfejs sock.allowedinterfaces=?WLN? ? pozwolenie na przyjmowanie zapytań: od wszystkich sock.inconmode=PL_SOCK_INCONMODE_ANY_IP_ANY_PORT sock.reconmode=PL_ SOCK_RECONMODE_3 ?konfiguracja interfejsu WiFi (GA1000) wln.mac=?0.0.102.103.104.2? ?przypisanie adresu MAC wln.ip=?192.168.0.86? ?przypisanie adresu IP wln.gatewayip=?192.168.0.1? ?brama sieciowa wln.netmask=?255.255.255.0? ?maska sieci wln.domain=PL_WLN_DOMAIN_EU ?wybór częstotliwości Do realizacji połączenia z  siecią WiFi użyjemy dedykowanego układu interfejsu radiowego WiFi (802.11b/g) oznaczonego GA1000. Komunikacja z  nim odbywa się poprzez SPI, zapewniający dużą prędkość wymiany informacji pomiędzy modułami. Należy zaznaczyć, że GA1000 współpra- cuje również z  innymi modułami ether- netowymi z  oferty Tibbo, m.in. EM1000, EM1202 i  EM1206 oraz stanowi rozwi- nięcie poprzedniego modelu WA1000 (802.11b). Producent zadbał, aby konfigurowa- nie i  obsługa modułu nie przyprawiały o ból głowy. Dzięki dostępności gotowych obiektów i metod, ten wysiłek jest ograni- czany do niezbędnego minimum. Sam moduł radiowy GA1000 ma nie- wielkie wymiary (42×19×6,7  mm), co umożliwia stosowanie go w urządzeniach o niewielkich rozmiarach oraz mobilnych. Wbudowana antena pozwala na samodziel- ną pracę układu, a  ponadto złącze I-PEX MHF umożliwia dołączenie zewnętrznej anteny i wielokrotne zwiększenie zasięgu. Do komunikacji między modułem em1206 a  interfejsem GA1000 potrzeb- nych jest tylko 5 linii I/O. Linie te mogą być wybrane z  dostępnych linii ogólnego przeznaczenia modułu nadrzędnego. Do zasilania modułu radiowego jest wymagane napięcie stałe 3,3  V ?5%. Maksymalny pobór prądu wynosi oko- ło 280  mA podczas nadawania i  200  mA podczas utrzymywania łączności z innym urządzeniem WiFi. Moc transmisji można ustawiać programowo, a nawet całkowicie wyłączyć układ Dla aplikacji przemysłowych ważna jest również temperatura otoczenia, któ- ra zgodnie z  danymi katalogowymi może zawierać się w  przedziale ?20°C...+70°C, przy względnej wilgotności 10...90%. Interfejs WiFi GA1000 może współ- pracować zarówno z  sieciami korpo- Dodatkowe materiały na CD i FTP 91ELEKTRONIKA PRAKTYCZNA 8/2010 Programowanie modułu Tibbo EM1206 R E K L A M A Rysunek 1. Dodawanie pliku do drzewa projektu Rysunek 2. Wyświetlenie katalogu pro- jektu Rysunek 3. Otwarcie pobranego z Inter- netu pliku ga1000fw.bin Listing 3. Otwarcie pliku konfiguracji sprzętowej oraz dalsze nastawy modułu Tibbo em1250 ?włączenie interfejsu WiFi (GA1000) romfile.open(?ga1000fw.bin?) if wln.boot(romfile.offset)<>OK then sys.halt error=YES ?komunikat: sprawdzić połączenie end if ?ustawienie zabezpieczeń, szyfrowanie WEP ?funkcja rozpoznaje tryb szyfrowania po długości klucza select case len(WEP_KEY) case 0: ?WEP disabled case 10: x=wln.setwep(WEP_KEY,PL_WLN_WEP_MODE_64) goto a1 case 26: x=wln.setwep(WEP_KEY,PL_WLN_WEP_MODE_128) a1: if x<>OK then sys.halt error=YES end if while wln.task<>PL_WLN_TASK_IDLE wend case else: sys.halt error=YES ?błąd klucza end select ?skanowanie w poszukiwaniu Access Pointa if wln.scan(AP_NAME)<>OK then sys.halt error=YES ?błąd end if while wln.task<>PL_WLN_TASK_IDLE wend if wln.scanresultssid<>AP_NAME then sys.halt ?Access point o danej nazwie SSID ? nie został odnaleziony error=YES end if ?połączenie z znalezionym Access Pointem if wln.associate(wln.scanresultbssid,wln.scanresultssid,wln. scanresultchannel,wln.scanresultbssmode)<>OK then sys.halt error=YES ? błąd end if while wln.task<>PL_WLN_TASK_IDLE wend if wln.associationstate<>PL_WLN_ASSOCIATED then sys.halt error=YES ? błąd, sprawdź klucz end if end sub Listing 4. Obsługa zdarzeń od interfejsu WiFi ?Zdarzenie od interfejsu sieciowego sub on_wln_event(wln_event as pl_wln_events) dim x as byte sys.halt ? zdarzenie, w zmiennej x w trybie debagowania można odnaleźć błąd ? 0 - Wi-Fi sprzęt został odłączony, wyłączony lub działa niepoprawnie ? 1 - interfejs Wi-Fi został odłączony od sieci bezprzewodowej x=wln_event end sub Interfejs WiFi GA1000, poza możli- wością wpisania stałych parametrów sie- ci bezprzewodowej (SSID, tryb działania Ad hoc lub Infrastruktura, klucz WEP itd.), pozwala też na wyszukiwanie do- stępnych sieci bezprzewodowych. Na początku napiszemy jednak naj- prostszy program pozwalający na ko- wane szyfrowanie WEP (Wired Equiva- lent Privacy) o  kluczu 40- lub 104-bi- towym. racyjnymi (tryb klienta), jak i Ad hoc (tryb równorzędny). W celu zabezpie- czenia komunikacji jest wykorzysty- 92 ELEKTRONIKA PRAKTYCZNA 8/2010 notatnik konstruktora Listing 6. Zmiany w konfiguracji modułu przygotowujące go do pracy w trybie Ad hoc. ?stała wyboru trybu działania moduły WiFi const WIFI_MODE = 0 ? 0 - ADHOC, 1 - AP klient const ADHOC_CHANNEL = 6 ? kanała dla ADHOC if WIFI_MODE = 0 then wln.networkstart(AP_NAME,ADHOC_CHANNEL) while wln.task<>PL_WLN_TASK_IDLE wend if wln.associationstate<>PL_WLN_OWN_NETWORK then sys.halt error = YES end if else ?skanowanie w poszukiwaniu Access Pointa if wln.scan(AP_NAME)<>OK then sys.halt error=YES ?błąd end if while wln.task<>PL_WLN_TASK_IDLE wend if wln.scanresultssid<>AP_NAME then sys.halt ?Access point o podanej nazwie SSID ?nie został odnaleziony error=YES end if ?połączenie z znalezionym Access Pointem if wln.associate(wln.scanresultbssid,wln.scanresultssid,wln. scanresultchannel,wln.scanresultbssmode)<>OK then sys.halt error=YES ? błąd end if while wln.task<>PL_WLN_TASK_IDLE wend if wln.associationstate<>PL_WLN_ASSOCIATED then sys.halt error=YES ? błąd, sprawdź klucz end if end if munikację z  znaną nam siecią. Pisanie aplikacji rozpoczynamy od deklaracji linii IO interfejsu SPI oraz ustawienia parametrów sieci (listing  1). Następnie przeprowadzamy konfigurowanie mo- dułu. W  tym celu skorzystamy zdarze- nie on_sys_init, które jest wykonywane jako pierwsze po włączeniu zasilania układu lub jego zerowaniu. Spo- sób inicjalizacji syste- mu zamieszczono na listingu 2. W  tym miejscu należy dołączyć do projektu plik binar- ny odpowiadający za konfigurację sprzę- tową interfejsu WiFi: ga1000fw.bin. Klikamy prawym przyciskiem myszy na drzewie Listing 5. Realizacja procedury echa ?Pętla echo na zadeklarowanym porcie dostępnym od strony sieci bezprzewodowej poprzez TELNET sub on_sock_data_arrival() sock.setdata(sock.getdata(sock.txfree)) sock.send end sub ?Informuje że coś się zmieniło na sockecie sub on_sock_event(newstate as pl_sock_state, newstatesimple as pl_sock_state_ simple) if newstatesimple=PL_SSTS_EST then pat.play(?G~?,PL_PAT_CANINT) else pat.play(?-?,PL_PAT_CANINT) end if end sub projektu i  wybieramy Add Existing File (rysunek  1). Pojawi się okno, w  którym należy wybrać Project Folder, a następnie przycisnąć klawisz Browse (rysunek  2). Na ekranie ukaże się zawartość folderu z projektem. Teraz musimy pobrać z In- ternetu (za pomocą przeglądarki interne- towej http://tibbo.com/downloads/basic/ firmware.html lub bezpośrednio http:// tibbo.com/downloads/secure/ga1000fw. bin) plik binarny ga1000fw.bin i  sko- piować go do folderu z  projektem. Gdy już to zrobimy, możemy w oknie wybo- ru zaznaczyć go i otworzyć (rysunek 3). Następnie klikamy OK. Rezultatem po- winno być dodanie pliku do drzewa pro- jektu. Na listingu  3 zamieszczono dalszą część kodu źródłowego, odpowiedzialną za otwarcie pliku konfiguracji sprzęto- wej. W  taki sposób poprawnie skonfi- gurowaliśmy i  zainicjowaliśmy moduł em1206 z interfejsem sieciowym do pra- cy w  sieci WiFi jako klienta Access Po- inta. Dalsza część programu odpowiada za obsługę zdarzeń wynikających z  pracy w sieci oraz obsługę zdarzeń systemowych (listing 4). Aby pokazać aktywność urządzenia, procedura z listingu 5 działa jak echo. To znaczy dane które zostaną odebrane przez otwarty port urządzania (dla przypomnie- nia ? 1001), zostaną z powrotem odesłane niezmienione. Dodatkowo użytkownik zo- stanie o tym poinformowany o mignięciem diody LED. Efekt działania programu pre- zentuje ekran umieszczony na rysunku 4. Kodu źródłowego z  listingu  5 może- my również z powodzeniem użyć do kon- figurowanie urządzenia Tibbo do pracy w trybie równorzędnym Ad hoc. Musimy jedynie dodać w ciele deklaracji stałe (jak na listingu 6) oraz zmienić procedurę roz- poznającą zadeklarowany tryb. W celu przetestowania działania ukła- du należy pamiętać, aby ustawić odpo- wiedni adres IP karty bezprzewodowej komputera. Moduły Tibbo mają wiele możliwości, które można z powodzeniem wykorzysty- wać w  aplikacjach, zarówno komercyj- nych jak i  przemysłowych. Na podstawie lektury artykułu dowiedzieliśmy się, jak poprawnie skonfigurować moduł do pra- cy w sieciach statycznych przewodowych i bezprzewodowych. Po więcej informacji na temat środowiska TAIKO warto sięgnąć do strony producenta http://www.tibbo. com. Wśród wielu przykładów odnajdzie- my między innymi przykład programu ilustrującego sposób implementacji współ- pracy z sieciami z dynamicznie przydzie- lającymi adres IP (DHCP), z  protokołem SMTP oraz FTP. Mikołaj Zarzycki m.zarzycki@soyter.pl Soyter Sp. z o.o. Rysunek 4. Efekt działania programu echo TCP

Artykuł ukazał się w
Sierpień 2010
DO POBRANIA
Pobierz PDF Download icon
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik lipiec 2020

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio lipiec 2020

Świat Radio

Magazyn użytkowników eteru

APA - Automatyka Podzespoły Aplikacje czerwiec 2020

APA - Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna czerwiec 2020

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Praktyczny Kurs Elektroniki 2018

Praktyczny Kurs Elektroniki

24 pasjonujące projekty elektroniczne

Elektronika dla Wszystkich czerwiec 2020

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów