Demo ESP8266 – jak rozpocząć pracę z popularnym układem WiFi firmy Espressif

Układ ESP8266, będący zarazem głównym elementem bardziej zaawansowanego ESP-WROOM-02 ma świetnie przygotowane zaplecze dla programistów. Firma Espressif zadbała o instrukcję użytkownika i projekty demonstracyjne. Sprawdziliśmy jak rozpocząć pracę z tym nowatorskim układem.

Najwygodniejszym i najszybszym sposobem na rozpoczęcie przygody z ESP8266 jest zakup zestawu startowego ESP-WROOM-03 oraz układu ESP8266 umieszczonego na płytce ESP-TEST. Jest to kompletne rozwiązanie sprzętowe i wystarczy podłączyć do niego kabel USB aby móc za pośrednictwem wbudowanego konwertera FTDI komunikować się z układem. Płytka ewaluacyjna posiada także złącze umożliwiające podłączenie układu ESP-WROOM-02 – wymagane jest jednak wówczas przylutowanie kilku kabelków.

01

Sama płytka ewaluacyjna jest wyposażona we wszystko czego potrzebuje programista. Zacznijmy od dwóch złącz USB – jedno z nich może posłużyć jako programator oraz złącze do komunikacji (np. do przesyłania poleceń lub zapytań), podczas gdy drugim będą przesyłane informacje pomocnicze (tzw. debugging output). Wgrywany protokołem szeregowym emulowanym na złączu USB program trafia do pamięci Flash. W oferowanych modułach znajduje się największa obsługiwana pamięć o pojemności 4 MB (32 Mb). Aby przestawiać układ z trybu programowania w tryb wykonywania programu z pamięci Flash, trzeba przełączyć odpowiednie piny, co umożliwiają umieszczone na płytce przełączniki. Znajdziemy też diody LED, wyprowadzenia portów i peryferiów (między innymi PWM, konwerter analogowo-cyfrowy), złącze antenowe, czy przycisk reset. Jednym słowem – wszystko czego potrzeba aby solidnie przetestować układ.

 

Pierwszy kontakt

Po otrzymaniu układu każdy elektronik chce się przekonać, że nie jest on uszkodzony. W tym celu wystarczy wykonać kilka prostych czynności aby móc skomunikować się z wgranym domyślnie oprogramowaniem obsługującym komendy AT. Jak już wspomniano, po umieszczeniu płytki ESP_TEST w wyprowadzonych złączach można wykorzystać złącze USB, aby poprzez zainstalowany układ FTDI komunikować się z ESP8266. Bardzo istotne jest, aby przełącznik IO0 ustawiony był w pozycję H a na złącze I_3V3 była założona zworka (co pozwoli zasilać układ ze złącza USB).

Do komunikacji można użyć dowolnego programu typu minicom lub Realterm. Konfiguruje się częstotliwość na 115200 kbps. Po włączeniu zasilania układ prześle komunikat o treści „ready”. Można wówczas przesłać kilka komend AT i powinny one zwrócić status OK. Wiadomo wtedy, że płytka działa i można zacząć ja testować w bardziej wyrafinowany sposób.

02

 

Projekt demonstracyjny

Espressif przygotował kilka przykładowych projektów, które mogą posłużyć jako podstawa do rozwijania bardziej zaawansowanego oprogramowania. W centrum uwagi niniejszego artykułu znalazł się projekt IoT_Demo i autor podążał za krokami opisanymi w oficjalnej instrukcji uruchamiania układu w systemie Windows. Projekt ten konfiguruje układ do działania jako AP i wystawia interfejs, który umożliwi zapalenie diody na płytce (za pośrednictwem WiFi, rzecz jasna).

W związku z tym, że ESP8266 to bardzo nowa technologia, podczas wykonywania instrukcji można natknąć się na pewne nieścisłości wynikające z dokonanych przez producenta uaktualnień. Wówczas przydaje się kontakt z aktywną i pomocną społecznością, która zdążyła się już wykształcić wokół ESP8266. Rozwiązanie występujących problemów znajduje się w Internecie na blogach i forach prowadzonych przez i dla programistów tego popularnego układu.

Pierwszą trudnością jaką napotka się podążając ze wskazówkami ze szczegółowej instrukcji, jest niedziałający link do obrazu maszyny wirtualnej z zainstalowanych toolchainem do kompilacji na platformę docelową (ang. cross-compilation). Obraz można jednak ściągnąć z tej strony. Wykorzystanie obrazu systemu to sprytne rozwiązanie, które pozwala uniknąć typowych kłopotów przy instalacji niestandardowych toolchainów. Maszynę wirtualną można także zainstalować na Linuksie, choć zapewne jego użytkownicy będą woleli po prostu zainstalować oprogramowanie bezpośrednio na swoim systemie i wykorzystać przygotowane skrypty w języku Python zamiast okienkowego programatora dostępnego na platformę Windows.

Opisywany projekt zostanie skompilowany z nową wersją bootloadera, która daje możliwość aktualizacji oprogramowania poprzez Internet (FOTA – Firmware Over The Air). Ponieważ wymaga to rejestracji konta na portalu ESP, skupimy się jednak na podstawowym wariancie czyli załadowaniu skompilowanego programu do pamięci poprzez kabel USB.

Istotnym krokiem podczas kompilacji jest prawidłowe rozpoznanie układu pamięci Flash dostępnego w naszym układzie. Należy w tym celu dokładnie obejrzeć układ znajdujący się na płytce ESP-WROOM-03 (może tu pomóc aparat w telefonie). W dystrybuowanej przez Soyter wersji można znaleźć taki oto układ:

03

Można na nim odczytać napis „FM25Q32” a ze znalezionej w Internecie dokumentacji dowiemy się, że jest to pamięć Flash o pojemności 32 Mbitów czyli 4 MB.

Aby poprawnie skompilować kod źródłowy dla pamięci Flash o pojemności innej niż domyślne 512 kB musimy zmodyfikować kod źródłowy. W przypadku naszej płytki należy więc umieścić następujące wartości w plikach:

ESP8266_NONOS_SDK\examples\IoT_Demo\include\user_light.h

ESP8266_NONOS_SDK\examples\IoT_Demo\include\user_plug.h

ESP8266_NONOS_SDK\examples\IoT_Demo\include\user_esp_platform.h

Wreszcie można przejść do kompilacji. Niestety, zmiany w plikach Makefile dokonane przez Espressif mogą wymagać zmiany lokalizacji plików. Nieprawidłowe umiejscowienie katalogu z projektem objawia się w postaci błędów podczas wykonania plików Makefile. W wersji z maja 2016 roku konieczne było przeniesienie katalogu ESP8266_NONOS_SDK\examples\IoT_Demo o jeden stopień wyżej tak, aby ścieżką dostępu było  ESP8266_NONOS_SDK\IoT_Demo.

Zgodnie z instrukcją, trzeba wykorzystać skrypt gen_misc.sh (choć należy go uruchomić w katalogu IoT_Demo, a nie w app jak sugeruje instrukcja), który po przeprowadzonej konfiguracji wywoła kompilację z odpowiednimi parametrami. Aby skompilować projekt IoT_Demo z bootloaderem FOTA na płytkę oferowaną przez Soyter należy wybierać kolejno następujące opcje:

1 – używamy wersji bootv1.2+

1 – kompilujemy plik user1.bin

2 – szybkość interfejsu SPI ustawiamy na maksymalne 40 MHz

0 – tryb pracy interfejsu SPI to QIO

6 – nasza karta pamięci ma 4MB

Kompilacja powinna zakończyć się sukcesem a w katalogu bin/upgrade powinien pojawić się nowy plik o nazwie user1.4096.new.6.bin. Ewentualne ostrzeżenie o nieprawidłowym ustawieniu zegara oznacza, że dystrybucja Linuksa w maszynie wirtualnej używa czasu producenta (tj. chińskiego). Można to łatwo poprawić w ustawieniach systemu.

Czas załadować nasz skompilowany program do pamięci Flash. W tym celu, dalej podążając za instrukcją, wykorzystany zostanie program ESP FLASH DOWNLOAD TOOL w najnowszej wersji (w momencie pisania tego artykułu jest to wersja 2.3). Zanim zacznie się programować płytkę, należy odłączyć zasilanie, przestawić przełącznik z pozycji H_IO0 na pozycję L_IO0 i włączyć ją ponownie – teraz jest ona gotowa do przyjęcia oprogramowania przesłanego za pośrednictwem kabla USB.

04

W okienku narzędzia FLASH DOWNLOAD TOOL należy bardzo uważnie ustawić wszystkie ścieżki plików i ich adresy a także skonfigurować ustawienia protokołu SPI, którym porozumiewamy się z pamięcią Flash. Na załączonym zrzucie ekranu podano także plik user2.bin – aby go uzyskać wystarczy zmienić pierwszą opcję kompilacji.

Po zakończeniu programowania trzeba wyłączyć płytkę i przywrócić ustawienie przełącznika IO0 w pozycję H. Należy też przekonfigurować nasz nasz port szeregowy tak, aby odbierał na częstotliwości 74880 kbps. Po ponownym uruchomieniu płytki powinien być widoczny wydruk potwierdzający uruchmienie oprogramowania oraz świecenie niebieskiej diody LED oznaczającej uruchomienie WiFi.

05

Niestety nie zawsze zaprogramowanie pamięci Flash kończy się sukcesem mimo pozornego braku błędów zgłaszanych przez narzędzie firmy Espressif. Jeśli wydruk na konsoli przedstawia informację o błędzie bootloadera oraz komunikat „error magic” to umieszczony w pamięci program nie załadował się poprawnie. W opisywanym przypadku pomogło wgranie bootloadera w starszej wersji 1.2 (który również zgłaszał „error magic”) a następnie ponowne wgranie najnowszego oprogramowania.

Mając uruchomiony, działający program demonstracyjny można zobaczyć dostępną nową sieć WiFi w naszym otoczeniu.

06

Po połączeniu komputera z tą siecią możemy korzystać z wystawionego przez http interfejsu np. za pomocą programu curl, co pozwala nam zapalić diodę LED:

Można także ściągnąć kod źródłowy aplikacji na systemy Android, która pozwala na sprawowanie kontroli nad płytką za pośrednictwem smartfona – i już jesteśmy w świecie Internetu Rzeczy!

Bardziej zaawansowanym projektem prezentującym możliwości układu ESP8266 jest stacja pogodowa, której kod źródłowy dostępny jest na platformie github.

Internet kipi przykładami twórczego i nowatorskiego wykorzystania układów ESP8266, a płytka ESP-WROOM-03 to idealne narzędzie do rozpoczęcia przygody z tym modułem. Posłuży ona także przy pracy z  ESP-WROOM-02 będącym gotowym, kompletnym rozwiązaniem – które jednak wygodniej rozpoznać z pomocą płytki ewaluacyjnej.

Dystrybutorem produktów Espressif w Polsce jest firma Soyter Sp. z o.o., Klaudyn, ul. Ekologiczna 14/16, 05-080 Izabelin, http://www.soyter.pl.

O autorze