Mikrokontrolery - Jak zacząć?

... czyli zbiór praktycznej wiedzy dot. mikrokontrolerów.

wtorek, 22 marca 2011

ESP8266 WiFi: SDK, polecenia (komendy) AT i aktualizacja firmware


Autorzy: Tomasz Francuz
Redakcja: Dondu


WiFi ESP8266 - SDK, Polecenia (komendy) AT i aktualizacja firmware



Artykuł jest częścią cyklu: Moduły WiFi

W poprzednich odcinkach cyklu o WiFi ESP8266 poznaliśmy różne typy modułów ESP8266 i sposoby ich podłączenia do komputera. Udało nam się także wysłać do modułu pierwsze polecenia. W tym odcinku dowiesz się jak nawiązać połączenie sieciowe, uaktualnić firmware i kilka innych przydatnych rzeczy, a to wszystko z wykorzystaniem poleceń (komend) AT.

Czym są polecenia (komendy) AT?

Polecenia AT sięgają odległych czasów z początków lat 80-tych, kiedy niejaki Dennis Hayes wymyślił proste zestawy poleceń, które pierwotnie służyły do kontroli pierwszych modemów (dla młodych czytelników – modem to było takie urządzenie, które podłączało się do słuchawki telefonicznej (a później bezpośrednio do linii telefonicznej) i umożliwiało wymianę danych pomiędzy dwoma komputerami).

Polecenia AT poznałeś już na przykładzie Bluetooth HC-05: Bluetooth + mikrokontroler

Polecenia musiały być krótkie (ze względu na niską szybkość transmisji) i zrozumiałe dla człowieka – komunikacja odbywała się przez terminal, a polecenia wydawał i interpretował człowiek. Prostota poleceń i ich łatwa interpretacja przez człowieka i maszynę stanowi o ich popularności do dnia dzisiejszego.

Stąd też w naszym kursie zacznę od poleceń AT. Nie umożliwiają one przejęcia pełnej kontroli nad modułem WiFi, lecz umożliwiają realizację wszystkich najważniejszych funkcji – nawiązywania połączenia i wymiany danych przez sieć. Nie będę tu się rozpisywał nad każdym poleceniem, gdyż ich prosty i zrozumiały opis znajdziesz w odpowiednim pdf – wystarczy go tylko przejrzeć.

SDK

Tutaj trochę uprzedzę fakty i wspomnę o czymś, co przyda nam się w kolejnych odcinkach – tzw. SDK. Co to takiego? Software Development Kit, czyli zestaw narzędzi umożliwiający tworzenie własnego oprogramowania. Tym będziemy się zajmować nieco później, na razie musisz tylko wiedzieć skąd go pobrać i gdzie znaleźć opis poleceń AT.

Ponieważ moduł ESP8266 jest stosunkowo nowym produktem, cierpi na wszystkie choroby wieku dziecięcego – jest on aktywnie rozwijany co pociąga za sobą istotne zmiany w jego oprogramowaniu, a co dla nas ważne – także w sposobie komunikacji z nim. 

Dlatego też zaczniemy od czegoś prostszego, czyli poleceń AT, których zestaw i funkcja praktycznie nie ulegają zmianie. Ponieważ jednak oprogramowanie ulega pewnej ewolucji, najnowszy opis wspieranych poleceń AT zawsze znajdziesz w najnowszej wersji SDK – w chwili pisania artykułu była to wersja 1.2.0 z interpreterem poleceń AT w wersji 0.3.

Wersja 0.3 sugeruje, że jest to mocno rozwojowa wersja oprogramowania – możemy więc spodziewać się jeszcze licznych zmian, zanim interfejs AT okrzepnie na tyle, żeby uznać go za stabilny. Stąd też czytając dalej nasz cykl zawsze pobieraj najnowszą wersję SDK, możesz ją pobrać ze strony: http://espressif.com/new-sdk-release/

W momencie pisania tego artykułu wykorzystałem: esp_iot_sdk_v1.2.0_15_07_03.zip (kopia)


Wersje SDK są numerowane – im wyższy numer tym nowsze wersja SDK. Po jego ściągnięciu rozpakuj zawartość archiwum, a następnie w katalogu ../esp_iot_sdk_v[wersja]/document/EN znajdziesz kilka plików pdf opisujących moduł.

Na tym etapie interesuje nas plik 4A-ESP8266__AT Instruction Set__EN_v0.30.pdf – zawiera on właśnie opis wszystkich wspieranych poleceń AT.

