Moduł ESP8266, czyli WiFi dla Arduino lepsze od samego Arduino?

Ten artykuł bierze udział w konkursie świątecznym. Jeżeli Ci się spodobał zagłosuj na niego klikając „lubię to” przy odpowiednim komentarzu w tym poście: >> kliknij <<

Wiele z osób „bawiących” się Arduino ociera się o tematykę Inteligentnego Domu (co prawda wyłączenie lampki przez Internet to jeszcze nie jest Inteligentny Dom, ale – każdy od czegoś zaczyna). I tu często pojawia się zagadnienie podłączenia naszego super zaawansowanego systemu do Internetu, a wręcz – do szeroko pojętej Chmury (cloud-computing). Są oczywiście gotowe rozwiązania, tzw. Shieldy, ale są one dość drogie i zajmują dużo miejsca. Każdy kto poprosi Google o pomoc, trafi prędzej czy później na moduł WiFi o nic nie mówiącej nazwie ESP8266.

Grafika #1
Źródło: diy.viktak.com

To moduł, który idealnie trafił w niszę: jest mały, tani i daje ogromne możliwości. Jego pierwszą wersję, czyli ESP-01 można kupić poniżej $2 np. w serwisie AliExpress.com (czyli kilkadziesiąt razy taniej niż WiFi Shield dla Arduino). Moduł ma możliwość pracy w trybie klienta (czyli np. podłączyć się do naszej sieci WiFi w domu i korzystać z Internetu), ale także jako AccessPoint i pozwalać się innym logować „do siebie”. Jest też możliwość pracy w trybie mieszanym. Istotna rzecz, o której należy pamiętać, to fakt, że ESP8266 musi być zasilany napięciem 3.3V (w odróżnieniu od popularnego dla Arduino 5V).

W standardzie, połączenie z modułem odbywa się poprzez port szeregowy (dwie linie: Tx/Rx), za pomocą tzw. komend AT. W teorii nie wydaje się to zbyt skomplikowane, jednak do najwygodniejszych nie należy. I tu nawiążę do tytułu – okazuje się, że moduł ten ma wbudowany, programowalny mikrokontroler. Co to oznacza? Oznacza to, że nie musi on pracować jedynie jako „bramka” dla Arduino – może być samodzielnym urządzeniem. Powstało mnóstwo wersji oprogramowania na ten moduł, dzięki czemu korzystanie jest dużo wygodniejsze niż w/w wspomniane komendy AT. Jednym z bardziej popularnych firmware’ów jest NodeMCU, w którym programujemy wykorzystując język Lua. Może nie jest on bardzo popularny, ale każdy kto miał styczność z programowaniem szybko go przyswoi. Uruchomienie serwera WWW, czy przesłanie danych do wspomnianej wcześniej Chmury jest bajecznie proste. Istnieje też możliwość programowania modułu bezpośrednio ze środowiska Arduino IDE.

Wraz ze wzrostem popularności, powstają różne odmiany tego modułu (od wymienionej już ESP-01, aż do najnowszej na czas pisania tego artykułu ESP-13). Kolejne wersje różnią się m.in. rozmiarami, ilościami wyprowadzeń (np. portów wejścia wyjścia) czy poborem prądu.

Grafika #2
Źródło: www.cthackerspace.com

Dla prostych zastosowań pojawia się pytanie – po co w takim razie Ardunio? Z poziomu ESP8266 możemy odczytywać/zapisywać dane wykorzystując porty I/O (zarówno cyfrowo jak i analogowo), mamy nawet możliwość generowania sygnałów PWM. Dodatkowo możemy z poziomu kodu zapisywać dane w pamięci wewnętrznej czy nawet aktualizować nasze oprogramowanie za pośrednictwem Internetu, bez konieczności podłączania modułu do komputera. Oczywiście wydajność takiego układu jest mniejsza niż ATmegi na której bazuje Arduino, ale jeżeli nie zbliżamy się do granic jego możliwości to może nam wystarczy to, co ESP8266 daje w standardzie? Oczywiście teza, że ESP8266 jest lepszy od Arduino jest tylko prowokacją, ale śmiem twierdzić, że w ogromnej ilości zastosowań wykorzystujących oba urządzania, dałoby się je zastąpić samym „modułem WiFi”.

autor: Michał Tomana


Artykuł zgłoszony do konkursu świątecznego

Sponsorem nagród jest firma Kamami oraz Hybrid Lizard:

kamami-1421338058

hl_mb

Karol Wojsław

Karol Wojsław -- licealista, założyciel i redaktor Mechatrobot.pl. Interesuje się robotyką i elektroniką oraz informatyką. Z racji swojego wieku nie ma ogromnej wiedzy, ale wytrwale dąży do tego, aby artykuły, które publikuje były coraz lepsze.