piątek, 19 grudnia 2014

Moduł WiFi ESP8266 (ESP-03) - praktyczne wskazówki

Zbiór kilku linków zebranych podczas uruchamiania modułów ESP8266.

Dokumentacja:
http://www.electrodragon.com/w/Wi07c
Filmik:
https://www.youtube.com/watch?v=9QZkCQSHnko
Praktyczne info podczas pierwszego uruchomienia:
http://vogelchr.blogspot.com/2014/12/esp8266-firmware-upgrade-odd-baudrate.html
Tutaj użytkownicy opisują swoje przygody podczas uruchamiania układu:
http://www.esp8266.com/viewtopic.php?f=13&t=475
Polecam także wpisy SunRivera dot. bliźniaczego modułu ESP-01, link do pierwszego wpisu:
http://www.sunduino.pl/wordpress/wifi-za-grosze-no-prosze-czesc-1/

Moje moduły w wersji ESP-03 fabrycznie działały z prędkością transmisji UART około 75000 bodów (wartość obliczona za pomocą danych z analizatora logicznego). Po podłączeniu zasilania i przejściówki USB-UART_TTL nie zaczęło to działać tak jak na filmiku, jednakże po kilku próbach doszedłem do tego, że układ pracuje poprawnie gdy wyprowadzenie CH_PD podciągniemy do plusa zasilania (ja użyłem akurat rezystora 5k6). Dopiero po tym zabiegu układ wysyłał komunikat startowy na lini TXD. Kolejnym krokiem było update firmware do wersji 0018000902, ustawienie baudrate na 115200 i skonfigurowanie modułu do łączenia z moją siecią WiFi. Konfiguracja połączenia WiFi przedstawiona jest w podlinkowanym filmiku na YT. Narzędzia do aktualizacji FW do pobrania tutaj (flasher + nowsze FW). Po restarcie modułu łączy się on automatycznie z ostatnio skonfigurowaną siecią bezprzewodową. Odpowiedź ping od układu dochodzi w czasie około 2-7 ms.

W zależności od konfiguracji wyprowadzeń układu podczas jego startu moduł ESP8266 uruchamia się w różnych trybach:
• GPIO15=1 => SDCard startup
• GPIO15=0 + GPIO2=1 + GPIO0=0 => UART download
• GPIO15=0 + GPIO2=1 + GPIO0=1 => Flash startup


Procedura pierwszej (fabrycznej) inicjalizacji wygląda następująco:

  • łączymy GPIO15 do GND, GPIO2 do VCC (ja wykorzystałem resytory 5k6),
  • chcąc zaktualizować oprogramowanie w module ESP8266 łączymy wyprowadzenie GPIO0 do masy (może być przez rezystor) na "stałe", a następnie resetujemy układ przez chwilowe zwarcie CH_PD z masą. Układ wejdzie w tryb bootloadera i oczekuje na podłączenie z komputera po UART w celu aktalizacji firmware.
  • po aktualizacji firmware ponownie robimy pull-up rezystorem na pinie GPIO0 i resetujemy nasz układ, uruchomi się on w trybie pracy z komendami AT,
  • za pomocą komendy AT+CIOBAUD=115200 ustawiamy prędkość transmisji modułu (musimy mieć zaktualizowane FW do minimum 0018000902, inaczej nie zadziała),
  • można przystąpić do konfiguracji połączenia WiFi.

[update 20.12.2014]
Przeprowadziłem testy w swojej sieci z roamingiem IAPP - moduł pracował poprawnie przy łączeniu z różnymi punktami dostępowymi w ramach jednego identyfikatora SSID. Zauważyłem że nie za każdym razem moduł startuje poprawnie - wstępnie wygląda to na problemy z zasilaniem. W docelowej aplikacji proponuję dodać kondensator blisko wyprowadzeń modułu. Jeśli urządzenie będzie posiadało dodatkowy nadrzędny uC - najlepiej zresetować moduł podczas inicjalizacji programowej za pomocą krótkiego sygnału na wyprowadzeniu CH_PD (długość sygnału reset trzeba doszukać w dokumentacji lub dobrać doświadczalnie).

Jeśli masz jakieś inne praktycznie wskazówki lub uwagi przy uruchamianiu modułu ESP8266 napisz do mnie na maila :) Tymczasem życzę powodzenia!


Zdjęcia wykonane podczas uruchomień:

Nowe "zwierzątko";)

ESP8266 na płytce stykowej ze stabilizatorem napięcia 3,3V, po prawej przejściówka USB-UART_TTL


c.d.n.