W Internecie można pobrać wiele rozszerzeń dla modułu ESP, które wspierają szerszy zakres poleceń AT – na tym etapie nie będziemy się nimi zajmować. W większości przypadków, przynajmniej na początku do niczego ci się one nie przydadzą.

Ok, zakładam, że udało ci się pobrać wskazany plik, otworzyłeś go i widzisz spis poleceń wraz z opisami w języku angielskim (jeśli wolisz to w katalogu CN masz to samo w języku chińskim). Przeraża cię ilość poleceń? Nie martw się, one są proste i intuicyjne.


Nawiązujemy połączenie sieciowe

Dobra, koniec ględzenia, czas na to, na co czekaliśmy od dawna, czyli nawiązanie połączenia sieciowego. W tym celu potrzebnych będzie kilka rzeczy:
  • hardware, o którym pisaliśmy w poprzednich odcinkach – czyli moduł połączony przez przejściówkę z komputerem. Zakładam, że udało ci się z modułem nawiązać połączenie, tak jak to opisywałem w poprzednim odcinku.
  • dostęp do sieci bezprzewodowej.

Ponieważ moduł czeka już gotowy do pracy i wiesz jak z nim przez terminal nawiązać połączenie, przejdźmy do sieci bezprzewodowej. Wygodnie będzie jeśli będziesz miał w zasięgu jakiś AP (Access Point), do którego możesz się zalogować.

Będziesz dysponował nazwą użytkownika i hasłem/kluczem potrzebnym do logowania do sieci WiFi – przygotuj je sobie w postaci pliku, z którego będziesz mógł zrobić copy/paste do terminala – przyda się.

Druga sprawa – AP, do którego się łączymy powinien automatycznie przydzielać adres IP – czyli musimy na nim mieć skonfigurowaną usługę DHCP. Nie jest to niezbędne, ale na początek nieco nam ułatwi pracę.

Co robimy?:
  • nawiąż połączenie z modułem, tak jak to robiliśmy w poprzedniej części,
  • w terminalu wyślij polecenie:

AT+CWLAP

W jego wyniku powinieneś uzyskać (może to zająć kilka sekund) mniej więcej coś takiego:

+CWLAP
+CWLAP:(4,"SCH_SCH",-92,"00:23:CD:20:20:AD",1,-12)
+CWLAP:(3,"AKTOGIM2013",-92,"C4:A8:1D:3A:98:22",11,-36)
+CWLAP:(4,"KAROLINKANET",-41,"00:1A:92:B3:EB:FC",11,-51)
+CWLAP:(0,"DARMOWE_ORANGE_WIFI",-91,"8A:74:2A:52:74:6D",6,-81)
+CWLAP:(4,"LIVEBOX-746D",-92,"84:74:2A:52:74:6D",6,-81)

OK

Jak widzimy zwrócona została lista access pointów (AP), które widzi moduł. Oczywiście w twoim przypadku lista będzie wyglądała inaczej (zależy jakie AP są w okolicy), jednak powinieneś uzyskać mniej więcej coś podobnego.

Jeśli żaden AP nie pojawił się to albo moduł nie ma zasięgu, albo po prostu żaden AP nie jest dostępny.

Jeszcze jedną możliwością jest włączenie w AP opcji ukrywania SSID (SSID to identyfikator sieci składający się maksymalnie z 32 znaków). Opcję ukrywania SSID można włączyć w AP, wtedy jego nazwa nie jest rozgłaszana, w efekcie moduł takiego AP nie widzi – ale ciągle może z nim nawiązać połączenie. Niemniej jednak do testów wygodnie będzie włączyć rozgłaszanie SSID.

A co oznaczają zwrócone wartości?

Pierwsza liczba po nawiasie oznacza typ sieci:

0 Sieć otwarta Do takiej sieci nie trzeba się logować – jeśli tak wygląda twoja sieć domowa to masz problem – każdy może się podłączyć i przy jej pomocy np. przeglądać zasoby twojego komputera – czym prędzej to zmień
1 Sieć chroniona WEP Czyli praktycznie sieć otwarta, chociaż wymaga użytkownika i hasła do logowania – też szybko to zmień.
2 WPA_PSK Sieć chroniona z prewspółdzielonym kluczem.
3 WPA2_PSK Sieć wykorzystująca nieco lepsze algorytmy szyfrowania z prewspółdzielonym kluczem.
4 WPA_WPA2_PSK Najsilniejsze szyfrowanie, zasadniczo ten tryb pracy twojego AP powinieneś wykorzystywać.

Wszystkie sieci powyżej zera wymagają logowania, o czym nieco później.

