ESP8266 – początki w Windows
Nadszedł czas na moduł ESP8266, który kupiłem pod koniec zeszłego roku na ebayu. Poniżej zebrałem garść podstawowych informacji, które umożliwią szybki start z układem WiFi. Mimo, iż podobnych poradników w sieci jest całe mnóstwo, napisałem te kilka zdań, bo zaczynając zabawę z moim modułem posiedziałem chwilkę nad przeglądarką z otwartymi 20 zakładkami, nim wszystko zaczęło działać tak jak chciałem.
ESP8266 – co nam będzie potrzebne?
Ten opis bazuje na prostej płytce o oznaczeniu ESP-01 z 8 goldpinami. Niezbędna będzie również przejściówka USB-RS232 TTL ze stabilizatorem 3,3V, mała płytka stykowa, kilka kabelków do płytki i na goldpiny. Może się okazać, że przejściówka będzie posiadała źródło napięcia 3V3 zbyt słabe prądowo, wtedy będziemy potrzebować modułu zasilającego do płytki stykowej, skonfigurowanego na napięcie 3,3V.
Niezbędny będzie komputer z Windowsem i trochę softu, o którym niżej.
ESP8266 ESP-01 – podłączenie
Mój moduł kupiłem na ebayu w grudniu 2014 za $3,15. Teraz ceny są niższe, ale patrząc na obecny kurs dolara, różnica nie jest wielka. ESP-01 to maleńka płytka drukowana, na której prócz anteny i kilkunastu elementów znajdziemy złącze goldpin 2×4. Piny nie są opisane, warto mieć ściągę:
Na płytce znalazły się dwie diody LED – czerwona sygnalizująca podłączone zasilanie i niebieska, migająca podczas komunikacji szeregowej.
Połączenia między konwerterem USB/RS232 a ESP8266:
– bezpośrednio: Tx z Rx i Rx z Tx
– za pośrednictwem płytki stykowej: GND-płytka-GND, 3V3-płytka-VCC i CH_PD
Na czas wgrywania bootloadera do GND należy podłączyć GPIO_0
Po sprawdzeniu (najlepiej dwa razy) poprawności połączeń, można wpiąć przejściówkę w port USB, Jeśli kupiliśmy tani, chiński konwerter na chipie prolific, to prawie na pewno będzie to podróbka, która nie zadziała na automatycznie pobranych driverach z Windows Update:
Pobieramy stąd starsze, działające sterowniki: Kabel USB-RS232 Prolific PL2303 i błąd kod 10. Po zainstalowaniu, przechodzimy do Menedżera Urządzeń, tam klikamy dwa razy na pozycji naszego kabelka, przechodzimy do zakładki Sterownik->Aktualizuj sterownik->Przeglądaj mój komputer w poszukiwaniu…->Pozwól mi wybrać z listy sterowników… i wybieramy te działające:
W zakładce Ustawienia portu->Zaawansowane warto też ustawić jakiś niski, niezajęty port COM.
Mimo tych zmian, nowsze Windowsy będą uparcie ładować nowszy, niedziałający sterownik po ponownym podłączeniu przejściówki. By wyłączyć te automatyczne aktualizacje, należy we Właściwościach systemu (Panel sterowania->System->Zaawansowane ustawienia systemu) przejść do zakładki Sprzęt, wybrać Ustawienia instalacji urządzeń i zmienić ustawienie na Nie, pozwól mi wybrać, co zrobić i Nigdy nie instaluj sterownika z Witryny Windows Update.
Wgrywanie firmware’u do ESP8266
Najczęściej nie wiadomo, co Chińczyk wgrał w zakupiony moduł ESP-01 i można tracić czas na próbę połączenia ustawiając różne parametry, lub od razu przejść na stronę nodemcu na github i pobrać najnowszą wersję nodeMCU.
Do wyboru są dwa firmware: z obsługą liczb rzeczywistych (integer) i o nieco większym rozmiarze, obsługujący liczby zmiennoprzecinkowe (float). Bardziej uniwersalny jest ten drugi – pobieramy go na dysk:
Do wgrania softu można wykorzystać jedno z kilku dostępnych narzędzi, od dedykowanego NodeMCU Flasher (link do pobrania), czyli ESP8266Flasher.exe, który jest dostępny dla Windowsów 32 jak i 64 bitowych
Do wgrania wystarczą defaultowe ustawienia, ścieżkę do firmware podaje się w zakładce Config. Należy pamiętać o podłączeniu pinu GPIO_0 do masy (GND) na czas wgrywania.
Kolejne narzędzie, to bardzo prosty ESP8266 Flash Downloader. Link do pobrania.
Na końcu pojawi się błąd wyjścia z trybu flash, ale to prawidłowa reakcja. Pin GPIO_0 oczywiście również musi być podłączony do GND.
Kolejny flasher ESP FLASH DOWNLOAD TOOL V2.3 nieco straszy liczbą opcji (link do pobrania). Tu również ustawienia powinny być defaultowe. Często trzeba zmienić adres początku wgrywania na 0x000000:
Programowanie ESP8266
Mając wgrany firmware nodeMCU, można zacząć pisać proste programy. Zaczynamy od podłączenia z naszym ESP-01. Oprogramowanie pozwala na połączenie telnet z prędkością 9600Bd. Warto skorzystać z nieśmiertelnego PuTTy (link do pobrania):
Klepnięcie w [enter] powinno spowodować pojawienie się znaku zachęty >. Po wpisaniu:
node.restart()
powinniśmy ujrzeć nieco więcej informacji:
Przeklepmy w terminalu przykładowy program, który połączy się z naszą siecią bezprzewodową:
ip = wifi.sta.getip() print(ip) wifi.setmode(wifi.STATION) wifi.sta.config("SSID","password") ip = wifi.sta.getip() print(ip)
W pierwszych dwóch linijkach pobieramy i wyświetlamy adres IP, urządzenie zwraca nil, gdyż nie jest podłączone pod APeka. W kolejnych ustawiamy tryb pracy, nazwę naszej sieci (SSID) i hasło (password). Następnie znowu pobieramy IP i wyświetlamy. Ja jeszcze spingowałem ESP8266, by pokazać, że działa:
Jak widać, program jest wykonywany linijka po linijce. Taki zapis nie jest trwały, po restarcie nie będzie po nim śladu. By to zmienić, należałoby program zapisać w pliku, który trzeba załadować do ESP8266. Jeśli plik nazwiemy init.lua, to zostanie on uruchomiony po restarcie. Dla wygody można skorzystać z mini IDE, które to ułatwi. Środowisko nazywa się ESPlorer i można je pobrać tutaj. Do działania niezbędna jest Java.
Podsumowanie
Jak widać, ta mała płytka ma bardzo duże możliwości. Nic więc dziwnego, że w sieci można znaleźć całe tony zastosowań, od prostych samodzielnych układzików, po części składowe systemów inteligentnych domów. Sporo przydatnych informacji znajduje się na tematycznym forum: esp8266.com. Moduły z ESP8266 na pewno będą się jeszcze pojawiać na stronie.
Witam, mam mały problem, mój ESP8266 falshuje się lecz potem, po odłączeniu GPIO0 od GND staram się łączyć ESPlorer i zaczyna szukać ale nic nie otwiera, próbowałem inne prędkości także nic, próbowałem też dla putty, otwiera się konsola ale naciskanie czegokolwiek nie zmienia stanu na znak zachęty. Czy można uzyskać jakieś porady jakie może jest rozwiązanie?
Jaki dokładnie firmware wgrywasz? Po wgraniu oczywiście odłączasz gpio0 od GND i zasilanie, po czym podłączasz je znowu (zasilanie)? W nodemcu 0.9.6 predkość wynosi 9600.
Na początku miałem jakiś o wiele większy baud tam ustawiony, może jeszcze inne ustawienia, można prosić o jakiegoś screena ustawień z nodemcu? A z zasilaniem, zmieniam GPIO0 przy wyłączonym zasilaniu.
W nodemcu flasher w zakładce Config wczytaj firmware nodemcu 0.9.6 float pobrane z GitHub,, adres ustaw na 0x00000. W zakładce Advaced wciśnij Restore Default, czyli baudrate 230400, flash size 4MB, flash speed 40MHz, SPI Mode DIO.
Po flashowaniu i odłączeniu GPIO0 od GND, podłącz zasilanie do ESP2866, powinna zapalić się czerwona i mignąć niebieska dioda, w ESPlorer odśwież porty, prędkość zostaw ustawioną na 9600, wybierz ten właściwy i połącz się.
Ok to już jakiś trop, flash zrobiony z takimi ustawieniami itp. ale po zmianie pina GPIO0 i podłączeniu zasilania nie ma tego mignięcia niebieską diodą. To jakiś znak?
W dwóch modułach ESP01 miałem ten sam przypadek. Bez problemu Firmware wygrywa się, ale po RESETcie, nic. Okazało się, że pamięć Flash umarła, wymieniłem choć to się ekonomicznie nie opłaca i moduły ożyły. Trzeba też uważać na “śmieciowy”(modyfikowany przez firmy lub domowych userów na własne potrzeby) Firmware, potrafi uśmiercić ESP. Są też Firmwarey nie działające z na niektórych wersjach ESP, Dla przykłady Firmware ESP Basic nie działa na ESP07 i na niektórych wersjach ESP01 z 512MB pamięci Flash. Nie działa też najnowszy Firmware od Ai Thinker na modułach z pamięcią mniejsza niż 4MB, Uważać też trzeba na Firmware w przypadku ESP13, Tu podobny problem z zarządzaniem pamięcią ESP13 ma 16MB. Starsze wersje Firmware ów obsługują max 4MB. Na koniec uwaga co do ESP01, nóżki TX RX też można używać jako GPIO, pod warunkiem, że w aplikacji nie korzystamy z RS232.
Witajcie
chciałbym zrobić co powyższe z modułem ESP-12. W nodemcu flasher ustawiam wszystko tak samo jak jest tutaj opisane natomiast podłączenia jak niżej:
ESP VCC – 3.3v USB-RS232 TTL
ESP GND – GND USB-RS232 TTL
ESP RX – TX USB-RS232 TTL
ESP TX – RX USB-RS232 TTL
przeczytałem również, że by wejsć w tryb flashowania trzeba dodatkowo połączyć:
ESP Vcc to CH_PD to enable the chip
ESP GPI0 to GND to enable flash reprogramming
ESP GPI15 to GND to enable UART Download
robię w ten sposób i w nodemcu na standardowych ustawieniach wszysko wydaje sie być ok – plik float się wgrywa z powodzeniem.
Mam jednak ogromny problem by otworzyć ESP-12 w ESPlorer.
Z ESP-01 wszystko szło wg instrukcji i komentarzy powyższych natomiast z ESP-12 nie mogę sobie poradzić 🙁 czy moglibyście mi pomóc i podać jakieś wskazówki by uzyskać połączenie w ESPlorer z ESP-12?
Dodam jeszcze, że moim zdaniem chodzi pewnie o procedurę połączeń miedzy ESP-12 a USB-RS232 przed próbą otwarcia portu w ESPlorer.
Każda próba połączenia kończy się próbą łączenia i rzędami kropek…nic poza tym 🙁
Mam mały problem z ESP8266. Bez problemu udaje mi się wgrać nodemcu_float_0.9.6-dev_20150704. Jednak po rozłączeniu masy od GPIO_0 i ponownym podłączeniu do usb zrywa połączenie, nie rozpoznaje urządzenia USB. a gdy już uda połączyć się przez PUTTY po komendzie wifi.sta.config(“SSID”,”password”) zrywa połączenie
Jeśli zasilanie bierzesz z przejściówki USB->RS232 to masz problem z zasilaniem. Problem częściowo rozwiąże kondensator elektrolityczny 1000uF w linii 3V3, a całkowicie stabilizowane napięcie 3V3 o wydajności około 500mA
Masz rację – problem dotyczył zasilania, ale rozwiązałem to inaczej, zasilam nadal z przejściówki USB>RS232 ale przełączyłem ją na 5V i podłączyłem wydajniejszy stabilizator 3,3V. Zadziałało. Dzięki za pomoc.
Witam,
przede wszystkim szacun , kawał dobrej roboty- chodzi mi o stronę i toturiale.
Mam pytanie jak wgrać pliki LUA do ESP8266. (WeMos mini d1)
z plikiem bin nie ma problemu, flasher daje sobie rade , ale LUA … nie mam pojęcia jak to zrobić
Proszę o pomoc.
Tutaj jest opis Esplorer pod Linuksa, ale pod Windows jest identycznie http://grylewicz.pl/esp8266-i-linux-pierwszy-program-z-obsluga-dht11/