Spisu treści:

Pierwsze kroki z Pythonem dla ESP8266 i ESP32: 6 kroków
Pierwsze kroki z Pythonem dla ESP8266 i ESP32: 6 kroków

Wideo: Pierwsze kroki z Pythonem dla ESP8266 i ESP32: 6 kroków

Wideo: Pierwsze kroki z Pythonem dla ESP8266 i ESP32: 6 kroków
Wideo: 02 Pierwsze BACKUP'y ESP8266 - Atnel WiFi Tools - ćwiczenia praktyczne 2024, Lipiec
Anonim
Pierwsze kroki z Pythonem dla ESP8266 i ESP32
Pierwsze kroki z Pythonem dla ESP8266 i ESP32

Tło

ESP8266 i jego młodszy starszy brat ESP32 to tanie mikroczipy Wi-Fi z pełnym stosem TCP/IP i możliwościami mikrokontrolera. Chip ESP8266 po raz pierwszy zwrócił uwagę społeczności producentów w 2014 roku. Od tego czasu niska cena (<5 USD), jego możliwości Wi-Fi, wbudowana pamięć flash 1 lub 4 MB oraz różnorodność dostępnych rozwiązań rozwojowych płyt, sprawił, że układ ESP stał się jednym z najpopularniejszych mikrokontrolerów do projektów DIY WiFi i IoT.

MicroPython to uproszczona i wydajna implementacja coraz bardziej popularnego języka programowania Python, która zawiera niewielki podzbiór standardowej biblioteki Python i jest zoptymalizowana do pracy na mikrokontrolerach.

Połączenie tych dwóch to bardzo ciekawa opcja przy projektach DIY, zarówno dla początkujących, jak i bardziej zaawansowanych użytkowników.

Projekt MiPy-ESP

W 2015 roku moje pierwsze projekty z ESP8266 rozpoczęły się od układu ESP-01 wykorzystującego Arudions do uruchamiania poleceń AT układu przez połączenie szeregowe. Następnie przez kolejne lata stosowałem rdzeń Arduino dla ESP8266 do programowania układów w języku C++. Działa to dobrze, ale dla entuzjastów Pythona moje odkrycie implementacji MicroPython w Pythonie 3 było świetną wiadomością.

Projekt MiPy-ESP to elastyczna platforma wykorzystująca MicroPython do pełnych projektów Python IoT na mikrokontrolerach z rodziny ESP.

Framework został opracowany przez zespół programistów ds. oprogramowania LeGarage Technical Comittee (LG-TC-SWDT-01), którego celem jest zastąpienie już istniejącego kodu opartego na C++ dla naszych aplikacji mikrokontrolerowych.

Projekt zapewnia podstawowe funkcje, takie jak

  • Procedury połączenia sieciowego
  • Serwer sieciowy punktu dostępowego chipa (do połączenia Wi-Fi i obsługi stron internetowych z chipem dla danych I/O)
  • Funkcjonalności MQTT
  • Rejestrowanie/debugowanie
  • Planowanie zdarzeń mikrokontrolera
  • Sprzętowe procedury we/wy

Z jednym głównym kompaktowym skryptem kodu (main.py), wszystko z globalną konfiguracją (config.py).

Ten kod mikrokontrolera działa z solidną obsługą połączeń chipowych z siecią Wi-Fi i brokerami MQTT. Istniejące moduły MicroPython dla różnego sprzętu można łatwo zintegrować z systemem.

Struktura MiPy-ESP stała się podstawą wszystkich naszych projektów IoT związanych z elektroniką hobbystyczną z udziałem mikrokontrolerów z rodziny ESP. Został przetestowany na kilku płytach z rodziny ESP, takich jak płyty NodeMCU, Wemos i Lolin.

Poniższy samouczek jest przewodnikiem, jak rozpocząć pracę z mikrokontrolerami z rodziny ESP i MicroPythonem przy użyciu frameworka MiPy-ESP.

Krok 1: Płytka Wemos D1 Mini ESP8266

Płytka Wemos D1 Mini ESP8266
Płytka Wemos D1 Mini ESP8266
Płytka Wemos D1 Mini ESP8266
Płytka Wemos D1 Mini ESP8266
Płytka Wemos D1 Mini ESP8266
Płytka Wemos D1 Mini ESP8266
Płytka Wemos D1 Mini ESP8266
Płytka Wemos D1 Mini ESP8266

Framework MiPy-ESP współpracuje z większością mikrokontrolerów opartych na ESP8266.