Po typie zabezpieczenia sieci mamy nazwę sieci (SSID). Kolejna jest liczba określająca tzw. RSSI, czyli moc sygnału odbieranego w decybelach, im jest ona wyższa tym silniejszy sygnał.Następnie występuje adres MAC AP – jest to niepowtarzalny adres urządzenia, analogiczny do sieci Ethernet. Kolejny parametr to kanał, na którym pracuje AP. Ostatni parametr to tzw. offset częstotliwości. Dwie ostatnie informacje na tym etapie do niczego nam się nie przydadzą.

Przykład:

+CWLAP:(4,"SCH_SCH",-92,"00:23:CD:20:20:AD",1,-12)

oznacza:
  • typ sieci: WPA_WPA2_PSK
  • o nazwie sieci (SSID): SCH_SCH  
  • moc sygnału (RSSI): -92dB
  • adres MAC AP: 00:23:CD:20:20:AD
  • kanał nr: 1
  • offset częstotliwości: -12


Dla nas na razie ważne są tylko SSID i informacja o zabezpieczeniu sieci.

Czas się połączyć …


Dlaczego SSID jest ważny? Ano dlatego, że kolejne polecenia będą go wymagały. Żeby wymieniać dane musimy podłączyć się pod jakiś AP, czyli musimy znać jego SSID (no i ewentualnie hasło/klucze). SSID możemy uzyskać tak jak powyżej, dzięki poleceniu AT+CWLAP, lub po prostu możemy je znać.


_DEF, _CUR_, deprecated – o co w tym chodzi?


Zanim przejdziemy dalej mała dygresja – zaglądałeś do wspomnianego wcześniej pdfa ATInstructionSet, prawda? Jeśli tak to z pewnością zauważyłeś, że część opisanych w nim poleceń jest ztriplikowana – np. polecenie AT+CWJAP występuje jako AT+CWJAP, AT+CWJAP_CUR i AT+CWJAP_DEF.

O co w tym chodzi? Ano jak pisałem, moduł cierpi na choroby wieku dziecięcego, czyli częste zmiany koncepcji interfejsu. Stąd też przy niektórych poleceniach (np. AT+CWJAP) znajdziesz na czerwono informację – [@deprecated] Please use ….. instead. – czyli po naszemu polecenie zbędne, użyj zamiast niego polecenia:


ESP8266 - Deprecated - Polecenia nieaktualne
Polecenia, których nie używamy

Tego typu polecenia nie powinny być stosowane – w nowszej wersji firmware np. mogą zostać usunięte. Są one tylko i wyłącznie dla zachowania wstecznej kompatybilności oprogramowania. Starajmy się poleceń przy których opisie widnieje takie ostrzeżenie nie używać.

Dobrze, a o co chodzi z tym _DEF i _CUR?

Moduł ESP8266 posiada pamięć nieulotną FLASH, w której mały fragment został wydzielony w celu przechowywania informacji o konfiguracji modułu. Stąd też wszelkie polecenia możemy podzielić na dwie grupy:
  • polecenia, które nie zmieniają działania modułu na stałe – po resecie modułu lub zaniku zasilania przywrócona zostanie konfiguracja zapisana w pamięci FLASH. Polecenia tego typu mają końcówkę _CUR – zapewne od current – czyli bieżący.
  • polecenia, które zmieniają konfigurację modułu zapisaną we FLASH, zmiany wprowadzone przy ich pomocy są stałe – przy każdym resecie i ponownym uruchomieniu modułu konfiguracja zostanie pobrana z pamięci FLASH. Polecenia te mają sufiks _DEF, zapewne od angielskiego default – czyli domyślny.

Jakich poleceń używać? Jeśli chodzi ci tylko o bieżące sprawdzenie różnych opcji to zapewne wygodniej jest używać poleń _CUR – w razie problemów resetujesz moduł i zaczynasz zabawę od nowa. Natomiast, jeśli moduł ma pracować zawsze ze ściśle określonymi parametrami, można go skonfigurować raz na PC, zapisać potrzebne informacje i zamontować w urządzeniu docelowym. Dzięki temu współpracujący z modułem mikrokontroler nie będzie musiał go konfigurować.

Warto pamiętać o jeszcze jednej rzeczy – pamięć FLASH ma ograniczoną, zwykle do kilku-kilkunastu tysięcy liczbę zapisów. Jeśli więc przy każdym uruchomieniu modułu będziesz zapisywać tą samą konfigurację (niepotrzebnie będziesz powtarzał polecenia z sufiksem _DEF) to być może ten FLASH ci w końcu padnie. Mała szansa, ale po co kusić los?


Wracamy do połączenia…



