ESP8266 jest tanim układem WIFI produkowanym przez firmę Espressif Systems. Określenie "układ WIFI" zostało użyte celowo, ponieważ trudno jednoznacznie zaliczyć ten układ do konkretnej kategorii elementów. W oryginalnej wersji jest to kompletna karta sieciowa WIFI pracująca w standardzie IEEE 802.11 b/g/n. Układ może pracować w sieciach otwartych oraz zabezpieczonych WEP lub WPA/WPA2. Posiada zaimplementowany stos TCP/IP, a komunikację zapewnia interfejs szeregowy i komendy Hayes AT. Powyższe właściwości układu umożliwiają jego proste zastosowanie we własnych projektach opartych o różne mikrokontrolery. ESP8266 możemy podłączyć za pomocą portu szeregowego do mikrokontrolera i w ten sposób uzyskać dostęp naszego urządzenia do sieci. Taki sposób wykorzystania układu nie jest jedynym. ESP8266 to również mikrokontroler, do którego możemy mieć dostęp z wykorzystaniem specjalnego SDK. Istnieje kilka rozwijanych projektów umożliwiających modyfikację firmware układu. Jednym z nich jest NodeMcu bazujący na języku Lua. My zajmiemy się w pierwszej kolejności dwoma równoległymi sposobami wykorzystania układu:
- komunikacją z wykorzystaniem komend AT,
- programowaniem firmware układu z wykorzystaniem ..... pakietu Arduino.
Wybór pakietu Arduino nie jest przypadkowy, ponieważ jest to środowisko znane i lubiane. Oznacza to, że możemy skorzystać z możliwości jakie daje nam nowy układ ESP8266 w sposób znany z programowania układów Arduino.
Specyfikacja ESP8266
Po tym przydługim wstępie o niczym przejdziemy do konkretów. Zaczniemy od podstawowych parametrów układów ESP8266, ich wersji, liczby wyprowadzeń i rozmiarów.
Podstawowe parametry układów ESP8266:
- 32-bitowy procesor RISC taktowany zegarem 80MHz (możliwość zwiększenia częstotliwości taktowania w niektórych modelach nawet do 160MHz),
- 64 KiB RAM na program,
- 96 KiB RAM na dane,
- 512 KiB do 4 MiB FLASH na firmware,
- do 16 linii cyfrowych we/wy,
- jedno 10-bitowe wejście ADC,
- obsługa SPI, I2C, I2S, UART,
- zasilanie 3V3,
- pobór mocy w stanie spoczynku - ok. 10uA,
- WiFi 802.11 b/g/n,
- częstotliwość pracy 2,4 GHz,
- wspiera zabezpieczenia WPA / WPA2
- może pracować w trybie AP (Access Point), STA (standalone) oraz AP+STA,
- wsparcie dla komend AT.
Jak widać z powyższych parametrów ESP8266 to układ o dużych możliwościach, a wszystko to otrzymujemy za cenę 15 do 20 PLN (cena ze znanego portalu aukcyjnego). W przypadku zakupu w Chinach cena spada do ok. 2 USD za sztukę. Jest to koszt odpowiadający układom Arduino Nano lub Arduino Pro Mini.
Od roku 2014, kiedy pojawiły się pierwsze ESP8266 wprowadzono do sprzedaży kilka wersji tego układu. Różnią się pomiędzy sobą głównie ilością dostępnych pinów GPIO oraz rozmiarem pamięci FLASH. Większość układów ESP8266 przystosowana jest do montażu powierzchniowego. Jest to rozwiązanie czasami kłopotliwe dla elektronika amatora, który chciałby wykorzystać układ we własnym projekcie. Dostępne są również układy (najczęściej dodatkowe płytki przejściowe), które można wykorzystać w projektach realizowanych z wykorzystaniem elementów tradycyjnych. Największy z widocznych na fotografii układów to ESP8266 12E uzupełniony o konwerter USB-RS oraz dwa rzędy pinów z wyprowadzonymi sygnałami w rozstawie 2,54mm (standard dla montażu przewlekanego). W sprzedaży układ występuje często pod nazwą NodeMCU lub NodeMCU development kit. Układ ten jest idealny do testowania i prototypowania. zapewnia komunikację z komputerem za pomocą złącza USB, można wysyłać do układu komendy AT lub wgrywać firmware. Dodatkowo układ można wstawić do płytki stykowej i podłączyć zewnętrzne elementy. Na zdjęciach poniżej przedstawiono różne wersje ESP8266 oraz elementy przydatne podczas wykonywania prototypów układów.
![]() ![]() ![]() |
Z lewej strony pokazane zostały układy ESP-01 oraz ESP-12E, w środku znajduje się dodatkowa płytka, która umożliwia wpięcie układu ESP8266 do płytki stykowej, lub wykorzystanie go w projektach z tradycyjnymi płytkami drukowanymi. Z prawej strony układ prototypowy wpięty w płytkę stykową, co umożliwia testowanie dodatkowych elementów przed zaprojektowaniem gotowej płytki dla urządzenia. Poniżej tabela z dostępnymi w sprzedaży modułami ESP8266.
Nazwa układu | Liczba wyprowadzeń | Liczba GPIO | Wymiary (mm) | Antena wbudowana | Rozmiar pamięci |
---|---|---|---|---|---|
ESP-01 | 8 | 3 | 14.3 x 24.8 | PCB | 512KB |
ESP-02 | 8 | 3 | 14.2 x 14.2 | Brak | 512KB |
ESP-03 | 14 | 7 | 17.3 x 12.1 | Ceramiczna | 512KB |
ESP-04 | 14 | 6 | 14.7 x 12.1 | Brak | 512KB |
ESP-05 | 5 | 0 | 14.2 x 14.2 | Brak | 512KB |
ESP-06 | 12+GND | 7 | 16.3 x 13.1 | Brak | 1024KB |
ESP-07 | 16 | 9 | 21.2 x 16.0 | Ceramiczna | b/d |
ESP-07S | 16 | 9 | 17.0 x 16.0 | Brak | b/d |
ESP-08 | 14 | 7 | 17.0 x 16.0 | Brak | b/d |
ESP-08New | 16 | 7 | 18.0 x 16.0 | Brak | b/d |
ESP-09 | 12+GND | 6 | 10.0 x 10.0 | Brak | b/d |
ESP-10 | 5 | 0 | 14.2 x 10.0 | Brak | 512KB |
ESP-11 | 8 | 2 | 17.3 x 12.1 | Ceramiczna | 512KB |
ESP-12 | 16 | 9+ADC | 24.0 x 16.0 | PCB | 4096KB |
ESP-12E | 22 | 11+ADC | 24.0 x 16.0 | PCB | 4096KB |
ESP-12F | 22 | 11+ADC | 24.0 x 16.0 | PCB | 4096KB |
ESP-13 | 18 | b/d | b/d | PCB | b/d |
ESP-14 | 22 | 10 | 24.3 x 16.2 | PCB | b/d |
Jak widać od 2014 roku pojawiło się sporo wersji ESP826. W zależności od potrzeb możemy wybierać pomiędzy wersjami z wbudowaną anteną lub z możliwością dołączenia anteny zewnętrznej. Każdy z układów ma wyprowadzone linie TX i RX do transmisji przewodowej, dodatkowo większość układów posiada linie GPIO, które możemy wykorzystać jako wejścia lub wyjścia. Jeżeli potrzebujemy karty sieciowej, to możemy zastosować dowolny z dostępnych układów. W przypadku, gdy układ ma spełniać rolę kontrolera elementów zewnętrznych musimy wybrać układ o odpowiedniej liczbie wyprowadzeń GPIO. Ja osobiście zachęcam do kupna modułów ESP8266 12F (ewentualnie 12E) w wersji standardowej do wykorzystania w gotowych urządzeniach oraz w wersji rozbudowanej (te "duże") do testowania i wykonywania prototypów. Różnica w cenie pomiędzy ESP-01 a ESP-12 jest niewielka, a możliwości wykorzystania układu dużo większe.
Firmware
Zapoznaliśmy się z podstawowymi parametrami układów ESP8266. Pora na oprogramowanie, które czyni z tego układu doskonałą podstawę dla IoT (Internet of Things) - Internetu rzeczy. Jeżeli ktoś nie spotkał się jeszcze z tym określeniem, to odsyłam do wikipedii. W skrócie idea IoT polega na tym, że urządzenia podłączamy do sieci, co zwiększa ich możliwości oraz umożliwia gromadzenie danych pomiarowych. IoT ciągle się rozwija i jest to temat, którym warto się obecnie zająć. Pomijając zasadni=ość podłączenia kuchenki mikrofalowej do sieci Internet, IoT daje nam nowe niespotykane dotąd możliwości. Układy ESP8266 dostępne w sprzedaży mają najczęściej wgrany firmware, który umożliwia traktowanie ESP jako sterowanej poprzez port szeregowy karty sieciowej. Firmware ten można wymienić na inną wersję, która umożliwi napisanie własnego oprogramowania sterującego układem i wgranie go do ESP8266. Dzięki takiemu rozwiązaniu możliwe jest stosowanie układów ESP zarówno jako dodatków do istniejących/projektowanych urządzeń z wykorzystaniem mikrokontrolerów, jak również jako samodzielny układ sterujący. Każde z rozwiązań ma swoje zalety oraz wady. Wykorzystanie układu jako karty sieciowej WIFI ułatwia wpięcie własnych projektów do sieci. Użycie samego układu ESP przyczyni się do miniaturyzacji projektowanego urządzenia.
W sieci można znaleźć wiele różnych wersji firmware dla układów ESP8266. Te, które warto zawsze mieć pod ręką bawiąc się tymi układami zamieszczam poniżej:
- Espressif Systems - oficjalny firmware z komendami AT
- NodeMCU - generator firmware (wybieramy moduły, które nas interesują)
- ArduinoIDE ESP8266 - biblioteka ESP8266 dla Arduino
W kolejnych artykułach pojawią się informacje dotyczące wgrywania firmware, przygotowania środowiska programistycznego (NodeMCU, Arduino) i mam nadzieję projekty z wykorzystaniem układów ESP8266. Na zakończenie przypominam, że wszystkie prezentowane na naszej stronie informacje, programy i schematy połączeń są testowane. Jednak nie możemy wykluczyć błędów podczas tworzenia schematów, czy opisów. Czasami układy sprzedawane o tych samych nazwach różnią się pomiędzy sobą. W przypadku układów ESP8266 należy zwracać szczególną uwagę na zasilanie 3v3 oraz łączenie tego układu z innymi zasilanymi napięciem 5V. Oficjalnie układ ESP8266 powinien być łączony z innymi układami zasilanymi napięciem 5V poprzez konwerter napięć. W związku z powyższym:
Wszelkie modyfikacje układów każdy wykonuje na swój rachunek. Nie ponosimy żadnej odpowiedzialności za ewentualne szkody powstałe w wyniku łączenia układów zgodnie z udostępnianymi przez nas schematami, czy uszkodzenie układów podczas wgrywania firmware lub innego oprogramowania.