Elektroda.pl
Elektroda.pl
X
Elektroda.pl
PCBway
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Moduł WiFi RN131 - pierwsze starcie w warunkach domowych - tryb klienta i hosta

p.kaczmarek2 21 Maj 2019 09:36 1587 3
  • Moduł WiFi RN131 - pierwsze starcie w warunkach domowych - tryb klienta i hosta
    Witajcie moi drodzy
    Dzisiaj opiszę moje pierwsze starcie z mało znanym modułem WiFi RN131. Celem projektu było samodzielne odpalenie RN131 bez użycia gotowych rozwiązań takich jak płytka RN-131-EK. Przetestować chciałem zarówno tryb access pointa (RN131 w roli tak jakby routera - RN131 wspiera DHCP jako access point oraz routing między klientami!) oraz klienta istniejącej sieci WiFi z szyfrowaniem WPA-PSK2. Dla modułu mam docelowo parę wymyślonych zastosowań, ale tu opiszę tylko pierwsze kroki z nim. Dołączę do nich dokładne zrzuty ekranu oraz dokładne informacje co i jak robiłem, by w razie czego każdy zainteresowany mógł odwzorować moje kroki i poradzić sobie szybko z uruchomieniem RN131, mimo iż zdaję sobie sprawę, że są inne dobre i popularniejsze moduły WiFi...

    Moduł RN131
    RN131 to moduł WiFi który umożliwia pracę w trybie hosta i klienta, wspiera szyfrowanie WEP, WPA oraz WPA2.
    Posiada interfejsy UART i SPI. Oferuje programowalne piny GPIO oraz ADC. Można go prosto podłączyć do baterii dzięki zintegrowanemu układowi zasilania bateryjnego. Jednym z atutów RN131 jest jego niski pobór mocy.
    RN131 charakteryzuje:
    - transceiver 2.4-GHz IEEE 802.11b/g
    - niski pobór mocy: 4 uA tryb snu, 40 mA odbiór, 210 mA nadawanie
    - duży throughput, 1 Mbps przy TCP/IP i szyfrowaniu WPA2
    - mały rozmiar, moduł do montażu powierzchniowego
    - ceramiczna antena na pokładzie oraz dostępne złącze U.FL do podłączenia zewnętrznej anteny
    - 8-Mbit pamięci flash i 128KB RAM
    - sprzętowy interfejs UART
    - 10 pinów IO
    - 8 pinów ADC
    - moduł RTCC wspierający wybudzanie RN131 z uśpienia i time stamping
    - może być zasilany stabilizowanym 3.3V lub 2-3V z baterii
    - wspiera szyfrowanie WPA2-PSK
    - wsparcie uzyskiwania dynamicznego IP poprzez DHCP

    Schemat blokowy RN131:
    Moduł WiFi RN131 - pierwsze starcie w warunkach domowych - tryb klienta i hosta
    RN131 zostało opracowane przez Roving Networks, które potem było przejęte już przez Microchipa.

    Użyte PCB
    Początkowo chciałem zaprojektować PCB od zera, ale tak się złożyło, że w sieci krążył już gotowy projekt który w pełni spełniał moje wymagania. To RN131 Breakout Board od SparkFun, projekt open hardware. W sieci znalazłem jego źródła Eagle (.brd i .sch) których użyłem, by zamówić odpowiedni panel.
    Tak wygląda ta PCB w Eagle:
    Moduł WiFi RN131 - pierwsze starcie w warunkach domowych - tryb klienta i hosta
    Tak wygląda utworzony przeze mnie panel którego produkcję zleciłem płytkarni:
    Moduł WiFi RN131 - pierwsze starcie w warunkach domowych - tryb klienta i hosta
    I wyprodukowany panel:
    Moduł WiFi RN131 - pierwsze starcie w warunkach domowych - tryb klienta i hosta
    Co ciekawe, przy tworzeniu tego panelu popełniłem małe przeoczenie, którego nie zauważyłem na czas przy zleceniu produkcji. Sam producent płytek też na to nie zwrócił uwagi i w ten sposób każda osobna płytka na panelu ma nieco inną warstwę opisową - to widać po dokładnym przyglądnięciu się.


    Krok po kroku uruchomienie i testy
    Pierwsze testy wykonałem po prostu przylutowując kabelki do odpowiednich pinów modułu. Informacje co podłączyć wziąłem z dokumentacji:
    Moduł WiFi RN131 - pierwsze starcie w warunkach domowych - tryb klienta i hosta
    Wybrałem wersję zasilania z 3.3V DC, zaznaczoną na obrazku.
    Pin RESET zostawiłem niepodłączony, gdyż nie jest to wymagane:
    Moduł WiFi RN131 - pierwsze starcie w warunkach domowych - tryb klienta i hosta
    Do tego oczywiście przylutowałem kabelki też do pinów UART:
    Moduł WiFi RN131 - pierwsze starcie w warunkach domowych - tryb klienta i hosta
    Wyszło tak:
    Moduł WiFi RN131 - pierwsze starcie w warunkach domowych - tryb klienta i hosta
    Potem podłączyłem całość do przejściówki USB to UART, pin TX RN131 bezpośrednio, pin RX 131 przez rezystory by go chronić przed za dużym napięciem (nie jest 5V tolerant, wiec 5V na UART by mogło mu zaszkodzić), dodatkowo na płytce stykowej umieściłem LDO 3.3V (użyłem TC1264, ale w zasadzie mógłby być każdy), ustawiłem odpowiedni baud rate (9600 domyślnie) i rozpocząłem komunikację z modułem poprzez wysłanie sekwencji "$$$":
    Moduł WiFi RN131 - pierwsze starcie w warunkach domowych - tryb klienta i hosta
    Moduł odpowiedział sekwencją "CMD":
    Moduł WiFi RN131 - pierwsze starcie w warunkach domowych - tryb klienta i hosta
    Oznaczało to, że przeszedł w tryb komend i można wydawać mu polecenia i np. skonfigurować tryb AP hosta lub clienta.
    Na początek wysłałem komende ls:
    Moduł WiFi RN131 - pierwsze starcie w warunkach domowych - tryb klienta i hosta
    i otrzymałem listę plików w pamięci oraz wersję firmware modułu:
    Moduł WiFi RN131 - pierwsze starcie w warunkach domowych - tryb klienta i hosta
    Ciekawostka: możliwe, że nie każdy wie, że w programie który używam (RealTerm) można wpisywać komendy bezpośrednio na czarnym ekranie, tzn. w konsolce i zatwierdzać je enterem. Jest to równoważne z wysłaniem tekstu poprzez pole i przycisk 'Send' z włączonym CRLF poniżej.
    Następnie z pomocą narzędzia Scan uzyskałem listę dostępnych sieci:
    Moduł WiFi RN131 - pierwsze starcie w warunkach domowych - tryb klienta i hosta

    Następnie uznałem, że skonfiguruję RN131 jako hosta (jako access point). Nie wszystko poszło OK, ponieważ nie udało się ustawić hasła, ale sam AP wstał bez problemu i od razu zaczął być widziany przez komputer:
    Moduł WiFi RN131 - pierwsze starcie w warunkach domowych - tryb klienta i hosta
    Warto wspomnieć, że w takim trybie access point RN131 wspiera aż do 7 klientów na raz i nadaje im IP poprzez DHCP:
    Moduł WiFi RN131 - pierwsze starcie w warunkach domowych - tryb klienta i hosta

    Następnie wróciłem do hardware. Uznałem, że pora spróbować przylutować RN131 normalnie do podstawki, mimo iż jest to dość trudne w warunkach domowych.
    Użyłem w tym celu najzwyklejszej opalarki, gdyż nie posiadam jeszcze zestawu hot air do lutowania:
    Moduł WiFi RN131 - pierwsze starcie w warunkach domowych - tryb klienta i hosta
    Pobieliłem piny, dałem dość dużo topnika i mocno nagrzałem płytkę, po czym ostrożnie ustawiłem na odpowiednim miejscu moduł RN131 i lekko docisnąłem go z góry. Udało się!
    Tak wygląda przylutowany moduł wraz z płytką i kabelkami, juz po po poprawnie przeprowadzonych testach, ale jeszcze przed czyszczeniem z topnika:
    Moduł WiFi RN131 - pierwsze starcie w warunkach domowych - tryb klienta i hosta
    Moduł WiFi RN131 - pierwsze starcie w warunkach domowych - tryb klienta i hosta
    Podpisane piny od spodu:
    Moduł WiFi RN131 - pierwsze starcie w warunkach domowych - tryb klienta i hosta

    Następnie uznałem, że pora przetestować RN131 w roli klienta. Zamierzałem podłączyć się do mojego routera, który korzysta z szyfrowania WPA-PSK2.
    Moduł WiFi RN131 - pierwsze starcie w warunkach domowych - tryb klienta i hosta
    Ponownie uruchomiłem tryb konfiguracji RN131 poprzez wysłanie sekwencji $$$:
    Moduł WiFi RN131 - pierwsze starcie w warunkach domowych - tryb klienta i hosta
    A potem użyłem kolejno komend:
    - set wlan ssid <SSID> aby ustawić nazwę mojej sieci
    - set wlan pass <hasło> aby ustawić hasło WPA-PSK2 z mojej sieci
    - set wlan join 1
    - save
    Moduł WiFi RN131 - pierwsze starcie w warunkach domowych - tryb klienta i hosta

    Po ustawieniu informacji o moim routerze i zapisaniu ich użyłem komendy "reboot" by uruchomić ponownie moduł. Po włączeniu RN131 połączył się od razu z moim routerem i uzyskał adres IP z pomocą DHCP:
    Moduł WiFi RN131 - pierwsze starcie w warunkach domowych - tryb klienta i hosta

    Na koniec jeszcze sprawdziłem poprawność połączenia z pomocą programu Putty. Putty skonfigurowałem tak by łączył się z adresem IP uzyskanym przez moduł (192.168.102 port 2000)
    Moduł WiFi RN131 - pierwsze starcie w warunkach domowych - tryb klienta i hosta
    Jak widać, wszystko działa. Komunikaty wysyłane przez WiFi przez Putty są poprawnie odbierane przez moduł RN131 i drukowane na UART.
    Na koniec jeszcze użyłem komendy "get everything" aby przejrzeć ustawienia modułu:
    Moduł WiFi RN131 - pierwsze starcie w warunkach domowych - tryb klienta i hosta
    Uwaga: komenda get everything w RN131 zwraca wszystkie ustawienia, łącznie z ustawionym hasłem sieci WiFi w postaci czystego tekstu!

    Podsumowanie
    W ten sposób udało mi się uruchomić mało znany moduł WiFi RN131 w trybie zarówno klienta jak i hosta. Nieodzowną pomocą w tym był WiFly Command Reference Manual od Microchipa, który zawiera listę wspieranych komend i opis jak należy je stosować. Mam nadzieję, że mój temat kogoś zainteresuje, a może nawet ułatwi start z WiFi bądź modułami RN.
    Załączam dokumentację, kilka użytecznych PDF, źródła Eagle dla dwóch rodzajów PCB (to z tematu oraz takie z dodatkowymi diodami LED), oraz sterowniki dla Windowsa dla przejściówki UART-USB której użyłem przy testach:

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • PCBway
  • #2
    dr.hannibal
    Poziom 22  
    p.kaczmarek2 napisał:
    Użyłem w tym celu najzwyklejszej opalarki, gdyż nie posiadam jeszcze zestawu hot air do lutowania:

    Tylko po co, skoro coś takiego można przylutować zwykłą lutownicą oporową (może z nieco cieńszym grotem). Hot-air'em (a tym bardziej opalarką) można narobić tylko więcej szkód niż pożytku.
  • PCBway
  • #3
    p.kaczmarek2
    Poziom 23  
    dr.hannibal napisał:
    p.kaczmarek2 napisał:
    Użyłem w tym celu najzwyklejszej opalarki, gdyż nie posiadam jeszcze zestawu hot air do lutowania:

    Tylko po co, skoro coś takiego można przylutować zwykłą lutownicą oporową (może z nieco cieńszym grotem). Hot-air'em (a tym bardziej opalarką) można narobić tylko więcej szkód niż pożytku.


    Dobre pytanie, nie napisałem tego w tekście, ale też na początku tak myślałem.
    Ale spójrz:
    Moduł WiFi RN131 - pierwsze starcie w warunkach domowych - tryb klienta i hosta
    Te piny są zasłonięte przez wystającą część modułu RN131 (tą po której stronie jest antena) i nie da rady do nich się dostać. Po przylutowaniu hot-airem teraz tam nawet nie ma szpary.