Ok, mamy już SSID i informacje do logowania do naszego AP. To teraz robimy dwie rzeczy. Pierwsza to określenie roli naszego modułu ESP8266. O co chodzi? Otóż nasz moduł może pracować w trzech trybach:


1 Tryb klienta sieci WiFi W tym trybie podłącza się pod AP i działa tak jak karta radiowa w notebooku – korzysta z sieci, ale jej nie udostępnia.
2 Tryb AP W tym trybie moduł potrafi udostępniać połączenie bezprzewodowe innym, działa więc jak AP.
3 Tryb AP + klient Jest to połączenie obu trybów.


Przed przystąpieniem do dalszych działań musimy wybrać tryb pracy. My wybierzemy tryb pierwszy – klienta WiFi. Dlaczego? Przede wszystkim dlatego, że póki co chcemy się połączyć tylko z AP i rozpocząć wymianę danych z innymi stacjami. Ale jest jeszcze ważniejszy powód, o którym się zapomina:

Pamiętaj, że w trybie AP nasz moduł udostępnia połączenie sieciowe innym stacjom WiFi. Ponieważ moduł jest dostarczany jako nieskonfigurowany, jeśli odpalimy tryb AP lub mieszany to przez nasz moduł inni będą mogli się dostać do naszej sieci wewnętrznej. Pamiętaj o tym, że zabawa z WiFi może potencjalnie stworzyć poważne luki w bezpieczeństwie sieci!

Pamiętaj, żeby uważnie bawić się z modułami WiFi tak, żeby nie narazić się na utratę poufnych danych, być może lepiej jest stworzyć odrębną sieć do testów, do której nie są podłączone żadne komputery zawierające istotne dane. Oprogramowanie modułu jest ciągle w fazie rozwoju i nie ma żadnej gwarancji co do jego bezpieczeństwa, nawet jeśli włączysz wszelkie możliwe zabezpieczenia. Pamiętaj o tym w czasie dalszej zabawy.

O bieżącym trybie pracy możesz się przekonać wydając polecenie:

AT+CWMODE?

W odpowiedzi otrzymasz informację o trybie pracy modułu:

+CWMODE? +CWMODE:3

OK

Jak widzimy otrzymaliśmy informację o trybie (domyślnie sprzedawane urządzenia mają tryb 3) oraz potwierdzenie prawidłowej realizacji polecenia (OK). Ponieważ powinniśmy na tym etapie unikać odpalania AP, czym prędzej zmieńmy tryb pracy modułu na klienta sieci. W tym celu wydajemy polecenie:

AT+CWMODE_DEF=1

i otrzymujemy:

 WMODE_DEF=1                                                                                 
OK

Mała dygresja…


Jak widzisz każde polecenie AT składa się z opcjonalnej listy argumentów, a w wyniku jego wykonania uzyskujemy informacje zwrotne zakończone frazą OK, jeśli wszystko przebiegło pomyślnie lub ERROR w przypadku błędu.

Użyliśmy polecenia z sufiksem _DEF, żeby na stałe przestawić tryb pracy modułu. Od tego momentu jesteśmy względnie bezpieczni – naszego modułu nie da się już wykorzystać jako otwartego AP.

Teraz czas na połączenie z AP. W tym celu możemy użyć dwóch poleceń: AT+CWJAP_CUR lub AT+CWJAP_DEF. To drugie spowoduje zapisanie SSID i hasła w pamięci FLASH, dzięki czemu moduł będzie mógł automatycznie ponownie łączyć się ze wskazanym AP.

Pamiętaj, że hasło do twojej sieci znajdzie się w pamięci modułu. Takim modułem nie dziel się ze znajomymi, chyba, że naprawdę nie masz nic do ukrycia :)

Wydajemy więc polecenie:

AT+CWJAP_DEF="TWOJE SSID","TWOJE HASŁO"

w wyniku którego powinniśmy otrzymać odpowiedź:

WIFI CONNECTED

WIFI GOT IP



OK

Warto jeszcze przy okazji hasła wspomnieć o pewnej sprawie – hasło powinno zawierać różne znaki, nie powinny to być wyrazy, data urodzenia itd. To oczywiste. Ale w haśle mogą się znaleźć pewne znaki specjalne, które są interpretowane jako elementy polecenia AT, np. " lub / (slash) - musimy je odpowiednio zakodować. W tym celu taki znak specjalny poprzedzamy ukośnikiem (slash), i tak np. hasło które brzmi:

 a1"ds,/4 

powinniśmy zakodować jako:

a1/"ds,//4 

Pamiętajmy o tym, gdyż w przeciwnym razie polecenie AT zostanie źle zinterpretowane.

