- Kaj je MicroPython?
- Zakaj MicroPython za NodeMCU?
- Kaj je ESP8266 (NodeMCU)?
- Uporabljena strojna oprema
- Namestitev vdelane programske opreme MicroPython za ESP8266
- Komuniciranje z NodeMCU z PuTTY
- Prenos utripajoče kode LED, ki temelji na Pythonu, z uporabo Ampy
- MicroPython na ESP8266: Pridobivanje temperature in vlažnosti z DHT22
Za začetnike, ki jih zanima programiranje mikrokrmilnikov, ki podpirajo Wi-Fi, kot je ESP8266, je razumevanje programskega okolja ESP-IDF ali Arduino IDE zastrašujoča naloga, zato mora kriptična sintaksa jezikov C in C ++ imeti več znanja računalništva, zakaj ti jeziki niso vedno prijazni za začetnike, zato se bomo v tem članku naučili nastaviti in programirati ESP8266 z MicroPythonom, na koncu pa bomo podatke o temperaturi in vlažnosti dobili iz našega najljubšega senzorja temperature in vlažnosti DHT22. Prej smo naredili tudi vadnico o tem, kako programirati ESP32 z Micro Pythonom, to lahko tudi preverite, če vas zanima.
Kaj je MicroPython?
Lahko rečemo, da je MicroPython različica pythona, narejena na kocke, zasnovana za delo z mikrokrmilniki in vgrajenimi sistemi. Sintaksa in kodiranje MicroPythona spominja na python. Torej, če že poznate python, že veste, kako napisati kodo z MicroPythonom. Če ste ljubitelj Pythona, si lahko ogledate ta članek.
MicroPython je v Združenem kraljestvu razvila skupina, ki jo je vodil Damion Jones, in že v ozadju lansirali Kickstarter, kjer so lansirali določen nabor razvojnih plošč, v katerih bi bila nameščena vdelana programska oprema, kar vam omogoča, da na njem zaženete MicroPython. zdaj je bila vdelana programska oprema prenesena na ESP8266, kar se boste naučili v tem članku.
Zakaj MicroPython za NodeMCU?
Python je eden najpogosteje uporabljenih in do zdaj enostavnih za učenje programskih jezikov. Z uvedbo MicroPythona je bilo programiranje mikrokrmilnikov, ki temeljijo na strojni opremi, zelo enostavno. Če še nikoli niste programirali mikrokrmilnika in se želite začeti učiti programirati, je MicroPython dober začetek.
MicroPython uporablja odstranjeno različico standardnih knjižnic Python, zato vse standardne knjižnice niso na voljo. Toda MicroPython vključuje enostavne in enostavne module za vmesnik s strojno opremo, kar pomeni, da je branje in zapisovanje v GPIO register s pomočjo MicroPythona prav tako lažje.
Končni cilj MicroPythona je poenostaviti programiranje mikrokrmilnikov, tako da ga lahko uporablja kdorkoli. Ko MicroPython uvaža knjižnice in pisanje kode postane enostavno, je spodnja koda preprost primer, ki utripa na vgrajeni LED plošči NodeMCU, o kodi bomo podrobno razpravljali po članku.
iz strojnega uvoza Pin iz časa uvoza LED za spanje = Pin (2, Pin.OUT), medtem ko je True: LED.value (ne LED.value ()) sleep (0.5)
Kaj je ESP8266 (NodeMCU)?
ESP8266 je poceni modul Wi-Fi, zasnovan za aplikacije, povezane z internetom stvari (IoT).
Na voljo je s splošnimi vhodnimi in izhodnimi zatiči (GPIO), podpira pa tudi različne pogosto uporabljene protokole, kot so SPI, I2C, UART in drugi. Toda najbolj kul lastnost tega mikrokrmilnika je ta, da ima vgrajen Wi-Fi. Z njim se lahko zelo enostavno povežemo s katerim koli Wi-Fi 2,4 GHz.
Zdaj ni več osnov za prehod na praktični del, kjer vam bomo pokazali zahtevano strojno opremo in postopek namestitve MicroPythona na ESP8266 IC.
Uporabljena strojna oprema
Seznam uporabljenih materialov
- 1 x Breadboard
- 1 x ESP8266 (NodeMCU)
- 1 x DHT22 (senzor temperature in vlage)
- 1 x 3 mm LED (dioda, ki oddaja svetlobo)
- 1 x 1K upor
- 5 x Jumper žica
Namestitev vdelane programske opreme MicroPython za ESP8266
V tem članku obstaja dva načina namestitve vdelane programske opreme MicroPython na ESP8266. O obeh se bomo pogovorili, najprej pa jo moramo prenesti.
Prenos vdelane programske opreme MicroPython za ESP8266:
Preden na svoj računalnik priključimo ploščo NodeMCU (ESP8266), moramo prenesti najnovejšo različico MicroPythona, nato pa lahko vdelano programsko opremo namestimo na NodeMCU, lahko pa jo prenesete z uradne strani za prenos Micropythona
Namestitev vdelane programske opreme MicroPython na ESP8266:
Preden lahko namestimo vdelano programsko opremo na ESP8266, se moramo prepričati, da imamo pravi pogon za pretvornik USB v serijski pretvornik, večina plošče NodeMCU uporablja pretvornik CP2102 USB v UART, zato moramo prenesti in namestiti gonilnik za pretvornik CP2102 USB v UART. Ko je pogon naložen in nameščen, moramo prenesti esptool, orodje, ki temelji na pythonu in je namenjeno branju in pisanju vdelane programske opreme na ESP8266.
Python je najlažje dobiti prek Microsoftove trgovine, od tam pa morate prenesti in namestiti kopijo Pythona. Ko je Python nameščen, lahko z ukazom pip3 install esptool namestimo esptool. Postopek bo videti kot nekaj podobnega spodnji sliki.
Ko je nameščen, preverite, ali dostopate do esptool z ukaznega terminala.
Če želite to narediti, preprosto zaženite ukaz, različica esptool.py, če se prikaže okno, kot je spodnja slika, ste esptool uspešno namestili v računalnik z operacijskim sistemom Windows.
Če imate težave z dostopom do esptool iz ukaznega okna, poskusite spremenljivki okolja Windows dodati celotno namestitveno pot.
Iskanje pristanišča, dodeljenega za ploščo NodeMCU:
Zdaj moramo ugotoviti dodeljena vrata za ploščo NodeMCU, za to pa preprosto pojdite v okno upravitelja naprave in poiščite možnost, imenovano Ports, če razširite, da lahko ugotovite vrata, povezana s ploščo NodeMCU. Za nas je videti kot spodnja slika.
Brisanje bliskovnega pomnilnika naprave ESP8266:
Zdaj smo ugotovili pridružena vrata COM, lahko pripravimo modul NodeMCU tako, da izbrišemo njegov pomnilnik. Za to se uporabi naslednji ukaz, esptool.py --port COM6 erase_flash . Postopek bo videti podobno kot na spodnji sliki.
Namestitev vdelane programske opreme:
Če zaženete naslednji ukaz, bo binarni program MicroPython nameščen na ploščo NodeMCU, ko nam bo ta binarni program omogočil nalaganje programov python in komunikacijo z zanko Read Evaluate and Print .
esptool.py --port COM6 --baud 460800 write_flash --flash_size = zaznavanje 0 esp8266-20200911-v1.13.bin
Postopek bo podoben spodnji sliki,
Upoštevajte, da je bil v času namestitve binarni sistem na mojem namizju, zato imam CD na namizje in zaženem ukaz.
Zdaj je to končano, čas je za komunikacijo s ploščo in utripanje nekaterih LED.
Komuniciranje z NodeMCU z PuTTY
Zdaj pa začnimo naš prvi program Hello World z uporabo PuTTY, PuTTY, zato moramo vrsto povezave nastaviti kot Serial, nato nastavimo Serial line (v našem primeru COM6) in na koncu nastavimo Speed na 115200 baud.
Če je vse narejeno pravilno, se prikaže okno, podobno spodnji sliki, in v njega lahko enostavno vpišemo svojo kodo, ki običajno deluje kot terminal iPython. Prav tako smo izvedli naš prvi program hello world, ki je samo dve preprosti vrstici, in ko smo dali izjavo za tisk, smo dobili odgovor.
Prenos utripajoče kode LED, ki temelji na Pythonu, z uporabo Ampy
Dostop do MicroPythona s pomočjo terminala PuTTY je dober način za komunikacijo z modulom ESP, drugi preprost način pa je nalaganje kode prek orodja Adafruit Ampy, za namestitev ampyja lahko zaženemo preprosto pip3 namestitev adafruit- ampy in ga namesti na naš računalnik. Postopek bo videti podobno kot na spodnji sliki.
Zdaj, ko to imate, še vedno potrebujemo naše podatke o serijskih vratih, s katerimi smo povezani. V našem primeru je to COM6. Zdaj moramo samo napisati kodo LED Blink z MicroPythonom, zato smo uporabili vodnik na uradni spletni strani micro python.
S pomočjo vodnika je narejena naslednja koda.
iz strojnega uvoza Pin iz časa uvoza LED za spanje = Pin (2, Pin.OUT), medtem ko je True: LED.value (ne LED.value ()) sleep (0.5)
Koda je zelo preprosta. Najprej iz računalnika uvozimo knjižnico Pin. Razred pin. Nato moramo uvoziti časovno knjižnico, ki se uporablja za funkcijo zakasnitve. Nato za izhod nastavimo Pin2 (ki je vgrajena LED, pritrjena na modul ESP12E). Nato nastavimo nekajkratno zanko, kjer vklopimo in izklopimo LED z zakasnitvijo 500 ms.
Tako naložite kodo na NodeMCU. Če želite to narediti, morate zagnati naslednji ukaz ampy , ampy --port COM6 dal main.py
Če se program popravi, bo LED utripal, kot je prikazano spodaj.
Opomba: Med nalaganjem kode sem trenutno lokacijo poziva postavil na namizje, zato mi ni bilo treba določiti celotne poti za datoteko main.py, če ni tako, morate določiti celotno pot za glavno.py datoteko.
Nato nadaljujemo s pridobivanjem podatkov o temperaturi in vlažnosti iz senzorja DHT22.
MicroPython na ESP8266: Pridobivanje temperature in vlažnosti z DHT22
Shema povezovanja DHT22 z NodeMCU:
Celoten diagram vezja za ta projekt najdete spodaj. Za ustvarjanje tega vezja sem uporabil fritzing.
Kot lahko vidite, je vezje zelo preprosto in ga je mogoče zlahka zgraditi na plošči z uporabo mostičnih žic. Celotno vezje lahko napajate prek vrat micro-USB na NodeMCU. Moja nastavitev strojne opreme je prikazana spodaj.
Koda:
Podatke o temperaturi in vlažnosti iz senzorja DHT22 ali DHT11 je zelo enostavno pridobiti s pomočjo MicroPythona, ker je vdelana programska oprema MicroPython, ki smo jo prej namestili, priložena vgrajeni knjižnici DHT.
1. Kodo začnemo z uvozom knjižnice DHT in knjižnice pin iz razreda stroja.
uvozi dht iz strojnega uvoza Pin
2. Nato ustvarimo DHT objekt, ki se nanaša na zatič, v katerega smo pritrdili senzor.
senzor = dht.DHT22 (zatič (14))
3. Na koncu moramo za merjenje vrednosti senzorja uporabiti naslednje tri ukaze.
sensor.measure () sensor.temperature () sensor.humidity ()
Za končno kodo jo vstavimo v zanko while in izpišemo vrednosti, ki označujejo konec naše kode. Poleg tega senzor DHT22 potrebuje 2 sekundi, preden lahko prebere vse podatke, zato moramo dodati zamik 2 sekundi.
iz strojnega uvoza Pripni od časa uvoz spanja uvoz dht dht22 = dht.DHT22 (zatič (14)), medtem ko je True: poskusite: spanje (2) dht22.measure () temp = dht22.temperature () hum = dht22.humidity () print ('Temperature:% 3.2f C'% temp) print ('Vlažnost:% 3.2f %%'% hum), razen OSError as e: print ('Neuspešno branje podatkov s senzorja DHT22.')
Ko končamo s kodiranjem, lahko kodo naložimo s pomočjo ukaza ampy.
ampy --port COM6 dal main.py
Po uspešno izvedeni kodi lahko spremljate vrednosti temperature in vlažnosti na katerem koli serijskem monitorju. Uporabil sem kiti in kot lahko vidite spodaj, sem lahko dobil vrednosti temperature in vlažnosti na COM5.
Upam, da ste članek uživali in se naučili kaj koristnega. Če imate kakršna koli vprašanja, jih lahko pustite v spodnjem oddelku za komentarje ali uporabite naše forume za objavo drugih tehničnih vprašanj.