Warto obserwować gadżety elektroda.pl gdyż raz na jakiś czas pojawi się tam moduł LoLin oparty o ESP8266. Moduł możecie oprogramować m.in z wykorzystaniem Arduino, LUA, MicroPython, moduł zapewnia łączność WiFi 802.11b/g/n, wyposażony jest w konwerter USB<->UART CH340 pozwalający na umieszczanie kodu w pamięci flash (4MB). Warto zapoznać się z poprzednimi materiałami o ESP8266:
- instalowanie sterowników do konwertera CH340
- Start z ESP8266, uruchomienie WIFI, IoT z Blynk i Thingspeak, czujnik temperatury TMP36, funkcja głębokiego uśpienia ESP.deepSleep()
- ESP8266 i DS18B20
- ESP8266 i SPIFFS - flash file system
LoLin ESP8266 i MicroPython
ESP8266 dobrze integruje się z Arduino ale warto wypróbować też inne możliwości takie jak MicroPython.
Na początek na komputerze instalujemy środowisko Python: https://www.python.org/downloads/
Następnie z wykorzystaniem narzędzia pip instalujemy esptool.
Wykorzystałem Python 2.7.x ale esptool jest kompatybilne także z Python 3.4 i nowszym.
Jeżeli podczas instalacji Python skonfigurowaliśmy ścieżki (można to sprawdzić wydając polecenie echo %PATH%), wystarczy w cmd wydać polecenie:
pip install esptool
Tutaj więcej informacji o narzędziu: https://github.com/espressif/esptool
Po podłączeniu ESP8266 i określeniu na jakim numerze portu pracuje konwerter USB<->UART można przetestować działanie esptool.
Przykładowo dla portu COM15:
esptool.py -p COM15 read_mac
pozwoli na odczytanie MAC podłączonego ESP8266
esptool.py -p COM15 flash_id
pokaże informacje o module i wielkości pamięci flash.
Oczywiście COM15 zastępujecie rzeczywistym numerem portu, na którym pojawił się konwerter dostępny na płytce,
przy pomocy przełącznika -b można ustawić szybkość transmisji np. 115200.
Pobieramy i instalujemy firmware zgodnie z opisem:
http://docs.micropython.org/en/latest/esp8266...66/tutorial/intro.html#deploying-the-firmware
Wybieramy ostatni stabilny firmware:
http://micropython.org/download#esp8266
Kasowanie firmware:
esptool.py -p COM15 erase_flash
Umieszczamy nowy firmware:
esptool.py -p COM15 write_flash --flash_size=detect 0 ścieżka i nazwa_pobranego_pliku.bin
Powinniśmy otrzymać wynik zbliżony do:
Po tych działaniach łącząc się z szybkością 115200 z wykorzystaniem np. PuTTY na port COM, na którym pracuje konwerter połączony z ESP8266 otrzymamy REPL (read-eval-print loop) czyli linię poleceń interpretera Python.
Możemy przetestować działanie wpisując fragment kodu:
print("Test")
który spowoduje wyświetlenie napisu:
Test
a następnie wprowadzamy:
import esp
esp.check_fw()
co pozwoli na sprawdzenie integralności firmware.
Po zainstalowaniu nowego firmware ESP8266 działa w trybie WiFi AP, ESSID: MicroPython-xxxxxx gdzie xxxxxx zastąpione jest częścią MAC urządzenia. Hasło WiFi to: micropythoN, adres modułu: 192.168.4.1.
Więcej na temat korzystania z WiFi w MicroPython znajdziecie tutaj:
https://docs.micropython.org/en/latest/esp8266/library/network.html
Dość łatwo możemy wykonać skanowanie dostępnych w pobliżu sieci bezprzewodowych:
Sposób w który możemy wyłączyć wspomniany wbudowany AP:
Podczas testów zauważyłem bardzo dużą czułość ESP w tym module, wykrywał sieci których nie widziały np. smartfony, prawdopodobnie nie byłoby możliwe połączenie z tymi AP ale były one widoczne na liście.
Magistrale i czujniki w MicroPython
W dokumentacji online znajdziecie przykłady obsługi I2C, SPI, czujników temperatury DS18B20:
http://docs.micropython.org/en/latest/esp8266/esp8266/quickref.html
Wypróbujmy kod odczytujący dane z czujnika DTH22, można go porównać z kodem wykorzystanym do odczytu temperatury i wilgotności na platformie Arduino:
Arduino UNO i DTH22.
Pamiętajcie o podciągnięciu do zasilania poprzez rezystor ~5.1kom wyprowadzenia data czujnika AM2302 (chyba że jest w formie modułu i na płytce znajduje się rezystor łączący pin data z vcc). Wykorzystamy pin D4 do komunikacji z DTH22, czujnik łączymy z masą a także zasilaniem 3.3V na płytce LoLin. Pin D4 będzie odpowiadał GPIO2, np. tutaj można znaleźć przyporządkowanie wyprowadzeń w typowych modułach z ESP8266: http://escapequotes.net/esp8266-wemos-d1-mini-pins-and-diagram/
Skrypty startowe
Wydawanie poleceń w konsoli szeregowej to dobry sposób na testy, natomiast w docelowym rozwiązaniu plik z kodem dla MicroPython będzie znajdował się w pliku zapisanym w pamięci flash. Pliki startowe pozwolą na wykonanie określonego kodu po zasileniu modułu.
Warto zaopatrzyć się w pomocne narzędzie Adafruit o nazwie ampy:
https://github.com/adafruit/ampy
Podobnie jak przy instalacji esptool w cmd na PC wydajemy polecenie:
pip install adafruit-ampy
Testujemy:
ampy -p COM15 ls
Do dyspozycji mamy różne polecenia ls listowanie plików, get wyświetlenie pliku, put umieszczenie a rm skasowanie pliku.
W pamięci flash znajduje się plik boot.py wykonywany po starcie, zobaczmy jaka jest jego zawartość:
ampy -p COM15 get boot.py
Otrzymamy coś w rodzaju:
Utwórzmy na PC plik main.py, który po skopiowaniu do flash na ESP8266 uruchomi się po każdym zasileniu modułu zaraz po wykonaniu boot.py,
dla przykładu będzie to kod w pętli odczytujący temperaturę i wilgotność z czujnika DTH22 i wyświetlający dane w konsoli szeregowej.
Wszytko pod "while True" poprzedzamy tabulatorem.
Zapisujemy plik w określonej lokalizacji na PC.
Umieszczamy plik w pamięci flash:
ampy -p COM15 put ścieżka\main.py
Po zrestartowaniu modułu w konsoli szeregowej zobaczymy efekt działania main.py
Można znaleźć wiele ciekawych przykładów połączenia ESP8266 i MicroPython np.:
Stacja pogodowa pobierająca dane z czujnika DTH22 i czujnika ciśnienia BMP180.
Stacja pogodowa pobierające dane z internetu.
Jakie macie pomysły na wykorzystanie MicroPython i płytki LoLin opartej o ESP8266?
Jakie środowisko pracy z ESP8266 preferujecie MicroPython, Arduino a może LUA?

- instalowanie sterowników do konwertera CH340
- Start z ESP8266, uruchomienie WIFI, IoT z Blynk i Thingspeak, czujnik temperatury TMP36, funkcja głębokiego uśpienia ESP.deepSleep()
- ESP8266 i DS18B20
- ESP8266 i SPIFFS - flash file system
LoLin ESP8266 i MicroPython
ESP8266 dobrze integruje się z Arduino ale warto wypróbować też inne możliwości takie jak MicroPython.
Na początek na komputerze instalujemy środowisko Python: https://www.python.org/downloads/
Następnie z wykorzystaniem narzędzia pip instalujemy esptool.
Wykorzystałem Python 2.7.x ale esptool jest kompatybilne także z Python 3.4 i nowszym.
Jeżeli podczas instalacji Python skonfigurowaliśmy ścieżki (można to sprawdzić wydając polecenie echo %PATH%), wystarczy w cmd wydać polecenie:
pip install esptool
Tutaj więcej informacji o narzędziu: https://github.com/espressif/esptool
Po podłączeniu ESP8266 i określeniu na jakim numerze portu pracuje konwerter USB<->UART można przetestować działanie esptool.
Przykładowo dla portu COM15:
esptool.py -p COM15 read_mac
pozwoli na odczytanie MAC podłączonego ESP8266
esptool.py -p COM15 flash_id
pokaże informacje o module i wielkości pamięci flash.
Oczywiście COM15 zastępujecie rzeczywistym numerem portu, na którym pojawił się konwerter dostępny na płytce,
przy pomocy przełącznika -b można ustawić szybkość transmisji np. 115200.
Pobieramy i instalujemy firmware zgodnie z opisem:
http://docs.micropython.org/en/latest/esp8266...66/tutorial/intro.html#deploying-the-firmware
Wybieramy ostatni stabilny firmware:
http://micropython.org/download#esp8266
Kasowanie firmware:
esptool.py -p COM15 erase_flash
Umieszczamy nowy firmware:
esptool.py -p COM15 write_flash --flash_size=detect 0 ścieżka i nazwa_pobranego_pliku.bin
Powinniśmy otrzymać wynik zbliżony do:
Kod: Text
Po tych działaniach łącząc się z szybkością 115200 z wykorzystaniem np. PuTTY na port COM, na którym pracuje konwerter połączony z ESP8266 otrzymamy REPL (read-eval-print loop) czyli linię poleceń interpretera Python.
Możemy przetestować działanie wpisując fragment kodu:
print("Test")
który spowoduje wyświetlenie napisu:
Test
a następnie wprowadzamy:
import esp
esp.check_fw()
co pozwoli na sprawdzenie integralności firmware.
Po zainstalowaniu nowego firmware ESP8266 działa w trybie WiFi AP, ESSID: MicroPython-xxxxxx gdzie xxxxxx zastąpione jest częścią MAC urządzenia. Hasło WiFi to: micropythoN, adres modułu: 192.168.4.1.
Więcej na temat korzystania z WiFi w MicroPython znajdziecie tutaj:
https://docs.micropython.org/en/latest/esp8266/library/network.html
Dość łatwo możemy wykonać skanowanie dostępnych w pobliżu sieci bezprzewodowych:
Kod: Python
Sposób w który możemy wyłączyć wspomniany wbudowany AP:
Kod: Python
Podczas testów zauważyłem bardzo dużą czułość ESP w tym module, wykrywał sieci których nie widziały np. smartfony, prawdopodobnie nie byłoby możliwe połączenie z tymi AP ale były one widoczne na liście.
Magistrale i czujniki w MicroPython
W dokumentacji online znajdziecie przykłady obsługi I2C, SPI, czujników temperatury DS18B20:
http://docs.micropython.org/en/latest/esp8266/esp8266/quickref.html
Wypróbujmy kod odczytujący dane z czujnika DTH22, można go porównać z kodem wykorzystanym do odczytu temperatury i wilgotności na platformie Arduino:
Arduino UNO i DTH22.
Pamiętajcie o podciągnięciu do zasilania poprzez rezystor ~5.1kom wyprowadzenia data czujnika AM2302 (chyba że jest w formie modułu i na płytce znajduje się rezystor łączący pin data z vcc). Wykorzystamy pin D4 do komunikacji z DTH22, czujnik łączymy z masą a także zasilaniem 3.3V na płytce LoLin. Pin D4 będzie odpowiadał GPIO2, np. tutaj można znaleźć przyporządkowanie wyprowadzeń w typowych modułach z ESP8266: http://escapequotes.net/esp8266-wemos-d1-mini-pins-and-diagram/
Kod: Python
Skrypty startowe
Wydawanie poleceń w konsoli szeregowej to dobry sposób na testy, natomiast w docelowym rozwiązaniu plik z kodem dla MicroPython będzie znajdował się w pliku zapisanym w pamięci flash. Pliki startowe pozwolą na wykonanie określonego kodu po zasileniu modułu.
Warto zaopatrzyć się w pomocne narzędzie Adafruit o nazwie ampy:
https://github.com/adafruit/ampy
Podobnie jak przy instalacji esptool w cmd na PC wydajemy polecenie:
pip install adafruit-ampy
Testujemy:
ampy -p COM15 ls
Do dyspozycji mamy różne polecenia ls listowanie plików, get wyświetlenie pliku, put umieszczenie a rm skasowanie pliku.
W pamięci flash znajduje się plik boot.py wykonywany po starcie, zobaczmy jaka jest jego zawartość:
ampy -p COM15 get boot.py
Otrzymamy coś w rodzaju:
Kod: Text
Utwórzmy na PC plik main.py, który po skopiowaniu do flash na ESP8266 uruchomi się po każdym zasileniu modułu zaraz po wykonaniu boot.py,
dla przykładu będzie to kod w pętli odczytujący temperaturę i wilgotność z czujnika DTH22 i wyświetlający dane w konsoli szeregowej.
Kod: Python
Wszytko pod "while True" poprzedzamy tabulatorem.
Zapisujemy plik w określonej lokalizacji na PC.
Umieszczamy plik w pamięci flash:
ampy -p COM15 put ścieżka\main.py
Po zrestartowaniu modułu w konsoli szeregowej zobaczymy efekt działania main.py
Można znaleźć wiele ciekawych przykładów połączenia ESP8266 i MicroPython np.:
Stacja pogodowa pobierająca dane z czujnika DTH22 i czujnika ciśnienia BMP180.
Stacja pogodowa pobierające dane z internetu.
Jakie macie pomysły na wykorzystanie MicroPython i płytki LoLin opartej o ESP8266?
Jakie środowisko pracy z ESP8266 preferujecie MicroPython, Arduino a może LUA?
