Interfejs Wi-Fi jest coraz chętniej stosowany w wielu - dawniej nietypowych - zastosowaniach. Na przykład, w aparatach fotograficznych jest on używany do przesyłania zdjęć i sterownia funkcjami aparatu. Modne ostatnio małe drony z miniaturowymi kamerami przesyłają poprzez Wi-Fi obraz do smartfona i są przez niego sterowane.
Specyfikacja interfejsu, oraz olbrzymia popularność spowodowały, że powstają rozwiązania przeznaczone dla układów sterowania (embeded) lub coraz bardziej popularnych aplikacji IoT. Jednym z takich rozwiązań jest pokazany na fotografii 1 moduł HF-A11 produkowany przez chińską firmę Shanghai High - Flying Technology Co. HF-A11 ma wymiary 25 mm×40 mm. Przy jednej z krawędzi płytki drukowanej umieszczono dwurzędowe złącze - 14 goldpinów do dołączenia zasilania i interfejsów komunikacyjnych. Funkcje wyprowadzeń opisano w tabeli 1.
Już z opisu wyprowadzeń można wywnioskować, że moduł ma wbudowane: interfejs szeregowy UART, sieciowego Ethernet i linie portu GPIO. Ponieważ jest to tez moduł Wi-Fi , to ma też kompletny tor radiowy z driverem i układem PHY (nadajnik, odbiornik). Schemat funkcjonalny pokazano na rysunku 2.
Wi-Fi
Sieci Wi-Fi najczęściej pracują z wykorzystaniem standardów IEEE 802.11 b/g/n. Najbardziej popularnym jest 802.11b umożliwiający wymianą danych z teoretyczną prędkością do 11 Mb/s. Wbudowany mechanizm dynamic rate shifting umożliwia dynamiczną zmianę szybkości transmisji w zależności od stanu kanału transmisyjnego. Wraz ze wzrostem dystansu pomiędzy nadajnikiem a odbiornikiem (spadek poziomu sygnału), lub ze wzrostem poziomu zaburzeń prędkość przesyłania danych jest zmniejszana do 5,5; 2 lub 1 Mb/s.
Standard 802.11g jest rozwinięciem 802.11b i w założeniu ma zapewnić dużą prędkość transmisji przy odporności na zaburzenia, większy zasięg i pracę w paśmie 2,4 GHz. Znacząca różnica w prędkości wymusiła inne metody modulacji. Sieć radiowa 802.11b pracuje z modulacją CCK (Complementary Code Keying), a 802.11g z modulacją OFDM (Orthogonal Frequency Division Multiplexing). Oczywiście, trudno oczekiwać w takiej sytuacji kompatybilności i moduł musi pracować w dwóch systemach wykorzystując mechanizm protekcji wykrywający i przełączający moduł na dany typ modulacji. Standard 802.11n pracuje z szybkościami 100, 250, 540 Mb/s w paśmie częstotliwości 2,4 lub 5,0 GHz. Osiąganie takich prędkości możliwe jest dzięki użyciu technologii Multiple Input Multiple Output (MIMO). Pasmo 2,4 GHz w standardzie 802.11b jest podzielone na 14 kanałów o szerokości 22 MHz każdy (tabela 2).
Część radiowa pracuje w zakresie 2,412…2,484 GHz i wymaga odpowiedniej anteny, by uzyskać żądany zasięg. Producent oferuje dwie opcje. Pierwsza z nich to antena zamontowana na płytce drukowanej modułu. Moduł musi być tak umieszczony, aby antena była oddalona od części metalowych lub elementów zakłócających. Zaleca się, aby elementy obudowy lub konstrukcyjne, w tym też z tworzywa sztucznego, były oddalone od anteny o minimum 10 milimetrów.
Inną opcją jest zastosowanie anteny zewnętrznej na pasmo 2,4…2,5 GHz. Na płytce umieszczono gniazdo antenowe I-PEX pasujące do wtyków anten zewnętrznych standardu IEEE802.11. W testowanym module zastosowano takie rozwiązanie. W czasie prób uzyskałem zasięg porównywalny z zasięgiem domowych routerów Wi-Fi.
Niestety, sieć radiowa jest podatna na ataki hakerskie. W standardzie IEEE 802.11 do zabezpieczenia przewidziano mechanizm szyfrowania transmisji WEP zabezpieczający ją przed nieautoryzowanym podsłuchem i dostępem do sieci. Algorytm szyfrowania opiera się na kluczu o stałej długości 40, 64, 128, 152 lub 256 bitów. Długość klucza jest wybierana przez użytkownika, a sam klucz generowany na podstawie hasła. Co ważne, klucz nigdy nie jest przesyłany droga radiową, ale zawsze tworzony lokalnie w każdym urządzeniu należącym do sieci w tym również w punkcie dostępu. Ma to znacznie utrudnić podsłuchanie przesyłanych, szyfrowanych danych. W praktyce WEP okazał się bardzo słabym zabezpieczeniem. Klucz nie jest zmieniany w całym czasie posługiwania się hasłem i na dodatek łatwo go złamać za pomocą ogólnie dostępnego oprogramowania. Sieci zabezpieczone WEP nie są uważane za bezpieczne.
Znacznie lepszym zabezpieczeniem jest mechanizm WPA. W trakcie przesyłania danych klucze szyfrujące są zmieniane dynamicznie, dzięki czemu znacznie trudniej odszyfrować przesyłane danych i włamać się do sieci. Autoryzacja w szyfrowaniu WPA może przebiegać ma dwa sposoby. Pierwszy polega na łączeniu z serwerem autoryzacji (np. Radius). Drugi sposób wykorzystuje hasło użytkownika podobnie, jak WEP. Na jego podstawie jest tworzony klucz PSK. Mechanizm WPA jest obsługiwany przez coraz większą liczbę Acces Pointów, a sieć tak zabezpieczona jest uważana (póki co) za bezpieczną.
Kolejnym sposobem mającym za zadanie utrudnić życie hakerom jest blokowanie rozgłaszania SSID. Identyfikator SSID jest nazwą sieci, a wyłączenie jej rozgłaszania powoduje, że trudniej jest ją wykryć, ponieważ jej nazwa nie pojawi się na liście dostępnych sieci.
Problem bezpieczeństwa powoduje, że szuka się różnych metod zabezpieczanie przed włamaniem. Z łatwych w użyciu jest mi znane filtrowanie adresów MAC kart sieciowych. Zabezpieczenie kłopotliwe i mało skuteczne, bo łatwo można zmienić programowo adresy MAC. Dużo lepiej wyglądają zabezpieczenia definiowane w normie IEEE 802.11i. Wykorzystywany jest tam algorytm silnego szyfrowania AES z kluczami o długości 128, 192 lub 256 bitów oraz uwierzytelnienie EAP i protokół dynamicznej zmiany klucza TKIP. Ta norma nie jest kompatybilna z IEEE 802.11b, ale jest wspierana przez HF-A11.
Moduł HF-A11 stosuje zabezpieczenia WEP, WPA-PSK, WPA2-PSK i WAPI. Do kodowania są używane klucze WEP64, WEP128, TKIP i AES.
Interfejs Ethernet
HF-A11można podłączyć do sieci Ethernet w dwu konfiguracjach sprzętowych: z transformatorem separującym lub bez niego. Warstwa sprzętowa interfejsu umożliwia transmisję z prędkością zgodnie ze standardem 10/100 Mbit/s. Najbardziej rozpowszechnionym sposobem dołączenia do sieci Ethernet jest zastosowanie transformatora i złącza RJ-45, jak pokazano na rysunku 2. W testowanym układzie ewaluacyjnym zastosowano popularny transformator 08B0-1X1T -06-F zintegrowany w jednej obudowie ze złączem RJ-45. Można też połączyć się bez transformatora, jak to pokazano na rysunku 3. Interfejs Ethernet jest domyślnie wyłączony, po to, aby obniżyć pobór mocy, gdy się z niego nie korzysta.
Interfejs UART
Interfejs UART jest przeznaczony do przesyłania danych, konfigurowania modułu i sterowania jego pracą. Składa się z 4 linii: TxD, RxD, RTS i CTS i może pracować z prędkością z zakresu 1200…230400 b/s. Poziom logiczny wysoki na liniach interfejsu to +3,3 V, a niski około 0 V. Aby moduł można było połączyć do urządzeń zewnętrznych (na przykład do laptopa PC) poprzez RS-232, jest konieczne użycie konwertera MAX2323 lub podobnego.
Moduł ewaluacyjny
Moduł HF-A11 jest wyposażony w złącze goldpinów i aby go przetestować, a potem używać w konkretnej aplikacji, trzeba go "obudować" dodatkowymi układami zasilania i interfejsów komunikacyjnych. W ofercie firmy Shanghai High Flying Electronics Technology jest dostępny moduł ewaluacyjny, ale trudno go kupić. Z tego powodu zaprojektowałem - pokazany na fotografii 4 - układ ewaluacyjny zawierający:
- Gniazdo do wlutowania HF-A11.
- Zasilacz dostarczający napięć +3,3 V do zasilania modułu i +1,8 V do zasilania interfejsu Ethernet
- Układ interfejsu Ethernet z transformatorem, gniazdem RJ-45 i układem dopasowania.
- Układ Interfejsu RS-232 z konwerterem MAX2323 i gniazdem DSUB9.
- Przyciskami do zerowania modułu i przywracania nastaw fabrycznych.
- Diodami LED sygnalizującymi: gotowość modułu, połączenie Wi-Fi, napięcie na liniach RxD i TxD.
Schemat moduł ewaluacyjnego i projekt płytki drukowanej można znaleźć w materiałach dodatkowych. Układ powinien być zasilony napięciem ok. +5 V. Wyższe napięcie zasilające przy poborze prądu rzędu 200…330 mA powodują mocne nagrzewanie się stabilizatora +3,3 V. Po zmontowaniu układ w zasadzie nie wymaga uruchomienia. Jedynie trzeba sprawdzić poprawność napięć zasilania +3,3 V i +1,8 V. Jeżeli napięcia są odpowiednie, to można wlutować HF-A11 i przystąpić do testów.
Tryby pracy HF-A11
Moduł Wi-Fi może pracować w trybach: AP (Access Point), STA (Short for Station). Moduł pracujący w trybie AP jest węzłem głównym sieci o topologii gwiazdy. Taka topologia jest doskonale znana wszystkim użytkownikom domowych sieci Wi-Fi. W sieciach domowych funkcję urządzenia AP spełnia router z wbudowanym interfejsem Wi-Fi. Każdy komputer lub inne urządzenie w sieci komunikuje się z punktem dostępowym i przez niego przechodzi cała transmisja danych. Użytkownicy sieci nie mogą się komunikować się pomiędzy sobą bez pośrednictwa AP. Konfiguracja STA umożliwia łączenie się do sieci poprzez punkt dostępu. Każdemu z modułów router przydzieli indywidulany adres IP.
Moduł HF-A11 można tak skonfigurować, aby pełnił funkcję punktu dostępu, a kolejne moduły dołączane do tej sieci pracowały w trybie STA (klientów).
Konfiguracja HF-A11
Moduł HF-A11 jest dość rozbudowany i ma spore możliwości konfiguracyjne. Konfiguracja jest możliwa przez wszystkie kanały transmisyjne: Wi-Fi, Ethernet i UART. Fabryczne, domyślne ustawienia wyłączają interfejs Ethernet. Dlatego, gdy włączamy moduł pierwszy raz, konfiguracja jest możliwa przez Wi-Fi lub UART.
Moduł Wi-Fi jest domyślnie skonfigurowany do pracy jako punkt dostępu AP. Po włączeniu modułu ewaluacyjnego z dołączona anteną można zobaczyć na liście sieci domyślnie rozgłaszaną nazwę SSID HF-A11x_AP. Po połączeniu się urządzenia STA z punktem dostępowym HF-A11x_AP zaświeca się dioda D2 nLink. W tym momencie możemy się połączyć z serwerem www umożliwiającym konfigurowanie modułu. Konfiguracja przez strony www jest standardowym wyposażeniem każdego urządzenia typu router. Żeby się połączyć z serwerem wpisujemy w przeglądarce internetowej adres IP http://10.10.100.254. Na ekranie komputera zostanie wyświetlony monit o nazwę użytkownika i hasło dostępu. Po wpisaniu wartości domyślnych (admin, admin) i zostanie wyświetlona strona konfiguracji modułu, jak na rysunku 5.
Pierwsza zakładka od góry umożliwia wybór trybu pracy: AP lub STA (domyślnie - AP). W zakładce Data Transfer Mode wybiera się pracę z interfejsem UART (Transparent Mode) lub z liniami GPIO. Zakładka AP Interface Setting (rysunek 6) jest przeznaczona do konfigurowania modułu Wi-Fi pracującego jako punkt dostępowy Access Point:
- Okno Network Mode umożliwia wybór standardu Wi-Fi, na przykład, wszystkie tryby 802.11b/g/n, tylko 802.11b itp.
- Okno Network Name (SSID) umożliwia zmianę rozgłaszanej nazwy sieci SSID, Domyślnie jest to HF-A11x_AP. Znaczenie opcji Hidden spowoduje ukrycie rozgłaszanej nazwy sieci.
- Okno BSSiD wyświetla adres MAC modułu.
- Okno Frequency (Channel) umożliwia wybranie konkretnego kanału radiowego Wi-Fi lub wybranie automatycznego wyboru tego kanału.
- Okno Security Mode umożliwia wybór rodzaju zabezpieczenia sieci Wi-Fi np. WEP, WPA-PSK itp. Domyślnie sieć nie jest zabezpieczona.
- W oknie LAN Setup ustawia się: adres IP serwera konfiguracji, maskę sieci, typ DHCP (Server lub Disable).
Jeżeli wybraliśmy tryb STA, to konfiguruje się go w zakładce STA Interface Settings (rysunek 7). Urządzenie STA w trakcie łączenia się do punktu dostępowego AP musi wybrać SSID naszej sieci i jeżeli sieć jest zabezpieczona, podać klucz. W czasie przyłączania do AP klikamy na Search w oknie AP’s SSID, co otwiera okno z listą odebranych sieci SSID (rysunek 8). Na liście zaznaczamy wybraną sieć (na rys. 7 jest tylko jedna sieć) i w oknie AP’s SSID zostanie wyświetlona sieć, do której się dołączyliśmy. W oknie Security Mode podajemy rodzaj zabezpieczenia sieci: OPEN, SHARED, WPAPSK i WPA2PSK. Opcja WAN Connection Type jest przeznaczona do ustawienia automatycznego pobierania wolnego adresu IP w sieci lub wpisania adresu na stałe.
Kolejna zakładka Application Setting jest przeznaczona do ustawiania parametrów interfejsu szeregowego UART oraz do konfigurowania ustawień sieciowych w czasie transmisji danych przesyłanych przez UART dalej połączeniem Wi-Fi (rysunek 9). Transmisja za pomocą interfejs UART domyślnie odbywa się z prędkością 57600 bp/s (57600, 8, n, 1) z zablokowaną sprzętową kontrolą przepływu danych CTS/RTS. Dane mogą być dalej przesyłane protokołem TCP lub UDP (okno Protocol) w trybie serwera lub klienta (okno Mode). Okno MAX TCP określa maksymalną liczbę gniazd (socket) dla protokołu TCP. Ostatnią zakładką konfiguracyjną jest Device Management (rysunek 10). Można tu przede wszystkim zmienić nazwę użytkownika i hasło dostępu do strony z parametrami oraz wykonać programowe zerowanie modułu (Restart Module).
Interfejs UART - tryby pracy
UART jest interfejsem komunikacyjnym spełniającym 2 funkcje: transmisji danych w aplikacji wykorzystującej HF-A11 lub jako interfejs konfiguracyjny.
Opisane możliwości konfiguracyjne z wykorzystaniem interfejsu Web są bardzo wygodne dla użytkownika, ale wyobraźmy sobie aplikację z mikrokontrolerem, w której zachodzi potrzeba zmiany jakiegoś parametru przez program sterujący. Konfiguracja przez www jest wtedy zupełnie nieprzydatna. Żeby można było zmieniać ustawienia wprowadzono możliwość konfigurowania modułu za pomocą komend AT. Do połączenia w czasie testów użyjemy komputera ze interfejsem RS-232 i dowolnym programem konsoli znakowej. Komputer należy dołączyć kablem RS-232 DB9 do modułu ewaluacyjnego.
Domyślnie interfejs UART domyślnie pracuje w trybie transmisji przeźroczystej. Wszystkie dane odebrane przez UART są przesyłane dalej przez Wi-Fi. Żeby wprowadzić moduł w tryb konfiguracji trzeba wpisać trzy znaki "+++". Moduł odpowie znakiem "a", który trzeba do niego ponownie wysłać. Jeżeli moduł odpowie "+ok" to znaczy, że przełączył się w tryb konfiguracji.
Moduł obsługuje spory zestaw komend AT. Można je sobie wyświetlić na terminalu po wpisaniu komendy AT+H. Format komend jest zgodny ze standardowymi komendami AT szeroko stosowanymi, na przykład, do obsługi i komunikacji z modemami GPRS. Komendy AT sterujące pracą modułu wymieniono w tabeli 3.
Kompletny opis wszystkich komend AT obsługiwanych przez HF-A11 można znaleźć w dokumentacji. Jako przykład opiszę dokładniej trzy wybrane komendy: NETP, UART i WMODE.
Komenda AT+NETP jest przeznaczona do odczytania lub ustawienia parametrów protokołu sieciowego. Po wpisaniu AT+NETP i wciśnięciu Enter moduł odsyła do terminala lub hosta (mikrokontrolera): rodzaj ustawionego protokołu (TCP lub UDP), funkcję w sieci (serwer lub klient), numer portu, IP serwera (jeśli moduł jest skonfigurowany jako klient). Domyślne ustawienia są następujące: protokół TCP, Serwer, port 8899, adres IP 10.10.100.100. Teraz zmienimy protokół na UDP i włączymy tryb pracy jako klient. W tym celu wpisujemy komendę AT+NETP=UDP, Client, 8899,10.10.100.100. Prawidłowe odebranie komendy jest sygnalizowane przez moduł odpowiedzią "+ok". Prawidłowość wysłanych zmian możemy stwierdzić przez ponowne wysłanie komendy AT+NETP. Na rysunku 11 pokazano realizację komendy NETP.
Komenda AT+UART jest przeznaczona do odczytywania i ustawiania parametrów transmisji porty szeregowego UART. Po wpisaniu AT+UART moduł odpowiada "+ok" i przesyła: prędkość transmisji w bodach (od 1200 do 460800), liczba bitów w słowie danych (od 5 do 8), liczba bitów stopu (1 lub 2), parzystość, sterowanie przepływem danych (rysunek 12). Zmiana parametrów transmisji najczęściej skutkuje koniecznością zmiany parametrów po stronie terminala znakowego lub hosta. W przeciwnym razie komunikacja przez port UART nie będzie możliwa.
Komenda AT+WMODE jest przeznaczona do zmiany trybu pracy modułu Wi-Fi. Po wpisaniu AT+WMODE moduł przesyła aktualną konfigurację. Żeby je zmienić trzeba wpisać na przykład AT+WMODE= AP, kiedy moduł był ustawiony w trybie STA (rysunek 13).
Testowanie połączenia modułu z siecią Wi-Fi
Testowanie modułu zaczniemy do sprawdzenia połączenia w konfiguracji punktu dostępowego AP. Punkt dostępowy rozgłasza swoją nazwę SSID, o ile nie został skonfigurowany, aby tę nazwę ukryć. Aby połączyć się z AP, będzie potrzebne urządzenie typu STA. Może to być laptop, tablet lub smartfon z interfejsem Wi-Fi lub inny moduł HF-A11 skonfigurowany do pracy w trybie STA. Najpierw trzeba połączyć urządzenie STA z punktem dostępu o nazwie HF-A11x_AP, potem w przeglądarce np. smartfonu wybrać adres 10.10.100.254 i po otwarciu strony modułu można zmieniać ustawienia, jak to zostało pokazane na rysunku 14. Do testów skonfigurowałem sieć otwartą, ale w praktycznych zastosowaniach trzeba wybrać zabezpieczenie, najlepiej WPA2-PSK z "solidnym" hasłem dostępu.
Teraz konfigurujemy HF-A11 jako STA i będziemy go łączyli z punktem dostępowym AP. Do tego celu wykorzystałem jeden z modeli routera z funkcją Wi-Fi stosowany w roli routera ADSL w domowych sieciach z dostępem do Internetu. Moduł skonfigurowany jak STA połączyłem do komputera za pomocą Ethernetu i otworzyłem zakładkę STA Interface Setting. A okienku AP’s SSID trzeba kliknąć na Search i z listy dostępnych SSID wybrać SSID naszego routera (rysunek 15). Po kliknięciu na Apply moduł HF-A11 łączy się z routerem i zaświeca się dioda nLink na module ewaluacyjnym. Router w swojej lokalnej sieci LAN nadaje modułowi numer IP i od tego momentu można łączyć się z modułem poprzez punkt dostępu.
Wykorzystywany w testach router również wykorzystuje serwer Web do konfigurowania i testowania. Po połączeniu się Ethernetem routera z komputerem można zobaczyć w oknie Device Info wykaz wszystkich urządzeń pracujących w sieci LAN (rysunek 16). Widać tu nasz moduł (hostname HF-A11) i komputer PC przyłączony do routera w celu otwarcia strony z konfiguracją. W sieci lokalnej nasz moduł ma teraz adres 192.168.1.3. Jeżeli połączymy się przez przeglądarkę internetową z tym adresem, to otworzy się strona konfi- guracyjna HF-A11.
Jak już wspominałem, przesyłanie danych może się odbywać w trybie przezroczystym. Do takiej pracy nie potrzeba punktu dostępowego AP - moduły mogą "rozmawiać" bezpośrednio przesyłając dane przez szeregowe porty UART. Moduły tak skonfigurowane nie wymagają inicjalizowania przez dołączone do nich układy mikrokontrolerowe (hosty), bo konfiguracja jest zapamiętywana w pamięci nieulotnej.
Moduł po włączeniu zasilania próbuje połączyć się z siecią Wi-Fi z ustawionymi wcześniej parametrami: nazwą SSID, trybem zabezpieczeń , typem protokołu (TCP, UDP) , rodzajem połączenia (serwer, klient), docelowy numer portu, oraz docelowy adres IP. Jeżeli w konfiguracji Working Mode Configurations ustawimy tryb pracy "transparent mode", to dane wysyłane przez UART są przesyłane przez Wi-Fi bez żadnych zmian.
Podsumowanie
Moduł HF-A11 zawiera kompletny tor Wi-Fi, interfejsy Ethernet (wymaga zewnętrznego transformatora i gniazda RJ45) i UART. Konfigurowanie poprzez stronę www i z użyciem komend AT pozwala użytkownikowi na elastyczne zmiany w działaniu modułu. Ciekawy jest tryb przezroczystego przesyłania danych, szczególnie przydatny tam, gdzie nie ma infrastruktury sieciowej. Niestety, w trakcie testowania miałem do dyspozycji tylko jeden moduł i nie mogłem sprawdzić konfiguracji i działanie tego trybu pracy. Tam, gdzie przeprowadzenie testów było możliwe, moduł sprawował się przewidywalnie i stabilnie.
Tomasz Jabłoński, EP