Płytka rozwojowa mini Wemos D1 jest oparta na układzie ESP-8266EX. Na podstawie 2,5 x 3,5 cm, posiada 4 MB pamięci flash, 11 cyfrowych pinów wejścia/wyjścia, wszystkie piny obsługują przerwania, PWM, I2C, SPI, szeregowe i 1 wejście analogowe z maksymalnym wejściem 3,3 V, może działać przy zasilaniu 5 V, ma złącze micro USB i jest kompatybilny z płytką stykową. Niska cena i niewielkie rozmiary sprawiły, że jest to moja ulubiona płyta ESP.

Dodatkowo płyta w wersji D1 mini pro posiada opcję podłączenia anteny zewnętrznej, co znacznie zwiększa zasięg połączenia (zasięg +100m). Co więcej, płyta jest również dostarczana z różnymi gotowymi do użycia płytami rozszerzeń o podobnych kompaktowych rozmiarach.

Krok 2: Przygotowanie do MicroPythona na chipie ESP

Przygotowanie do MicroPythona na chipie ESP
Przygotowanie do MicroPythona na chipie ESP

W tym pierwszym kroku będziesz

  • Podłącz płytkę ESP przez USB do komputera
  • Zainstaluj oprogramowanie Esptool do flashowania chipa
  • Wymaż pamięć chipową
  • Flash chip za pomocą oprogramowania MicroPython
  • Zainstaluj Rshell, aby umożliwić interakcję wiersza poleceń z chipem
  • Zainstaluj mpy-cross (do kompilacji plików.py do binarnego)

Podłączenie płytki do komputera za pomocą płyt USBBoard z wbudowanym portem szeregowym USB sprawia, że UART jest dostępny dla komputera i jest najłatwiejszą opcją na rozpoczęcie pracy. W przypadku płyt bez połączenia USB moduł FTDI z USB na port szeregowy może być użyty do podłączenia pinów GPIO do flashowania podłączonych do świata zewnętrznego, ale nie jest to omówione w tym samouczku.

W przypadku MicroPythona używającego kodu MiPy-ESP minimalnym wymogiem dla rozmiaru pamięci flash chipa jest 1 MB. Istnieje również specjalna wersja dla płyt z 512kB, ale nie obsługuje ona systemu plików, od którego zależy MiPy-ESP.

W przypadku korzystania z kabla USB, płyta jest zasilana przez komputer, gdy jest podłączona. Pozwala to również na programowanie i debugowanie przez połączenie szeregowe. Po przesłaniu kodu projektu i wdrożeniu projektu zewnętrzne zasilanie jest podawane na styki zasilacza płyty.

Instalacja EsptoolInformacje o oprogramowaniu Esptool można znaleźć w repozytorium Esptool GitHub. Jeśli chcesz korzystać z systemu Windows/Linux/OSX(MAC), powyższy link również to obejmuje. Pakiet Pythona można zainstalować przez

pip zainstalować esptool

Dla użytkowników Linuksa pakiety dla Esptool są utrzymywane dla Debiana i Ubuntu i mogą być również instalowane za pomocą

sudo apt zainstaluj esptool

Kasowanie pamięci flash ESPUżywając Esptool, następnie kasujesz pamięć flash ESP za pomocą polecenia

esptool.py --port /dev/ttyUSB0 erase_flash

Pobieranie oprogramowania sprzętowego MicroPyton Oprogramowanie sprzętowe MicroPyton znajduje się w pliku.bin, który można pobrać ze strony internetowej MicroPython.

Obecna główna gałąź projektu repozytorium została przetestowana i działa z Micropython v.1.12. Aby zapewnić sukces z frameworkiem MiPY-ESP, pobierz plik 'esp8266-20191220-v1.12.bin' z tego linku i zapisz oprogramowanie układowe do chipa za pomocą polecenia:

esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=wykryj 0 esp8266-20191220-v1.12.bin

Instalowanie RshellPakiet Rshell umożliwia interakcję wiersza poleceń ze środowiskiem MicroPython zainstalowanym na chipie. Można go znaleźć pod tym linkiem. Rshell jest prostą powłoką, która działa na hoście i używa surowego REPL MicroPythona do wysyłania fragmentów Pythona do pyboard w celu uzyskania informacji o systemie plików oraz do kopiowania plików do iz systemu plików MicroPythona. REPL to skrót od Read Evaluate Print Loop i jest to nazwa nadana interaktywnemu monitowi MicroPython, do którego można uzyskać dostęp w ESP8266. Korzystanie z REPL jest zdecydowanie najłatwiejszym sposobem testowania kodu i uruchamiania poleceń. Zainstaluj Rshell poleceniem:

sudo pip zainstaluj rshell

Instalowanie kompilatora mpy-cross MicroPython może być stosowany z plikami ascii.py przesłanymi do systemu plików chipa. MicroPython definiuje również koncepcję plików.mpy, które są binarnym formatem pliku kontenera, który zawiera prekompilowany kod i który można importować jak normalny moduł.py. Kompilując pliki.py do.mpy, więcej pamięci RAM będzie dostępne dla działającego kodu - i jest to potrzebne, aby mieć działający moduł podstawowy frameworka MiPy-ESP.

W przypadku wdrażania kodu MiPy-ESP, kompilator mpy-cross MicroPython kompiluje skrypty.py do.mpy przed przesłaniem chipa. Zainstaluj pakiet mpy-cross zgodnie z instrukcjami w tym łączu. Alternatywnie, polecenie mpy-cross można zainstalować za pomocą polecenia Python pip lub uruchomić ze ścieżki folderu mpy-cross, jeśli sklonujesz repozytorium MicroPython z GitHub tutaj.

Masz teraz zainstalowany MicroPython i wszystkie potrzebne narzędzia do rozpoczęcia budowy swojego pierwszego projektu MiPy-ESP

Krok 3: Pierwsze kroki z MiPy-ESP

Pierwsze kroki z MiPy-ESP
Pierwsze kroki z MiPy-ESP

W tym kroku będziesz

Pobierz framework MyPy-ESP

Pobieranie frameworka MiPy-ESP Projekt MiPy-ESP można znaleźć na GitHub w tym repozytorium kodu. Z GitHub możesz pobrać strukturę plików repozytorium lub sklonować ją na swój komputer przez

git klon

Po zainstalowaniu repozytorium kodu na komputerze masz teraz wszystkie moduły kodu potrzebne do zbudowania gotowego projektu ESP IoT. Więcej szczegółów na temat zestawu narzędzi w następnym kroku.

Krok 4: Architektura ramowa MiPy-ESP

Architektura ramowa MiPy-ESP
Architektura ramowa MiPy-ESP

W tym kroku będziesz

poznaj obieg kodu MiPy-ESP

Architektura kodu MiPy-ESP

Wszystkie moduły frameworka Pythona znajdują się w folderze /src repozytorium kodu MiPY-ESP. Folder src/core zawiera podstawowe moduły, które trafiają do każdego projektu. Folder src/drivers zawiera wybór modułów dla różnych urządzeń, które można podłączyć do twojego układu. Folder src/utilities zawiera opcjonalne moduły narzędziowe do włączenia do projektu.

Pliki main.py i config.py znajdują się w folderze src/. Oto główne pliki do edycji w celu zbudowania projektu:

config.py:

Ten plik jest globalnym plikiem konfiguracyjnym dla twojego projektu. Ma różne ustawienia, wszystkie z opisowymi komentarzami w pliku.

główna.py:

To jest główny skrypt pętli kodu mikrokontrolera. Zawiera kod aplikacji we frameworku. Po uruchomieniu chipa main.py uruchamia i importuje wszystkie moduły zależne od projektu z podanymi danymi wejściowymi z pliku config.py. Powyższy schemat blokowy pokazuje układ skryptu main.py.

Powyższy rysunek opisuje przepływ pracy main.py:

  1. Po uruchomieniu kod próbuje połączyć chip z siecią Wi-Fi Wcześniej stosowane sieci i ich hasła (zaszyfrowane na chipie) są przechowywane w pamięci flash. Identyfikatory SSID sieci i ich hasła można podać w pliku wifi.json w formacie {" SSID1":"Hasło", "SSID":"Hasło2"}. Podane sieci w tym pliku są przechowywane, hasła są szyfrowane, a plik jest usuwany po uruchomieniu.
  2. Jeśli nie zostaną znalezione żadne znane sieci, kod konfiguruje serwer sieciowy punktu dostępowego (AP). Identyfikator SSID i hasło serwera AP chipa są ustawiane w pliku config.py. Po zalogowaniu się do chipa SSID, strona internetowa logowania chipa do Wi-Fi jest obsługiwana pod adresem 192.168.4.1. Wykryte sieci są wyświetlane w menu lub SSID można wprowadzić ręcznie (ukryte sieci) wraz z hasłem Wi-Fi. Po udanym połączeniu chipa z Wi-Fi, serwer AP wyłącza się, a kod main.py przechodzi do kolejnych kroków.
  3. W sekcji Konfiguracja pliku main.py,

    • zdefiniowane są funkcje dla zadań i wywołań zwrotnych (itp. wywołania zwrotne MQTT) oraz zdarzenia regularne.
    • Ustawione są różne zadania czasowe dla uruchomionych funkcji.
    • Ustanowiono klienta brokera MQTT
  4. Kod trafia następnie do głównej pętli mikrokontrolera,

    • ciągłe sprawdzanie połączeń sieciowych i brokerów MQTT,
    • subskrypcje MQTT,
    • sprzętowe we/wy
    • i zaplanowane zadania.
    • W przypadku utraty połączenia z siecią lub brokerem MQTT kod próbuje ponownie nawiązać połączenie.

