- Co to jest MicroPython?
- Dlaczego MicroPython dla NodeMCU?
- Co to jest ESP8266 (NodeMCU)?
- Używany sprzęt
- Instalowanie oprogramowania układowego MicroPython dla ESP8266
- Komunikacja z NodeMCU za pomocą PuTTY
- Przesyłanie kodu migającego LED opartego na Pythonie przy użyciu Ampy
- MicroPython na ESP8266: uzyskiwanie temperatury i wilgotności za pomocą DHT22
Dla początkujących, którzy są zainteresowani programowaniem mikrokontrolerów obsługujących Wi-Fi, takich jak ESP8266, zrozumienie środowiska programowania ESP-IDF lub Arduino IDE może być trudnym zadaniem, tajemnicza składnia języków C i C ++ wymaga większej wiedzy informatycznej, która jest dlaczego te języki nie zawsze są przyjazne dla początkujących, więc w tym artykule nauczymy się konfigurować i programować ESP8266 z MicroPythonem, a na koniec uzyskamy dane dotyczące temperatury i wilgotności z naszego ulubionego czujnika temperatury i wilgotności DHT22. Wcześniej przygotowaliśmy również tutorial jak programować ESP32 w Micro Python, możesz też to sprawdzić, jeśli jesteś zainteresowany.
Co to jest MicroPython?
Można powiedzieć, że MicroPython jest pokrojoną w kostkę wersją Pythona, zaprojektowaną do współpracy z mikrokontrolerami i systemami wbudowanymi. Składnia i proces kodowania MicroPython przypomina Python. Tak więc, jeśli znasz już Pythona, wiesz już, jak napisać kod za pomocą MicroPython. Jeśli jesteś fanem Pythona, możesz zapoznać się z tym artykułem.
MicroPython został opracowany w Wielkiej Brytanii przez zespół kierowany przez Damiona Jonesa, a oni uruchomili Kickstarter w tamtym czasie, gdzie uruchomili określony zestaw płyt programistycznych, na których będzie działać oprogramowanie układowe, co pozwala na uruchomienie MicroPythona, oprogramowanie zostało już przeniesione do ESP8266, o czym dowiesz się z tego artykułu.
Dlaczego MicroPython dla NodeMCU?
Python jest jednym z najczęściej używanych i łatwych do nauczenia języków programowania. Tak więc, wraz z wprowadzeniem MicroPythona, programowanie mikrokontrolerów sprzętowych stało się bardzo łatwe. Jeśli nigdy wcześniej nie programowałeś mikrokontrolera i chcesz rozpocząć naukę programowania, MicroPython to dobry początek.
MicroPython używa okrojonej wersji standardowych bibliotek Pythona, więc wszystkie standardowe biblioteki nie są dostępne. Ale MicroPython zawiera proste i łatwe w użyciu moduły do łączenia się ze sprzętem, co oznacza, że z pomocą MicroPython odczyt i zapis do rejestru GPIO jest o wiele łatwiejszy.
Ostatecznym celem MicroPythona jest maksymalne uproszczenie programowania mikrokontrolerów, aby każdy mógł z niego korzystać. Dzięki MicroPython importowanie bibliotek i pisanie kodu staje się łatwe, pokazany poniżej kod jest prostym przykładem, który miga wbudowaną diodą LED płyty NodeMCU, szczegółowo omówimy kod po artykule.
z importu maszyny Pin z importu czasu uśpienia LED = Pin (2, Pin.OUT) while True: LED.value (nie LED.value ()) sleep (0.5)
Co to jest ESP8266 (NodeMCU)?
ESP8266 to niedrogi moduł Wi-Fi, przeznaczony do zastosowań związanych z Internetem rzeczy (IoT).
Jest wyposażony w piny wejściowe i wyjściowe ogólnego przeznaczenia (GPIO), a także obsługuje wiele powszechnie używanych protokołów, takich jak SPI, I2C, UART i inne. Ale najfajniejszą cechą tego mikrokontrolera jest to, że ma wbudowane Wi-Fi. Dzięki niemu możemy bardzo łatwo połączyć się z dowolnym Wi-Fi 2,4 GHz.
Teraz podstawy są na uboczu, możemy przejść do części praktycznej, w której pokażemy wymagany sprzęt i proces instalacji MicroPythona na układzie scalonym ESP8266.
Używany sprzęt
Lista użytych materiałów
- 1 x płyta do krojenia chleba
- 1 x ESP8266 (NodeMCU)
- 1 x DHT22 (czujnik temperatury i wilgotności)
- 1 x 3 mm LED (dioda elektroluminescencyjna)
- 1 x rezystor 1 K.
- 5 x przewód połączeniowy
Instalowanie oprogramowania układowego MicroPython dla ESP8266
Istnieją dwa sposoby instalacji oprogramowania MicroPython na ESP8266 w tym artykule. Porozmawiamy o obu z nich, ale najpierw musimy go pobrać.
Pobieranie oprogramowania układowego MicroPython dla ESP8266:
Zanim podłączymy płytę NodeMCU (ESP8266) do naszego komputera, musimy pobrać najnowszą wersję MicroPythona, po czym możemy zainstalować oprogramowanie na NodeMCU, możesz je pobrać z oficjalnej strony pobierania Micropython
Instalowanie oprogramowania układowego MicroPython na ESP8266:
Zanim będziemy mogli zainstalować oprogramowanie układowe na ESP8266, musimy upewnić się, że mamy odpowiedni dysk dla konwertera USB na szeregowy, większość płyty NodeMCU wykorzystuje układ scalony konwertera USB na UART CP2102, dlatego musimy pobrać i zainstalować sterownik dla konwertera USB na UART CP2102, Po pobraniu i zainstalowaniu dysku musimy pobrać esptool, które jest narzędziem opartym na Pythonie do odczytu i zapisu oprogramowania układowego na ESP8266.
Najłatwiejszym sposobem na pobranie Pythona jest skorzystanie z Microsoft Store, stamtąd musisz pobrać i zainstalować kopię Pythona. Po zainstalowaniu Pythona możemy użyć polecenia pip3 install esptool, aby zainstalować esptool. Proces będzie wyglądał jak na poniższym obrazku.
Po zainstalowaniu sprawdź, czy uzyskujesz dostęp do esptool z terminala poleceń.
Aby to zrobić, po prostu uruchom polecenie, wersja esptool.py, jeśli pojawi się okno takie jak na poniższym obrazku, pomyślnie zainstalowałeś esptool na swoim komputerze z systemem Windows.
Jeśli masz problemy z dostępem do narzędzia esptool z okna poleceń, spróbuj dodać pełną ścieżkę instalacji do zmiennej środowiskowej systemu Windows.
Znajdowanie PORTU przydzielonego dla płyty NodeMCU:
Teraz musimy znaleźć przydzielony port dla płyty NodeMCU, aby to zrobić, po prostu przejdź do okna menedżera urządzeń i poszukaj opcji o nazwie Porty, jeśli rozwiniesz, że możesz znaleźć port powiązany z płytą NodeMCU. Dla nas wygląda to tak, jak na poniższym obrazku.
Kasowanie pamięci Flash ESP8266:
Teraz ustaliliśmy skojarzony port COM, możemy przygotować moduł NodeMCU, kasując jego pamięć flash. Aby to zrobić, użyj następującego polecenia, esptool.py --port COM6 erase_flash . Proces będzie wyglądał jak na poniższym obrazku.
Instalowanie oprogramowania sprzętowego:
Uruchomienie następującego polecenia spowoduje zainstalowanie pliku binarnego MicroPython na płycie NodeMCU. Po zainstalowaniu ten plik binarny pozwoli nam załadować nasze programy w języku Python i komunikować się z pętlą Read Evaluate and Print .
esptool.py --port COM6 --baud 460800 write_flash --flash_size = wykryć 0 esp8266-20200911-v1.13.bin
Proces będzie wyglądał tak, jak na poniższym obrazku,
Zwróć uwagę, że w czasie instalacji plik binarny był na moim pulpicie, więc mam płytę CD na pulpit i uruchamiam polecenie.
Teraz gotowe, czas na komunikację z płytą i mrugnięcie kilkoma diodami LED.
Komunikacja z NodeMCU za pomocą PuTTY
Teraz zacznijmy nasz pierwszy program Hello World za pomocą PuTTY, PuTTY, aby to zrobić, musimy ustawić typ połączenia na Serial, następnie ustawiamy linię Serial (w naszym przypadku jest to COM6), a na końcu ustawiamy prędkość na 115200 bodów.
Jeśli wszystko zostanie zrobione poprawnie, pojawi się okno podobne do poniższego obrazka i możemy łatwo napisać do niego nasz kod, zwykle działa jak terminal iPython. Uruchomiliśmy również nasz pierwszy program hello world, który składa się tylko z dwóch prostych linii, a po umieszczeniu instrukcji print otrzymaliśmy odpowiedź.
Przesyłanie kodu migającego LED opartego na Pythonie przy użyciu Ampy
Dostęp do MicroPythona za pomocą terminala PuTTY to dobry sposób komunikacji z modułem ESP, ale innym prostym sposobem jest przesłanie kodu za pomocą narzędzia Adafruit Ampy, aby zainstalować ampy, możemy po prostu uruchomić prostą instalację adafruit pip3- ampy polecenie i zainstaluje ampy na naszym komputerze. Proces będzie wyglądał jak na poniższym obrazku.
Teraz, gdy już to masz, nadal potrzebujemy naszych informacji o porcie szeregowym, do którego jesteśmy podłączeni. W naszym przypadku jest to COM6. Teraz musimy tylko napisać nasz kod LED Blink za pomocą MicroPython, w tym celu skorzystaliśmy z przewodnika udostępnionego na oficjalnej stronie micro Python
Za pomocą przewodnika tworzony jest następujący kod.
z importu maszyny Pin z importu czasu uśpienia LED = Pin (2, Pin.OUT) while True: LED.value (nie LED.value ()) sleep (0.5)
Kod jest bardzo prosty. Najpierw importujemy bibliotekę Pin z maszyny. Klasa pinów. Następnie musimy zaimportować bibliotekę czasu, która jest używana do wykonania funkcji opóźnienia. Następnie ustawiamy Pin2 (czyli wbudowaną diodę LED dołączoną do modułu ESP12E) jako wyjście. Następnie ustawiamy pętlę while, w której włączamy i wyłączamy diodę z opóźnieniem 500 ms.
W ten sposób przesyłasz kod do NodeMCU. Aby to zrobić, musisz uruchomić następujące polecenie ampy , ampy --port COM6 wstaw main.py
Jeśli program zostanie wykonany poprawnie, zobaczysz migającą diodę LED, jak pokazano poniżej.
Uwaga: podczas przesyłania kodu ustawiłem bieżącą lokalizację monitu na mój pulpit, więc nie musiałem określać pełnej ścieżki do pliku main.py, jeśli tak nie jest, ponieważ musisz podać pełną ścieżkę do głównego plik.py.
Następnie przechodzimy do pobierania danych dotyczących temperatury i wilgotności z czujnika DHT22.
MicroPython na ESP8266: uzyskiwanie temperatury i wilgotności za pomocą DHT22
Schemat połączenia DHT22 z NodeMCU:
Pełny schemat połączeń dla tego projektu można znaleźć poniżej. Użyłem fritzing do stworzenia tego obwodu.
Jak widać obwód jest bardzo prosty i można go łatwo zbudować na płytce stykowej za pomocą przewodów połączeniowych. Cały obwód można zasilać za pomocą portu micro-USB w NodeMCU. Poniżej przedstawiono moją konfigurację sprzętu.
Kod:
Uzyskanie danych dotyczących temperatury i wilgotności z czujnika DHT22 lub DHT11 za pomocą MicroPython jest bardzo łatwe, ponieważ oprogramowanie MicroPython, które zainstalowaliśmy wcześniej, zawiera wbudowaną bibliotekę DHT.
1. Nasz kod zaczynamy od zaimportowania biblioteki DHT i biblioteki pinów z klasy maszyny.
importuj dht z maszyny importu Pin
2. Następnie tworzymy obiekt DHT, który odnosi się do pinu, do którego podłączyliśmy nasz czujnik.
czujnik = dht.DHT22 (Pin (14))
3. Na koniec, aby zmierzyć wartość czujnika, musimy użyć następujących trzech poleceń.
sensor.measure () sensor.temperature () sensor.humidity ()
W przypadku końcowego kodu umieszczamy go w pętli while i wypisujemy wartości, które oznaczają koniec naszego kodu. Ponadto czujnik DHT22 potrzebuje 2 sekund, zanim będzie mógł odczytać jakiekolwiek dane, więc musimy dodać opóźnienie 2 sekundy.
from machine import Pin from time import sleep import dht dht22 = dht.DHT22 (Pin (14)) while True: try: sleep (2) dht22.measure () temp = dht22.temperature () hum = dht22.humidity () print ('Temperatura:% 3.2f C'% temp) print ('Wilgotność:% 3.2f %%'% hum) z wyjątkiem OSError jako e: print ('Nie udało się odczytać danych z czujnika DHT22.')
Gdy skończymy kodowanie, możemy przesłać kod za pomocą polecenia ampy.
ampy --port COM6 wstaw main.py
Po pomyślnym wykonaniu kodu można monitorować wartości temperatury i wilgotności na dowolnym monitorze szeregowym. Użyłem szpachli i jak widać poniżej udało mi się odczytać wartości temperatury i wilgotności na COM5.
Mam nadzieję, że podobał Ci się artykuł i dowiedziałeś się czegoś pożytecznego. Jeśli masz jakieś pytania, możesz je zostawić w sekcji komentarzy poniżej lub skorzystać z naszych forów, aby zadać inne pytania techniczne.