W efekcie nasz moduł połączył się ze wskazanym AP i uzyskał z niego adres IP (o ile w AP jest włączony serwer DHCP). Od tego momentu moduł ma pełny dostęp do zasobów udostępnianych przez AP ze wszystkimi tego konsekwencjami (także dla bezpieczeństwa sieci).


Teraz uwaga!

Do tej pory moduł każde polecenie poprawnie wykonane potwierdzał komunikatem OK, a wykonane błędnie komunikatem ERROR. Od chwili nawiązania połączenia z AP sytuacja nieco się komplikuje – musimy to uwzględnić pisząc oprogramowanie interpretujące wyniki poleceń AT. Otóż moduł utrzymuje połączenie z wybranym AP, niemniej, czasami, ze różnych powodów, połączenie może zostać rozłączone, czemu towarzyszy wysłanie na konsolę komunikatu:

WIFI DISCONNECT

Tego typu komunikat może się pojawić w dowolnej chwili – jeśli się pojawi, to znaczy, że połączenie zostało utracone. Moduł ESP8266 może automatycznie (tak jest domyślnie) próbować ponownie nawiązać połączenie i jeśli mu się to uda, to na konsolę zostanie wysłany komunikat:

WIFI CONNECTED

Jak widzimy oba komunikaty mogą się pojawiać niezależnie od wysyłanych poleceń AT, musimy więc je prawidłowo obsługiwać.

Przy okazji – możemy sprawdzić czy opcja automatycznego ponownego nawiązywania połączenia z AP jest aktywna, w tym celu w terminalu wysyłamy polecenie:

AT+CWAUTOCONN?

na co powinniśmy uzyskać odpowiedź:

+CWAUTOCONN? +CWAUTOCONN:1
OK

Wartość 1 świadczy, że moduł pracuje w trybie automatycznego ponawiania połączeń, 0 – automatyczne nawiązywanie połączenia jest wyłączone. Tryb możemy zmieniać, jak się domyślasz wystarczy wysłać polecenie:

AT+CWAUTOCONN=1 LUB 0

aby zmienić zachowanie modułu.


Sprawdzamy połączenie


Ok, podłączyliśmy się pod AP, jeśli wybrany AP udostępnia połączenie internetowe to możemy je wykorzystać do testu łączności. Pierwsze co zrobimy, to sprawdzimy własny adres IP i parametry sieci. W tym celu wysyłamy polecenie:

AT+CIPSTA?

W efekcie uzyskujemy potrzebne informacje:

+CIPSTA? +CIPSTA:IP:"192.168.1.2"
+CIPSTA:GATEWAY:"192.168.1.1"
+CIPSTA:NETMASK:"255.255.255.0"

OK

Widzimy nasz adres IP – w tym przypadku 192.168.1.2 – jest to adres przydzielony nam przez serwer DHCP pracujący w AP do którego się połączyliśmy, adres bramy (Gateway) – będzie to zazwyczaj adres AP w sieci lokalnej oraz maskę sieci – wszystkie te informacje uzyskaliśmy z serwera DHCP. Gdyby nie był on uruchomiony musielibyśmy nasz moduł skonfigurować samodzielnie.

Ok, teraz przetestujmy połączenie. Do testowania połączeń w sieci TCP/IP wygodnie jest użyć polecenia ping – ma ono swój odpowiednik także wśród poleceń AT:

AT+PING="192.168.1.1"

Jako argument polecenie przyjmuje adres IP lub nazwę stacji, którą pingujemy. W efekcie, jeśli połączenie przebiegło poprawnie powinniśmy otrzymać odpowiedź:

+PING="192.168.1.1"

+8

                                                                              

OK

Wartość +8 (zapewne inna w twoim przypadku), określa czas w milisekundach jaki upłynął od momentu wysłania żądania do czasu uzyskania odpowiedzi.

Ok, możemy więc pingować naszą bramę, powinniśmy móc też nawiązać połączenie z Internetem. Ale zanim to zrobimy, jeszcze jeden test – w Internecie nie posługujemy się zazwyczaj adresami IP, lecz nazwami. Aby się nimi posługiwać potrzebujemy działający serwer rozwiązujący nazwy na adresy IP, czyli tzw. DNS.

Możemy sprawdzić czy działa on poprawnie:

AT+PING="WWW.ONET.PL"

i uzyskujemy:

+PING="WWW.ONET.PL" +30

OK

Jeśli uzyskujesz takie odpowiedzi to znaczy, że wszystko jest ok. Jeśli nie, to sprawdź konfigurację swojego AP, w szczególności serwera DHCP.

