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

Moduły Wi-Fi Atmel WINC1500 dedykowane dla aplikacji IoT cz. I.

TechEkspert 09 Cze 2015 22:09 1842 0
  • Moduły Wi-Fi Atmel WINC1500 dedykowane dla aplikacji IoT cz. I.
    Moduły Wi-Fi Atmel WINC1500 dedykowane dla aplikacji IoT cz. I.

    W tym roku Atmel zagościł w Polsce w ramach warsztatów Atmel Tech On Tour, zorganizowanych wraz z obchodzącą 25 lecie działalności firmą JM elektronik. Warsztaty dotyczyły rozwiązań IoT z wykorzystaniem modułów łączności bezprzewodowej WiFi WINC1500/WILC1000. Istotnym elementem było zaprezentowanie sprzętowych rozwiązań kryptograficznych zwiększających bezpieczeństwo projektów. Firma JM elektronik udostępniła materiały i narzędzia, dzięki którym użytkownicy wortalu elektroda.pl mają szansę zapoznać się z rozwiązaniami mogącymi znaleźć zastosowanie m.in w budowie urządzeń należących do rozwijającego się internetu rzeczy.

    Konfiguracja platformy testowej ATWINC1500-XSTK.

    Modułem głównym zawierającym mikrokontroler ARM? Cortex?-M0+, debuger oraz porty dla modułów rozszerzeń będzie płytka SAM D21 Xplained Pro.

    Moduły Wi-Fi Atmel WINC1500 dedykowane dla aplikacji IoT cz. I.

    Moduły Wi-Fi Atmel WINC1500 dedykowane dla aplikacji IoT cz. I.

    Porty rozszerzeń są czytelnie opisane po obu stronach płytki, co ułatwia testowanie. Do pierwszego portu rozszerzeń płytki SAM D21 podłączymy moduł łączności Wi-Fi WINC1500.

    Moduły Wi-Fi Atmel WINC1500 dedykowane dla aplikacji IoT cz. I.

    Moduł WINC1500 posiada zworkę, po której usunięciu możemy mierzyć pobierany prąd (spadek napięcia na rezystorze pomiarowym 1Om), na płytce znajduje się także moduł kryptograficzny ATECC108. Złącze modułu i płytka główna nie została zabezpieczona mechanicznie przed odwrotnym podłączeniem, należy zachować ostrożność. WINC1500 jest rozwiązaniem typu SOC pozwalającym na zestawienie połączenia Wi-Fi 2,4GHz w standardzie IEEE 802.11 b/g/n (1x1) z przepustowością do 72 Mbps, IEEE 802.11 WEP, WPA, WPA2. Moduł WINC1500 realizuje funkcjonalności Wi-Fi, stos TCP/IP opakowując całość API dostępnym dla mikrokontrolera przez interfejs SPI, UART, I2C. Obsługa wielu protokołów sieciowych na poziomie WINC1500 znacznie odciąża mikrokontroler. Możemy zestawić połączenie jako klient podłączony do AP, uruchomić AP (dla jednego klienta), zestawić połączenie Wi-Fi Direct. Szacunkowe szczytowe zapotrzebowanie na prąd modułu przy zasilaniu 3.3V dla stanu nadawania wynosi 172mA (18dBm), dla stanu odbierania 70mA (-90dBm), 1mA dla stanu bezczynności.





    Moduły Wi-Fi Atmel WINC1500 dedykowane dla aplikacji IoT cz. I.

    W dalszych próbach wykorzystamy także moduł I/O1 z czujnikiem temperatury, oświetlenia, oraz gniazdem karty micro SD. Przyjrzymy się także modułowi CryptoAuthXplained zawierającym ATSHA204(A), ATAES132A, ATECC508A. Do komunikacji z płytką oraz kompilacji przykładowych projektów wykorzystamy Atmel Studio 6.2. Atmel w ramach szkolenia dostarczył przykładowe projekty, które należy uzupełnić własnym kodem. Gotowe biblioteki znacznie ułatwiają wykorzystanie modułu WINC1500.

    Przykład - tryb AP.

    Do czego może służyć tryb punktu dostępowego w urządzeniach IoT, przecież zwykle postępujemy odwrotnie - przyłączamy urządzenia do będącego w zasięgu punktu dostępowego. Tryb AP może służyć np. do konfiguracji urządzenia. Wyobraźmy sobie urządzenie bez wyświetlacza klawiatury, posiadające jedynie interfejsy sterujące oraz zbierające dane z czujników, jak je skonfigurować? Do konfiguracji może być przydatny tryb AP, w którym urządzenie wystartuje domyślnie po rozpakowaniu z pudełka lub po zresetowaniu ustawień. Po połączeniu z urządzeniem, smartfonem lub laptopem możemy otrzymać prosty interfejs WEB, po wprowadzeniu konfiguracji moduł WINC1500 może przejść w tryb kliencki. Projekt który wypełnimy kodem znajduje się w załączniku samd21_xplained_pro_winc1500_empty_project.7z do prób wykorzystamy płytkę SAM D21 z podłączonym modułem Wi-Fi oraz moduł I/O1 zawierający m.in czujnik temperatury.

    Moduły Wi-Fi Atmel WINC1500 dedykowane dla aplikacji IoT cz. I.

    Komunikacja z modułem Wi-Fi będzie odbywać się z wykorzystaniem magistrali SPI oraz kilku linii sterujących (reset, enable, wake, irq, debug).

    Przechodzimy do pliku demo.c i zaczynamy implementować funkcję:

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Na początku wykonamy inicjalizację modułu WINC1500 oraz stosu sieciowego, komunikaty informujące o działaniu programu będziemy wysyłać portem szeregowym (emulowanym na magistrali USB). W pliku demo.c implementujemy także funkcję:

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Funkcja pozwoli na śledzenie stanu modułu.
    W funkcji demo_start() uruchomimy serwer WEB pozwalający na konfigurację modułu z wykorzystaniem przeglądarki. Funkcję m2m_wifi_start_provision_mode() wywołamy z odpowiednimi parametrami, które m.in określą kanał Wi-Fi, SSID oraz poziom zabezpieczeń.
    W pętli while(1) w funkcji void demo_start(void) dodajemy funkcję m2m_wifi_handle_events(NULL); obsługującą zdarzenia modułu WINC1500.
    Uzupełniony kod przygotowany przez Atmel w celach szkoleniowych znajdziecie w pliku samd21_xplained_pro_winc1500_provisioning_project.7z.

    Zawartość pliku demo.c powinna wyglądać tak:
    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Przed kompilacją warto zajrzeć do pliku demo.h oraz zmienić domyślne ustawienia dla modułu WINC1500 w trybie AP.

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Warto zmienić nazwę SSID DEMO_WLAN_AP_NAME (np. w testach została użyta "DEMO_5", aby łatwo wyszukać nasz moduł pracujący w trybie AP np. na laptopie, przeszukując dostępne sieci bezprzewodowe.
    Warto zmienić numer kanału, aby ograniczyć zakłócenia, a także poeksperymentować z pozostałymi ustawieniami.

    Kompilujemy projekt (F7 lub Build->Build solution)

    Po podłączeniu płytki z wykorzystaniem debug USB, otwórzmy konsolę szeregową dla urządzenia EDBG DEBUG USB (szybkość 115200 bauds, 8 bit data, no parity, one stop bit and no flow control) numer wirtualnego portu znajdziemy w menadżerze urządzeń.

    Moduły Wi-Fi Atmel WINC1500 dedykowane dla aplikacji IoT cz. I.

    Możemy wykorzystać terminal dedykowany dla Atmel studio lub inny dostępny w systemie np. putty. Następnie uruchamiamy program (Ctrl+Alt+F5). Już po chwili udaje się znaleźć moduł WINC1500 pracujący w trybie AP. Na laptopie wystarczy przeszukać dostępne sieci bezprzewodowe oraz odnaleźć AP o SSID jaki skonfigurowaliśmy w pliku demo.h

    Moduły Wi-Fi Atmel WINC1500 dedykowane dla aplikacji IoT cz. I.

    Po zestawieniu połączenia po między laptopem a modułem otwieramy w przeglądarce WWW stronę atmelconfig.com. W tym momencie ładuje się udostępniana przez moduł strona www. Mamy tutaj możliwość przeszukania sieci, w zasięgu których znajduje się moduł (przycisk Refresh) lub wpisania parametrów sieci, do której połączy się moduł.

    Moduły Wi-Fi Atmel WINC1500 dedykowane dla aplikacji IoT cz. I.

    Po zatwierdzeniu danych, moduł WINC1500 rozłączy się z naszym laptopem, oraz podejmie próbę połączenia z AP, którego dane wprowadziliśmy na stronie konfiguracyjnej.

    W dostępnym logu routera/AP sprawdzamy poprawność połączenia się modułu z AP:
    0day 00:18:55 wlan0: A wireless client is associated
    0day 00:18:55 wlan0: WPA2-AES PSK authentication in progress...
    0day 00:18:55 wlan0: Open and authenticated

    W konsoli szeregowej można zobaczyć komunikaty wysyłane przez program uruchomiony na płytce testowej:

    Moduły Wi-Fi Atmel WINC1500 dedykowane dla aplikacji IoT cz. I.

    Udało się skonfigurować moduł WINC1500 i połączyć z routerem testowym, konfigurację możemy oczywiście zaszyć w pamięci flash lub eeprom, ew. wprowadzić przy pomocy interfejsu (np. uart) lub wykorzystać klawiaturę urządzenia.

    Gotowe zestawy funkcji znacznie ułatwiają pracę z modułem:
    m2m_wifi_init() inicjalizacja WiFi i API.
    m2m_wifi_deinit() zamknięcie połączeń i zwolnienie zasobów.
    m2m_wifi_scan() skanowanie dostępnych AP na określonym kanale.
    m2m_wifi_get_scan_results() pobranie wyników skanowania AP.
    m2m_wifi_connect() połączenie z AP o określonym SSID i modelu zabezpieczeń WEP, WPA, WPA-2 (AES i TKIP).
    m2m_wifi_disconnect() rozłączenie z AP.
    m2m_wifi_get_rssi() pobranie siły sygnału.
    A także wiele funkcji obsługujących gniazda socketInit(), registerSocketCallback(), socket(), bind(), listen(), accept(), connect(), recv(), recvfrom(), send(), sendto(), gethostbyname(), close(), setsockopt().

    W kolejnej części materiału wykorzystamy moduł czujnika temperatury, aby przesłać dane z wykorzystaniem Wi-Fi do smartfona podłączonego do tego samego AP co WINC1500. Przyjrzymy się także mechanizmom zabezpieczeń kryptograficznych opartych o rozwiązania sprzętowe.

    Materiał przygotowany we współpracy z firmą JM elektronik

    Tak wygląda ciężarówka demo Atmela biorąca udział w promowaniu warsztatów Atmel Tech On Tour:

    Link



    Link


    Fajne!
  • Arrow Multisolution Day