- Mi az a MicroPython?
- Miért a MicroPython for NodeMCU?
- Mi az ESP8266 (NodeMCU)?
- Használt hardver
- Az ESP8266 MicroPython firmware telepítése
- Kommunikáció a NodeMCU-val a PuTTY-vel
- Python alapú LED villogó kód feltöltése az Ampy használatával
- MicroPython az ESP8266-on: Hőmérséklet és páratartalom elérése a DHT22 segítségével
Egy olyan kezdő számára, aki érdeklődik az olyan Wi-Fi-kompatibilis mikrovezérlők programozásáért, mint az ESP8266, az ESP-IDF programozási környezet vagy az Arduino IDE megértése félelmetes feladat lehet, a C és C ++ nyelvek rejtélyes szintaxisa több számítógép-tudást igényel, amely miért ezek a nyelvek nem mindig barátságosak a kezdők számára, ezért ebben a cikkben megtanuljuk beállítani és beprogramozni az ESP8266-ot a MicroPython segítségével, végül pedig a kedvenc DHT22 hőmérséklet- és páratartalom-érzékelőnktől kapjuk meg a hőmérséklet és a páratartalom adatait. Korábban készítettünk egy oktatóanyagot is az ESP32 programozásáról a Micro Python használatával, ha érdekli, ezt is megnézheti.
Mi az a MicroPython?
Mondhatjuk, hogy a MicroPython a python feldarabolt verziója, amelyet mikrokontrollerekkel és beágyazott rendszerekkel való együttműködésre terveztek. A MicroPython szintaxisa és kódolási folyamata hasonlít a pythonra. Tehát, ha már ismeri a pythont, akkor már tudja, hogyan kell megírni a kódot a MicroPython segítségével. Ha Ön Python rajongó, akkor ellenőrizheti ezt a cikket.
A MicroPython-t az Egyesült Királyságban fejlesztette ki egy Damion jones által vezetett csapat, majd még egy Kickstarter-t indítottak, ahol elindítottak egy speciális firmware-t futtató fejlesztőtáblákat, amelyek lehetővé teszik a MicroPython futtatását a tetején A firmware most kikerült az ESP8266 futtatására, amelyet ebben a cikkben megtudhat.
Miért a MicroPython for NodeMCU?
A Python az egyik legelterjedtebb, és a mai napig könnyen megtanulható programozási nyelv. Tehát a MicroPython bevezetésével a hardver alapú mikrovezérlők programozása nagyon egyszerűvé vált. Ha még soha nem programozott mikrovezérlőt, és el akarja kezdeni a programozás megtanulását, akkor a MicroPython jó kezdet.
A MicroPython a Python szabványos könyvtárainak lecsupaszított verzióját használja, így az összes szabványos könyvtár nem érhető el. De a MicroPython tartalmaz egyszerű és könnyen használható modulokat a hardverhez való kapcsolódáshoz, ami azt jelenti, hogy a MicroPython segítségével a GPIO regiszterbe való olvasás és írás csak könnyebbé vált.
A MicroPython végső célja, hogy a mikrovezérlők programozását a lehető legegyszerűbbé tegye, így bárki használhatja. A MicroPython könyvtárak importálásával és a kódírás egyszerűvé válik, az alább látható kód egy egyszerű példa, amely villog a NodeMCU kártya fedélzeti LED-jén, a cikk után részletesen megvitatjuk a kódot.
a gépimportból Pin az időből importálási alvás LED = Pin (2, Pin.OUT), míg True: LED.value (nem LED.value ()) sleep (0.5)
Mi az ESP8266 (NodeMCU)?
Az ESP8266 egy olcsó Wi-Fi modul, amelyet a tárgyak internetével (IoT) kapcsolatos alkalmazásokhoz terveztek.
Általános célú bemeneti és kimeneti csapokkal (GPIO) érkezik, és számos olyan gyakran használt protokollt is támogat, mint az SPI, I2C, UART és még sok más. De ennek a mikrovezérlőnek a legmenőbb tulajdonsága, hogy beépített Wi-Fi-vel rendelkezik. Ezzel bármilyen 2,4 GHz-es Wi-Fi-hez nagyon egyszerűen csatlakozhatunk.
Az alapok már nincsenek abban a helyzetben, hogy áttérjünk a gyakorlati részre, ahol megmutatjuk a szükséges hardvert és a MicroPython telepítésének folyamatát az ESP8266 IC-re.
Használt hardver
A felhasznált anyagok listája
- 1 x kenyérlap
- 1 x ESP8266 (NodeMCU)
- 1 x DHT22 (hőmérséklet- és páratartalom-érzékelő)
- 1 x 3 mm-es LED (fénykibocsátó dióda)
- 1 x 1K ellenállás
- 5 x jumper huzal
Az ESP8266 MicroPython firmware telepítése
Ebben a cikkben kétféle módon lehet telepíteni a MicroPython firmware-t az ESP8266-ra. Beszélni fogunk mindkettőről, de először le kell töltenünk.
Az ESP8266 MicroPython firmware letöltése:
Mielőtt csatlakoztatnánk a NodeMCU (ESP8266) alaplapot a számítógépünkhöz, le kell töltenünk a MicroPython legújabb verzióját, ezután telepíthetjük a firmware-t a NodeMCU-ra, letöltheti a hivatalos Micropython letöltési oldalról
A MicroPython firmware telepítése az ESP8266 eszközre:
Mielőtt telepíthetnénk a firmware-t az ESP8266-ra, meg kell győződnünk arról, hogy rendelkezünk-e a megfelelő meghajtóval az USB - Serial Converter számára, mivel a NodeMCU kártya legtöbb része CP2102 USB - UART átalakító IC-t használ, ezért le kell tölteni és telepíteni illesztőprogram a CP2102 USB-UART átalakítóhoz. A meghajtó letöltése és telepítése után le kell töltenünk az esptoolt, amely egy python alapú eszköz, amely a firmware olvasására és írására készült az ESP8266-on.
A Python megszerzésének legegyszerűbb módja a Microsoft Store, és onnan le kell töltenie és telepítenie kell a Python egy példányát. A Python telepítése után a pip3 install esptool parancsot használhatjuk az esptool telepítéséhez . A folyamat valami olyannak fog kinézni, mint az alábbi kép.
A telepítés után ellenőrizze, hogy hozzáfér-e az esptoolhoz a parancsterminálról.
Ehhez csak futtassa az esptool.py verzió parancsot, ha olyan ablakot kap, mint egy alábbi kép, akkor sikeresen telepítette az esptoolt a Windows PC-jére.
És ha problémái vannak az esptool elérésével a parancsablakból, próbálja meg hozzáadni a teljes telepítési útvonalat a Windows környezeti változóhoz.
A NodeMCU alaplaphoz rendelt PORT megkeresése:
Most meg kell találnunk a kiosztott portot a NodeMCU táblához, ehhez csak menjen be az eszközkezelő ablakába, és keresse meg a Portok nevű opciót, ha kibővíti, hogy megtudja a NodeMCU táblához társított portot. Számunkra úgy néz ki, mint az alábbi kép.
Az ESP8266 flash memóriájának törlése:
Rájöttünk a társított COM portra, és elkészíthetjük a NodeMCU modult a flash memória törlésével. Ehhez a következő parancsot kell használni: esptool.py --port COM6 erase_flash . A folyamat úgy néz ki, mint az alábbi kép.
A firmware telepítése:
A következő parancs futtatásával a MicroPython bináris program települ a NodeMCU táblára, miután a bináris telepítés lehetővé teszi számunkra a python programjaink feltöltését és a Read Evaluate and Print hurokkal való kommunikációt.
esptool.py --port COM6 --baud 460800 write_flash --flash_size = 0 észlelése esp8266-20200911-v1.13.bin
A folyamat hasonló lesz az alábbi képen,
Kérjük, vegye figyelembe, hogy a telepítéskor a bináris fájl az asztalomon volt, így van egy CD-m az Asztalomra, és futtatom a parancsot.
Most ez megtörtént, itt az ideje, hogy kommunikáljon a táblával, és villogjon néhány LED.
Kommunikáció a NodeMCU-val a PuTTY-vel
Most kezdjük el az első Hello World programunkat a PuTTY, PuTTY használatával, ehhez a kapcsolattípust sorosnak kell beállítanunk, majd a soros vonalat (esetünkben a COM6-ot), végül a sebességet 115200 baudra kell állítanunk.
Ha mindent helyesen csinálunk, megjelenik az alábbi képhez hasonló ablak, amelybe könnyedén beírhatjuk a kódunkat, ez általában úgy működik, mint egy iPython terminál. Futtattuk az első hello world programunkat is, amely csak két egyszerű sor, és miután kitöltöttük a nyomtatott nyilatkozatot, megkaptuk a választ.
Python alapú LED villogó kód feltöltése az Ampy használatával
A MicroPython elérése a PuTTY terminál segítségével jó módja a kommunikációnak az ESP modullal, de egy másik egyszerű módszer a kód feltöltése az Adafruit Ampy eszközön keresztül, az ampy telepítéséhez egyszerűen futtathatunk egy egyszerű pip3 telepítési adafruit- ampy parancsot, és telepíti az ampy-t a számítógépünkre. A folyamat úgy néz ki, mint az alábbi kép.
Most, ha ez megvan, akkor is szükségünk van az információra a soros portról, amelyhez kapcsolódunk. Esetünkben ez a COM6. Most csak meg kell írnunk a LED Blink kódunkat a MicroPython segítségével, ehhez a hivatalos micro python webhelyen található útmutatót használtuk
Az útmutató segítségével a következő kód készül.
a gépimportból Pin az időből importálási alvás LED = Pin (2, Pin.OUT), míg True: LED.value (nem LED.value ()) sleep (0.5)
A kód nagyon egyszerű. Először a Pin könyvtárat importáljuk a gépről. Pin osztály. Ezután importálnunk kell az időkönyvtárat, amelyet késleltetési függvény készítésére használunk. Ezután a Pin2-et (amely az ESP12E modulhoz csatlakoztatott fedélzeti LED) állítjuk kimenetként. Ezután létrehoztunk egy darab hurokot, ahol 500 ms késéssel kapcsoljuk be és ki a LED-et.
Így tölti fel a kódot a NodeMCU-ra. Ehhez futtatnia kell a következő ampy parancsot, ampy --port COM6 fel a main.py
Ha a program végrehajtása javításra kerül, akkor egy LED villogni fog, mint az alábbiakban látható.
Megjegyzés: A kód feltöltése közben a jelenlegi azonnali helyemet az Asztalra állítottam be, ezért nem kellett megadnom a main.py fájl teljes elérési útját, ha nem ez a helyzet, akkor meg kell adnod a fő elérési útvonalát.py fájl.
Ezután áttérünk a hőmérséklet- és páratartalomra vonatkozó adatok megszerzésére a DHT22 érzékelőből.
MicroPython az ESP8266-on: Hőmérséklet és páratartalom elérése a DHT22 segítségével
Séma a DHT22 és a NodeMCU összekapcsolására:
A projekt teljes kapcsolási rajza alább található. A fritzinget használtam az áramkör létrehozásához.
Amint láthatja, az áramkör nagyon egyszerű, és jumper huzalok segítségével könnyen felépíthető a kenyérlapra. A teljes áramkört a NodeMCU mikro-USB portjával lehet táplálni. Az alábbiakban bemutatom a hardver beállításomat.
Kód:
Nagyon könnyű megszerezni a hőmérséklet és páratartalom adatait egy DHT22 vagy DHT11 érzékelőből egy MicroPython használatával, mert a korábban telepített MicroPython firmware beépített DHT könyvtárral rendelkezik.
1. A kódunkat a DHT könyvtár és a pin könyvtár importálásával kezdjük a géposztályból.
import dht from machine import Pin
2. Ezután létrehozunk egy DHT objektumot, amely a csapra utal, amelybe az érzékelőt csatlakoztattuk.
érzékelő = dht. DHT22 (tű (14))
3. Végül az érzékelő értékének méréséhez a következő három parancsot kell használnunk.
érzékelő.mérés () érzékelő.hőmérséklet () érzékelő.nedvesség ()
A végső kódhoz egy kis időtartamú hurokba tesszük és kinyomtatjuk azokat az értékeket, amelyek a kódunk végét jelzik. Ezenkívül a DHT22 érzékelőnek 2 másodpercre van szüksége, mielőtt bármilyen adatot el tudna olvasni, ezért hozzá kell adnunk 2 másodperces késleltetést.
a gépimportból PIN-kód az időből importálás alvásimportálás dht dht22 = dht.DHT22 (PIN (14)), míg True: próbáld ki: próbáld meg: sleep (2) dht22.measure () temp = dht22.hőmérséklet () hum = dht22.nedvesség () print ('Hőmérséklet:% 3.2f C'% temp) nyomtatás ('Páratartalom:% 3.2f %%'% hum), az OSError kivételével e: print ('Nem sikerült olvasni az adatokat a DHT22 érzékelőből.')
Miután befejeztük a kódolást, feltölthetjük a kódot az ampy parancs segítségével.
ampy --port COM6 fel a main.py
A kód sikeres végrehajtása után bármely soros monitoron figyelemmel kísérheti a hőmérséklet és a páratartalom értékeit. Gittet használtam, és amint az alább látható, a COM5-en meg tudtam kapni a hőmérséklet és páratartalom értékeit.
Remélem, tetszett a cikk, és valami hasznosat tanult. Ha bármilyen kérdése van, hagyja őket az alábbi megjegyzés részben, vagy fórumunkon keresztül további technikai kérdéseket tehet fel.