Dla niektórych adresów IP i nazw możesz nie uzyskać odpowiedzi na polecenie ping. Niekoniecznie świadczy to o problemie z modułem – niektóre serwery są tak skonfigurowane, aby nie odpowiadać na ping. Z takim serwerem można się normalnie połączyć, leczy próba jego pingowania zawsze zakończy się niepowodzeniem.


Uaktualnianie firmware

Ok, nawiązaliśmy połączenie z Internetem, wszystko działa poprawnie to czas na coś nowego. Jak pisałem na wstępie moduł ESP8266 to stosunkowo nowy produkt i ciągle pojawiają się na niego aktualizacje oprogramowania. Na początku tego artykułu pisałem, żeby ściągnąć najnowsze SDK, gdyż znajdziemy w nim najnowszy pdf z opisem m.in. poleceń AT.

Skoro mamy już najnowszy SDK to warto byłoby też, żeby nasz moduł posługiwał się najnowszym firmware. Czyli jakoś musimy go uaktualnić. W Internecie znajdziesz wiele opisów flashowania pamięci modułu, wymagających różnych programów i wiedzy z pogranicza magicznej. Tym się zajmiemy w przyszłości, lecz póki co uaktualnimy software w najprostszy możliwy sposób – automatycznie. Jak? Po prostu wydamy odpowiednie polecenie AT:

AT+CIUPDATE

Po jego wydaniu moduł automatycznie łączy się z serwerem aktualizacji, sprawdza czy jest jakaś nowsza wersja, jeśli tak to ją pobiera i aktualizuje ESP8266:

+CIUPDATE +CIUPDATE:1
+CIUPDATE:2
+CIUPDATE:3
+CIUPDATE:4

OK

Jak widzimy aktualizacja podzielona jest na kilka etapów, które przebiegają automatycznie. Ściągnięcie nowego firmware może trochę potrwać, stąd zakończenie wykonywania tego polecenia nie jest natychmiastowe. Sporadycznie mogą zdarzać się błędy połączenia, wynikające z braku połączenia z Internetem lub wyłączenia serwera aktualizacji. W takiej sytuacji powinniśmy ponowić próbę aktualizacji za jakiś czas. Jeśli oprogramowanie się zaktualizowało, to moduł automatycznie się zrestartuje – aby zmiany weszły w życie moduł musi się ponownie uruchomić:

WIFI DISCONNECT
                                                             
ETS JAN  8 2013,RST CAUSE:4, BOOT MODE:(3,3)
WDT RESET
LOAD 0X40100000, LEN 1320, ROOM 16 
TAIL 8
CHKSUM 0XB8
LOAD 0X3FFE8000, LEN 776, ROOM 0 
TAIL 8
CHKSUM 0XD9
LOAD 0X3FFE8308, LEN 412, ROOM 0 
TAIL 12
CHKSUM 0XB9
CSUM 0XB9
                                                                   
2ND BOOT VERSION : 1.3(B3)
  SPI SPEED      : 40MHZ
  SPI MODE       : QIO
  SPI FLASH SIZE : 8MBIT
JUMP TO RUN USER2
                   
SLŹ‚RÚ
AI-THINKER TECHNOLOGY CO. LTD.
READY
WIFI CONNECTED
WIFI GOT IP

Po aktualizacji moduł jest gotowy do pracy.

Pamiętaj, że jeśli konfiguracja modułu nie była zapisywana do pamięci FLASH (używałeś poleceń z sufiksem _CUR) to moduł będzie wymagał ponownej konfiguracji.

Mamy nowy firmware o czym możemy się łatwo przekonać:

AT+GMR

i uzyskujemy:

+GMR AT VERSION:0.30.0.0(JUL 3 2015 19:35:49)
SDK VERSION:1.2.0
AI-THINKER TECHNOLOGY CO. LTD.
JUL 5 2015 15:06:58

OK

Proste, prawda? Warto nasz moduł czasami aktualizować, nie tylko możemy liczyć na jakieś nowe funkcje (które niekoniecznie nam będą potrzebne), ale przede wszystkim na usunięcie potencjalnych błędów, a przede wszystkim błędów związanych z bezpieczeństwem.

A co jeśli nie chcemy DHCP?


Do tej pory adres IP i konfiguracja sieci były pobierane automatycznie z AP przez DHCP. Ale nie zawsze jest to pożądane. Wadą DHCP jest to, że klient (nasz moduł IP) może otrzymywać różne adresy IP (niekoniecznie tak musi być, w niektórych przypadkach  DHCP może przydzielać IP po adresie MAC).