Krok 5: Przygotowanie kodu projektu

Przygotowywanie kodu projektu
Przygotowywanie kodu projektu
Przygotowywanie kodu projektu
Przygotowywanie kodu projektu

W tym kroku będziesz

  • poznaj strukturę plików repozytorium MiPy-ESP
  • przygotuj kod projektu do wgrania chipa

Struktura folderów repozytorium Rysunek powyżej opisuje strukturę folderów repozytorium i zawiera listę aktualnych modułów frameworka. Twój projekt jest etapami w folderze src/. Podstawowe moduły frameworka MiPy-ESP znajdują się w src/core, opcjonalne moduły narzędziowe w src/utilities i moduły sprzętowe w src/drivers.

Większość dostępnych bibliotek sprzętowych MicroPython może przejść do folderu drivers/ bez żadnych modyfikacji. Wszystkie obecne sterowniki są testowane z frameworkiem MiPy-ESP. Jeśli chodzi o moduły w folderze utilities/, kolejne będą dodawane w miarę ich ożywania.

Etapowanie kodu projektu Twój kod projektu powinien być umieszczony w folderze src/. Już tam są pliki main.py i config.py, które możesz edytować. Skopiuj także potrzebne narzędzia projektu z src/utilities i src/drivers do src/.

Jeśli chcesz udostępnić znane sieci Wi-Fi i hasła do chipa, dodaj plik wifi.json do src/.

Kompilacja i przygotowanie do uploadu Dostarczony Makefile może być użyty do przygotowania plików do przesłania do chipa poprzez kompilację plików.py w /src, kompilację modułów podstawowych i przeniesienie skompilowanych plików do nowego folderu o nazwie build/ za pomocą polecenia

zbuduj

Pliki w kompilacji są gotowe do przesłania do systemu plików chipa. Domyślnie main.py i config.py nie są kompilowane do postaci binarnej, aby mieć do nich łatwy dostęp w celu sprawdzenia zainstalowanych chipów. Komenda:

oczyścić

Usuwa folder build/ i jego zawartość.

Krok 6: Kompilacja i przesyłanie kodu do mikrokontrolera

Kompilowanie i przesyłanie kodu do mikrokontrolera
Kompilowanie i przesyłanie kodu do mikrokontrolera
Kompilowanie i przesyłanie kodu do mikrokontrolera
Kompilowanie i przesyłanie kodu do mikrokontrolera

W tej sekcji będziesz

  • wgraj przygotowane pliki w build/ z ostatniej sekcji
  • uruchom i monitoruj działający kod;

Przesyłanie kompilacji/ plików za pomocą Rshell

Prześlij wszystkie pliki z katalogu /build do układu ESP za pomocą Rshell. Z mikrokontrolerem podłączonym do USB, z folderu build/ uruchom Rshell za pomocą polecenia

rshell -p /dev/ttyUSB0

Następnie sprawdź pliki chipów (jeśli są) przez

ls/pyboard

Wszystkie pliki na chipie można usunąć przez

rm /pyboard/*.*

Skopiuj wszystkie pliki projektu w build/ do chipa:

cp *.* /pyboard

Następnie uruchom interaktywny terminal Pythona za pomocą polecenia

zastępstwo

Możesz teraz wywoływać polecenia Pythona lub importować moduły i monitorować wyjście szeregowe chipa z modułu rejestratora MiPy-ESP.

Uruchom ponownie układ, naciskając przycisk resetowania lub z wiersza poleceń przez

importuj główne

lub

importuj maszynę

i wtedy

maszyna.reset()

W zależności od ustawień logowania/debugowania w pliku konfiguracyjnym projektu, repl będzie teraz wyświetlać komunikaty debugowania z układu ESP przez połączenie szeregowe.

Miejmy nadzieję, że to powinno Cię zacząć.

Zalecana: