- Čo je MicroPython?
- Prečo MicroPython pre NodeMCU?
- Čo je to ESP8266 (NodeMCU)?
- Použitý hardvér
- Inštalácia firmvéru MicroPython pre ESP8266
- Komunikácia s NodeMCU s PuTTY
- Nahrávanie blikajúcich kódov LED založených na Pythone pomocou Ampy
- MicroPython na ESP8266: Získanie teploty a vlhkosti s DHT22
Pre začiatočníka, ktorý sa zaujíma o programovanie mikrokontrolérov s podporou Wi-Fi, ako je ESP8266, môže byť pochopenie programovacieho prostredia ESP-IDF alebo Arduino IDE skutočnou výzvou, takže kryptická syntax jazykov C a C ++ vyžaduje ďalšie znalosti počítačovej vedy, ktorá je prečo tieto jazyky nie sú vždy priateľské pre začiatočníkov, preto sa v tomto článku naučíme nastavovať a programovať ESP8266 s MicroPython a nakoniec získame údaje o teplote a vlhkosti z nášho obľúbeného snímača teploty a vlhkosti DHT22. Predtým sme tiež vytvorili návod, ako programovať ESP32 s Micro Python, ktorý si môžete v prípade záujmu aj skontrolovať.
Čo je MicroPython?
Môžeme povedať, že MicroPython je nakrájaná verzia jazyka python, ktorá je navrhnutá na prácu s mikrokontrolérmi a vstavanými systémami. Proces syntaxe a kódovania MicroPythonu sa podobá pythonu. Takže ak už poznáte python, viete už, ako napísať kód pomocou MicroPythonu. Ak ste fanúšikom Pythonu, môžete si prečítať tento článok.
MicroPython bol vyvinutý vo Veľkej Británii tímom vedeným Damionom jonesom a v minulosti spustili Kickstarter, kde spustili konkrétnu sadu vývojových dosiek, na ktorých by bol spustený firmvér, ktorý vám umožní spustiť MicroPython navyše firmvér bol teraz prenesený na ESP8266, o čom sa v tomto článku dozviete.
Prečo MicroPython pre NodeMCU?
Python je jedným z najbežnejšie používaných a doteraz ľahko sa učiacich programovacích jazykov. Takže so zavedením MicroPythonu bolo programovanie hardvérových mikrokontrolérov veľmi jednoduché. Ak ste nikdy predtým neprogramovali mikrokontrolér a chcete sa začať učiť programovať, MicroPython je dobrým začiatkom.
MicroPython používa orezanú verziu štandardných knižníc Pythonu, takže všetky štandardné knižnice nie sú k dispozícii. MicroPython však obsahuje jednoduché a ľahko použiteľné moduly na prepojenie s hardvérom, čo znamená, že pomocou MicroPythonu sa čítanie a zápis do registra GPIO zjednodušilo.
Konečným cieľom MicroPythonu je čo najviac zjednodušiť programovanie mikrokontrolérov, aby ho mohol používať ktokoľvek. Vďaka importu knižníc MicroPython a písaniu kódu je kód ľahký. Nižšie uvedený kód je jednoduchým príkladom, ktorý bliká integrovanou LED diódou dosky NodeMCU. O tomto kóde sa budeme podrobnejšie rozprávať po článku.
z importu stroja Pin z importu času spánok LED = Pin (2, Pin.OUT) zatiaľ čo True: LED.value (nie LED.value ()) sleep (0.5)
Čo je to ESP8266 (NodeMCU)?
ESP8266 je lacný modul Wi-Fi určený pre aplikácie súvisiace s internetom vecí (IoT).
Dodáva sa s univerzálnymi vstupnými a výstupnými pinmi (GPIO) a podporuje tiež rôzne bežne používané protokoly, ako sú SPI, I2C, UART a ďalšie. Najchladnejšou vlastnosťou tohto mikrokontroléra je však to, že má zabudovanú Wi-Fi. Vďaka nemu sa môžeme veľmi ľahko pripojiť k akejkoľvek 2,4 GHz Wi-Fi sieti.
Teraz už základy nie sú v ceste, aby sme sa dostali k praktickej časti, kde vám ukážeme požadovaný hardvér a proces inštalácie MicroPythonu na ESP8266 IC.
Použitý hardvér
Zoznam použitých materiálov
- 1 x nepájivá doska
- 1 x ESP8266 (NodeMCU)
- 1 x DHT22 (snímač teploty a vlhkosti)
- 1 x 3 mm LED (svetelná dióda)
- 1 x 1K rezistor
- 5 x prepojovací drôt
Inštalácia firmvéru MicroPython pre ESP8266
V tomto článku existujú dva spôsoby, ako nainštalovať firmvér MicroPython na ESP8266. O oboch si povieme, ale najskôr si ich musíme stiahnuť.
Stiahnutie firmvéru MicroPython pre ESP8266:
Pred pripojením dosky NodeMCU (ESP8266) k nášmu počítaču si musíme stiahnuť najnovšiu verziu MicroPythonu, až potom môžeme nainštalovať firmvér na NodeMCU, ktorý si môžete stiahnuť z oficiálnej stránky na stiahnutie Micropython.
Inštalácia firmvéru MicroPython na ESP8266:
Predtým, ako môžeme nainštalovať firmvér na ESP8266, sa musíme ubezpečiť, že máme správny disk pre prevodník USB na sériový prevodník, väčšina dosiek NodeMCU používa integrovaný obvod prevodníka CP2102 USB na UART, a preto si musíme stiahnuť a nainštalovať ovládač pre prevodník CP2102 USB na UART. Po stiahnutí a nainštalovaní jednotky je potrebné stiahnuť esptool, čo je nástroj založený na pythone, ktorý slúži na čítanie a zápis firmvéru na ESP8266.
Najjednoduchší spôsob, ako získať Python, je Microsoft Store, odtiaľ si musíte stiahnuť a nainštalovať kópiu Pythonu. Po nainštalovaní Pythonu môžeme na inštaláciu esptoolu použiť príkaz pip3 install esptool. Postup bude vyzerať ako na nasledujúcom obrázku.
Po nainštalovaní skontrolujte, či máte prístup k esptoolu z príkazového terminálu.
Ak to chcete urobiť, stačí spustiť príkaz, verzia esptool.py, ak sa zobrazí okno ako obrázok nižšie, úspešne ste nainštalovali program esptool do počítača so systémom Windows.
A ak máte ťažkosti s prístupom k esptoolu z príkazového okna, skúste do premennej prostredia systému Windows pridať celú cestu na inštaláciu.
Nájdenie PORTU prideleného pre dosku NodeMCU:
Teraz musíme zistiť pridelený port pre dosku NodeMCU, aby sme to mohli urobiť, stačí prejsť do okna správcu zariadenia a hľadať možnosť s názvom Porty, ak rozbalíte, že môžete zistiť port spojený s doskou NodeMCU. Pre nás to vyzerá ako na obrázku nižšie.
Vymazanie flash pamäte ESP8266:
Teraz sme zistili pridružený port COM, môžeme pripraviť modul NodeMCU vymazaním jeho flash pamäte. Použije sa na to nasledujúci príkaz, esptool.py --port COM6 erase_flash . Tento proces bude vyzerať asi ako na obrázku nižšie.
Inštalácia firmvéru:
Spustením nasledujúceho príkazu nainštalujete binárny procesor MicroPython na dosku NodeMCU. Po nainštalovaní nám tento binárny program umožní nahrať naše pythonovské programy a komunikovať so slučkou Read Evaluate a Print .
esptool.py --port COM6 --baud 460800 write_flash --flash_size = detekcia 0 esp8266-20200911-v1.13.bin
Proces bude vyzerať podobne ako na obrázku nižšie,
Upozorňujeme, že v čase inštalácie bol binárny súbor na mojej pracovnej ploche, takže mám na svojej pracovnej ploche disk CD a spustím príkaz.
Teraz je hotovo, je čas na komunikáciu s doskou a blikanie niektorých LED diód.
Komunikácia s NodeMCU s PuTTY
Teraz začnime náš prvý program Hello World pomocou PuTTY, PuTTY, aby sme to urobili, musíme nastaviť typ pripojenia ako Serial, ďalej nastavíme Serial line (v našom prípade jeho COM6) a nakoniec nastavíme Speed na 115200 baudov.
Ak je všetko vykonané správne, objaví sa okno podobné obrázku na obrázku nižšie, do ktorého môžeme ľahko napísať náš kód, zvyčajne funguje ako terminál iPython. Spustili sme tiež náš prvý svetový program „ahoj“, ktorý má iba dva jednoduché riadky, a akonáhle dáme svoje tlačené vyhlásenie, dostali sme našu odpoveď.
Nahrávanie blikajúcich kódov LED založených na Pythone pomocou Ampy
Prístup k MicroPythonu pomocou terminálu PuTTY je dobrý spôsob komunikácie s modulom ESP, ale ďalším ľahkým spôsobom je nahranie kódu pomocou nástroja Adafruit Ampy, na inštaláciu ampy môžeme spustiť jednoduchú inštaláciu pip3 adafruit- príkaz ampy a nainštaluje ampy na náš počítač. Tento proces bude vyzerať asi ako na obrázku nižšie.
Keď už toto máte, stále potrebujeme informácie o sériovom porte, ku ktorému sme pripojení. V našom prípade je to COM6. Teraz už len potrebujeme napísať náš LED Blink kód pomocou MicroPythonu, preto sme použili príručku uvedenú na oficiálnej webovej stránke micro python
S pomocou sprievodcu je vyrobený nasledujúci kód.
z importu stroja Pin z importu času spánok LED = Pin (2, Pin.OUT) zatiaľ čo True: LED.value (nie LED.value ()) sleep (0.5)
Kód je veľmi jednoduchý. Najskôr zo zariadenia importujeme knižnicu Pin. Trieda špendlíka. Ďalej musíme importovať knižnicu času, ktorá sa používa na vytvorenie funkcie oneskorenia. Ďalej nastavíme ako výstup Pin2 (čo je palubná LED pripojená k modulu ESP12E). Ďalej sme nastavili chvíľu slučku, kde sme zapínali a vypínali LED s oneskorením 500ms.
Takto nahráte kód na NodeMCU. Ak to chcete urobiť, musíte spustiť nasledujúci príkaz ampy , ampy --port COM6 dať main.py
Ak sa program vykoná opravený, uvidíte blikanie LED, ako je to znázornené nižšie.
Poznámka: Počas nahrávania kódu som nastavil svoje súčasné umiestnenie výzvy na plochu, takže som nemusel zadávať úplnú cestu k súboru main.py, ak to tak nie je, musíte zadať úplnú cestu k svojmu hlavnému súboru. súbor.py.
Ďalej pokračujeme v získavaní našich údajov o teplote a vlhkosti zo snímača DHT22.
MicroPython na ESP8266: Získanie teploty a vlhkosti s DHT22
Schéma prepojenia DHT22 s NodeMCU:
Kompletnú schému zapojenia tohto projektu nájdete nižšie. Na vytvorenie tohto okruhu som použil fritovanie.
Ako vidíte, obvod je veľmi jednoduchý a dá sa ľahko postaviť na prkénku pomocou prepojovacích vodičov. Celý obvod je možné napájať pomocou portu micro-USB na NodeMCU. Moje nastavenie hardvéru je zobrazené nižšie.
Kód:
Získanie údajov o teplote a vlhkosti zo snímača DHT22 alebo DHT11 pomocou MicroPythonu je veľmi jednoduché, pretože firmvér MicroPython, ktorý sme nainštalovali skôr, je dodávaný so zabudovanou knižnicou DHT.
1. Náš kód začneme importom knižnice DHT a knižnice pinov z triedy strojov.
import dht zo stroja import Pin
2. Ďalej vytvoríme objekt DHT, ktorý odkazuje na pin, do ktorého sme pripevnili náš senzor.
senzor = dht.DHT22 (vývod (14))
3. Nakoniec na meranie hodnoty senzora musíme použiť nasledujúce tri príkazy.
sensor.measure () sensor.teplota () sensor.humidity ()
Pre výsledný kód ho vložíme do chvíľu s a vytlačíme hodnoty, ktoré označujú koniec nášho kódu. Snímač DHT22 tiež potrebuje 2 sekundy, aby mohol načítať akékoľvek údaje, takže musíme pridať 2-sekundové oneskorenie.
z importu zo stroja Pin z času importu spánok import dht dht22 = dht.DHT22 (pin (14)) while True: try: sleep (2) dht22.measure () temp = dht22.temperature () hum = dht22.humidity () print ('Teplota:% 3,2f C'% tepl.) Tlač ('Vlhkosť:% 3,2f %%'% hučanie) okrem OSError ako e: print ('Zlyhanie pri načítaní údajov zo snímača DHT22.')
Po dokončení programovania môžeme pomocou príkazu ampy nahrať kód.
ampy --port COM6 dať main.py
Po úspešnom vykonaní kódu môžete sledovať hodnoty teploty a vlhkosti na ľubovoľnom sériovom monitore. Použil som tmel a ako vidíte nižšie, na COM5 som dokázal prijímať hodnoty teploty a vlhkosti.
Dúfam, že sa vám článok páčil a dozvedeli ste sa niečo užitočné. Ak máte akékoľvek otázky, môžete ich zanechať v sekcii komentárov nižšie alebo použiť naše fóra na zverejnenie ďalších technických otázok.