W przypadku, kiedy budujemy sieć czujników lepiej jest jeśli ich adresy IP są z góry znane. Co prawda możemy używać w tym celu nazw domenowych i sprytnie skonfigurowanego serwera DNS, ale wymaga to z kolei od nas poznania jak działa DNS, DHCP, itd. Niekoniecznie chcielibyśmy od tego zaczynać.

Stąd też najprościej jest po prostu przydzielić modułowi adres „ręcznie”. W tym celu możemy posłużyć się poleceniami AT, ponieważ adres ma być stały, najwygodniej jest używać poleceń z sufiksem _DEF, dzięki temu wszystkie parametry sieci będą przechowywane w pamięci FLASH. W tym celu musimy wysłać jednorazowo polecenie:

AT+CIPSTA_DEF="192.168.1.10","192.168.1.1","255.255.255.0"

Polecenie to określa po kolei:
  • adres IP modułu, 
  • adres bramy, 
  • maskę podsieci. 

W rezultacie powinniśmy otrzymać:

IPSTA_DEF="192.168.1.10","192.168.1.1","255.255.255.0"
OK

Od tej chwili moduł używa nowych parametrów sieci.

W kolejnych odcinkach pokażę jak wymieniać dane pomiędzy modułami ESP8266, modułem a serwerem internetowym itd.


Oceń artykuł.
Wasze opinie są dla nas ważne, gdyż pozwalają dopracować poszczególne artykuły.
Pozdrawiamy, Autorzy
Ten artykuł oceniam na:

28 komentarzy:

  1. Już nie mogę się doczekać kiedy przyjdą do mnie zamówione w chinach moduły!!!!! Mam już kilka pomysłów na wykorzystanie. Dzięki za te informacje.

    OdpowiedzUsuń
  2. Witam. A czy planuje Pan poradnik o pobieraniu danych przez esp z zewnętrznych stron www.?

    OdpowiedzUsuń
    Odpowiedzi
    1. Tomka nie będzie przez dwa najbliższe tygodnie, więc musimy zaczekać na odpowiedź. Niemniej jednak po to ten cykl artykułów powstaje, by taki temat się pojawił. Jeśli więc Tomek nie znajdzie czasu, by to opisać, to ja to zrobię. :-)

      Usuń
    2. Oczywiście będzie, już wkrótce.

      Usuń
  3. Koleś o ksywce PighiXXX zebrał, napisał i udostępnił Światu 60-cio stronicową ściągawkę z komendami AT do modułów ESP8266 (wraz z komentarzem i przykładami). Bardzo przydatna lektura do tego wydana w atrakcyjnej formie:) Link:
    http://www.pighixxx.com/test/2015/06/esp8266-rev-1 (i mirror w razie czego : http://cognet.pl/esp8266/ ) Polecam!

    OdpowiedzUsuń
  4. Do mnie przyszedł moduł z wersją 1.1.1 i trzeba było ustawić najpierw AT+CWMODE_DEF=1 (domyślnie 2) dopiero działała komenda AT+CWLAP
    Dodatkowo update to: AT+CIUPDATE (bez literki P) oraz jest druga literówka AT_CWMODE? (_ zamiast +)

    Czekam z niecierpliwością na dalsze artykuły! Szczególnie te o SDK i własnym firmware (najlepiej w czystym C)

    OdpowiedzUsuń
    Odpowiedzi
    1. Witam, mam podobną sytuację. Czy moduł się za aktualizował poprawnie?

      Usuń
  5. czekam na artykuł o tym jak zaimplementować chip esp8266 we własnym urządzeniu bez modułu :)

    OdpowiedzUsuń
  6. Witam!
    Kiedy kolejne części kursu?

    OdpowiedzUsuń
  7. Cześć

    Czy możecie pokazać w jaki sposób skonfigurować dwa takie moduły, tak aby co wyśle modułem A trafiało do modułu B. Chciałbym zbudować stację meteo i przesyłać sobie dane do wyświetlacza w domu. Ale niestety nie wiem jak skonfigurować w/w moduły.

    Pozdrawiam

    OdpowiedzUsuń
    Odpowiedzi
    1. Tak, w kolejnym odcinku będzie taki przykład. Powinien pojawić się lada dzień, jak tylko Dondu będzie miał chwilkę, żeby go umieścić w necie.

      Usuń
  8. Czekamy ... czekamy z niecierpliwością :)

    OdpowiedzUsuń
  9. Cześć,

    bardzo fajny artykuł. Aktualnie również poznaję możliwości ESP8266, łącznie z arduino. chciałem się tylko przyczepić do tabeli dot. szyfrowania. Otóż typ "WPA_WPA2_PSK" wcale nie jest to "Najsilniejsze szyfrowanie, zasadniczo ten tryb pracy twojego AP powinieneś wykorzystywać." Najsilniejszy jest tryb WPA2_PSK, a tryb WPA_WPA2_PSK oznacza tyle, że Access Point przyjmuje połączenia od klientów zarówno z szyfrowaniem WPA2 jak i WPA. Więc może się zdażyć, że klient połączy się przez WPA (1), i będzie słabiej szyfrowany niż WPA2. Zasadniczo więc polecam ograniczać AP do trybu tylko WPA2, a nie WPA/WPA2. Pozdrawiam
    Obi

    OdpowiedzUsuń
  10. Hej!

    I jak trwają prace nad dalszymi kursami ESP?

    OdpowiedzUsuń
    Odpowiedzi
    1. Kolejne części są i czekają na publikację. Pojawią się jak tylko kol. Dondu będzie miał chwilę na ich umieszczenie.

      Usuń
    2. Super artykuł.
      Będzie może o połączeniu przez rs485.

      Usuń
  11. Cześć, A próbował ktoś dodać obsługe WPS?

    OdpowiedzUsuń
  12. A ja mam pytanie. Może i głupie ale.. Skąd mam wiedzieć skąd (z jakiego IP i portu) przyszła wiadomość do ESP? Bo chciałbym mieć mozliwość zwrócenia odpowiedzi z ESP pod IP i port z którego przyszła wiadomość. Proszę o pomoc.

    OdpowiedzUsuń
  13. cyt. "AT_CWMODE?" powinno być AT+CWMODE?

    OdpowiedzUsuń
    Odpowiedzi
    1. Tak, powinno być AT+CWMODE? Dzięki za zwrócenie uwagi.

      Usuń
  14. Podczas aktualizacji ESP-07 zostało zwrócone +CIUPDATE +CIUPDATE:1
    +CIUPDATE:2
    +CIUPDATE:3
    +CIUPDATE:4
    i zaczęła migać niebieska dioda na module, a na terminalu same krzaki odbieram. Nie pomaga restart, non stop nadaje. Co się mogło stać. Przy sprawdzaniu statusu połączenia odpowiadał 5 :O poza tym dużo komend było nieprawidłowych ponieważ wysyłając kombinacje znaków z "st" odbierał to jako "qt" tak samo "+p" jako ")p". Sprawdzałem na różnych terminalach. Posiadam jeszcze 2 układy, ale na kolejnym jest to samo z komendami AT. Nie aktualizowałem, bo boje się że kolejny uszkodzę. Pozdrawiam.

    OdpowiedzUsuń
    Odpowiedzi
    1. wgrałem wersję z opisu przez komputer i esp działa poprawnie :D btw Bardzo dobry poradnik, czekam na kolejne :D Pozdro

      Usuń
  15. Odnośnie znaków specjalnych w haśle: w jaki sposób w haśle wstawić znak #? Wygląda jakby dla tego znaku metoda z / nie działał.

    OdpowiedzUsuń
    Odpowiedzi
    1. Powinna działać. Pamiętaj, że ukośnik musi być przed każdym znakiem specjalnym.

      Usuń
  16. witam,
    jestem zielony w temacie ale brnę w ten tutorial i same problemy, wszystko co ma dopisek _DEF kończy się ERROR, a od momentu tutorialu gdzie mowa o AT+PING=..... to już same ERROR, co do komendy CWJAP jedyna odpowiedź to nie jak wyżej że się połączył tylko dostaję samo "OK",

    problem pewnie siedzi w tym że na komendę AT+GMR odpowiedź wygląda tak:

    +GMR

    00200.9.4



    OK

    firmware to https://github.com/espressif/ESP8266_AT, przestarzałe ?

    OdpowiedzUsuń

Działy
Działy dodatkowe
Inne
O blogu




Dzisiaj
--> za darmo!!! <--
1. USBasp
2. microBOARD M8


Napisz artykuł
--> i wygraj nagrodę. <--


Co nowego na blogu?
Śledź naszego Facebook-a



Co nowego na blogu?
Śledź nas na Google+

/* 20140911 Wyłączona prawa kolumna */
  • 00

    dni

  • 00

    godzin

  • :
  • 00

    minut

  • :
  • 00

    sekund

Nie czekaj do ostatniego dnia!
Jakość opisu projektu także jest istotna (pkt 9.2 regulaminu).

Sponsorzy:

Zapamiętaj ten artykuł w moim prywatnym spisie treści.