Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Fibaro Fibaro
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

LoLin ESP8266 i szybki start z MicroPython.

TechEkspert 30 Paź 2017 18:36 1914 1
  • LoLin ESP8266 i szybki start z MicroPython.
    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:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    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
    Zaloguj się, aby zobaczyć kod


    Sposób w który możemy wyłączyć wspomniany wbudowany AP:
    Kod: python
    Zaloguj się, aby zobaczyć kod


    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
    Zaloguj się, aby zobaczyć kod


    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
    Zaloguj się, aby zobaczyć kod


    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
    Zaloguj się, aby zobaczyć kod


    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
    LoLin ESP8266 i szybki start z MicroPython.

    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?


    LoLin ESP8266 i szybki start z MicroPython.


    Fajne!
  • Fibaro
  • #2 02 Lis 2017 12:09
    Tomq
    Poziom 38  

    Jakie macie pomysły na wykorzystanie MicroPython i płytki LoLin opartej o ESP8266?

    Koledzy z sąsiedniego forum oczywiscie sugerują wykorzystanie modułu do sterowania robotem - https://www.forbot.pl/forum/topics27/micropython-na-esp8266-vt11747.htm :) (przy okazji też kilka kawałkó przykłądowego kodu w MicroPythonie).

TME logo Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
TME Logo