Kurs ESP8266 & MicroPython #0: Słowo wstępu i instalacja MicroPythona

W tym kursie zajmiemy się programowaniem modułu ESP8266. Jeśli jeszcze nie wiesz, co to jest, to spieszę z wyjaśnieniem. Jest to tani układ obsługujący komunikację po Wi-Fi oraz posiadający porty we/wy którymi rzecz jasna można sterować. Moduły te występują w kilku wersjach, różniących się pojemnością pamięci, ilością portów oraz wymiarami. Najtańszy, a zarazem posiadający najmniej możliwości jest układ ESP-01. Wyposażony jest w pamięć o pojemności 512Kb (niebieski) lub 1Mb (czarny) i jedynie 2 porty GPIO, co szybko stałoby się problemem przy próbie użycia go do bardziej skomplikowanego projektu. Istnieje jeszcze kilka modeli, różniących się wielkością pamięci i ilością wyprowadzeń. Jedynym odstępstwem od reguły jest ESP-14, który posiada także mikrokontroler ST8S i to on jest właściwym urządzeniem, które się w tym przypadku programuje.

W takim razie który moduł wybrać?
Sprawa jest prostsza, niż mogłoby się wydawać. Wszystkie moduły wymagają zasilania 3.3V i pracy w takiej logice, do komunikacji zaś wymagany jest konwerter USB-UART. To wszystko powoduje, że już uruchomienie samego modułu objawi się plątaniną kabli. Na szczęście jest rozwiązanie – płytka NodeMCU, która zawiera wszystko, co potrzebne, czyli stabilizator napięcia i konwerter USB-UART i wystarczy ją tylko podłączyć kablem USB do komputera. Dostępna jest w dwóch wersjach, z modułem ESP-12 (512 kB) lub ESP-12E (4MB). Obie kosztują około 15 zł na eBayu, ale polecam kupić wersję z modułem ESP-12E ze względu na większą pojemność pamięci i liczbę portów. Można ją rozpoznać po antenie bez soldermaski. Płytki mogą się także różnić użytym konwerterem USB-UART, będzie to CP2102 lub CH340G. Pierwszy wymaga samodzielnej instalacji sterowników na Windowsie, natomiast drugi nie. Sam konwerter jest sprawą drugorzędną, możesz po prostu wybrać płytkę, która bardziej Ci “pasuje”. Ja wybrałem tę z CP2102.

nodemcu

Korzystanie z modułu
Pewnie teraz zastanawiasz się “z czym to się je”. Tutaj też jest kilka możliwości. Podstawową jest używanie tzw. komend AT. Są to tekstowe komendy wysyłane przez port szeregowy, na które moduł odpowiada w ten sam sposób. To rozwiązanie jest toporne i wymaga dodatkowego mikrokontrolera do wysyłania komend i interpretacji odpowiedzi. Ma to sens w zasadzie tylko przy module z małą ilością wyprowadzeń, jak ESP-01. Druga możliwość to użycie firmware NodeMCU (tak, nazwa płytki pochodzi właśnie od tego firmware). Programuje się wówczas w skryptowym języku Lua, który nie jest zbytnio popularny. Ciężko wypowiadać mi się na temat możliwości tego firmware, bo nigdy go nie używałem. Znalazłem ciekawszą alternatywę – MicroPythona, czyli implementację Pythona na mikrokontrolery. Projekt ten jest bezustannie rozwijany i w obecnej wersji (1.8.4) ma już całkiem spore możliwości. Obsługa ESP8266 przy użyciu MicroPythona będzie tematem tego kursu.
Wszystkie poprzednie możliwości łączy jedna cecha – korzystają z firmware, które pozwalają na wprowadzanie danych na wyższym poziomie, bez przejmowania się tym, jak odbywa się to na poziomie sprzętowym. I tu ukryta jest czwarta możliwość, czyli programowanie w C. Wspominam to jedynie jako ciekawostkę, bo jest to niepraktyczne i po prostu wygodniej użyć któregoś z dostępnych firmware.

Wgrywanie firmware
Aby wgrać firmware, trzeba je najpierw przede wszystkim pobrać. Na stronie micropython.org znajdują się wszystkie wersje skompilowane do pliku binarnego. Jak widać, nowe wydania pojawiają się co miesiąc, warto więc czasem przeprowadzać aktualizację, aby zyskać nowe funkcjonalności albo pozbyć się bugów. Póki co, po prostu pobierz najnowszą wersję. Będziesz jeszcze potrzebował Pythona w wersji 2.7.x do pobrania stąd oraz modułu pyserial. Jeśli wszystko już zainstalujesz, pobierz narzędzie esptool z GitHuba, które pozwoli Ci wgrać firmware do ESP8266. Następnie skopiuj plik firmware do folderu z esptoolem i uruchom w tym folderze wiersz poleceń (możesz to zrobić poprzez wpisanie w pasku adresu “cmd”). W wierszu poleceń wpisz

esptool.py --port COM1 --baud 115200 write_flash --flash_size=32m 0 esp8266-20160909-v1.8.4.bin

wpisując poprawne parametry, tj. numer portu COM, baudrate (standardowo 9600 lub 115200), rozmiar pamięci w megabitach i nazwę pliku. Po wciśnięciu enter powinien pokazać się taki widok:

programming

Oznacza to, że firmware jest wgrywany. Jeśli nic się nie wgrywa, sprawdź, czy poprawnie wpisałeś dane i spróbuj z innym baudrate. Możesz także spróbować uprzednio wyczyścić pamięć komendą

esptool.py --port COM1 erase_flash

Jeśli będziesz chciał kiedyś zaktualizować firmware, zrób to bez czyszczenia pamięci. Zachowasz wtedy swoje skrypty .py.

Po wgraniu firmware moduł powinien działać w trybie AP, tzn. pojawi się nowa sieć Wi-Fi o SSID MicroPython-xxxxxx, gdzie xxxxxx będzie fragmentem adresu MAC modułu.
W kolejnej części kursu pokażę, jak napisać pierwszy program, a właściwie skrypt, wykonywany przez właśnie zainstalowany interpreter.

4 myśli na temat “Kurs ESP8266 & MicroPython #0: Słowo wstępu i instalacja MicroPythona

  1. Czy ten MicroPhyton jest jak Lua językiem skryptowym i kod zapisany w uC można odczytać i modyfikować we własnym zakresie?

    1. Dokładnie tak jest. W dziale Download zamieściłem aplikację do zapisu i odczytu plików z ESP (ale można też zdalnie przez WebREPL, choć to się nadaje tylko do późniejszych aktualizacji). Pozdrawiam!

  2. Witam, jestem poczatkujacy, chcialbym zapytac czy ESP podpina sie bezposrednio pod USB? Czy cos pomiedzy musi byc.

    1. Cześć,
      Jeśli płytka ma USB, to ma pewnie też konwerter USB-UART, tak jak NodeMCU i nic więcej nie musi być pomiędzy. Jeśli natomiast masz ten tańszy moduł, który ma tylko 8 goldpinów, to potrzebujesz jeszcze osobnego konwertera USB-UART.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Rozwiąż równanie: *

This site uses Akismet to reduce spam. Learn how your comment data is processed.