- Co je MicroPython?
- Proč MicroPython pro NodeMCU?
- Co je ESP8266 (NodeMCU)?
- Použitý hardware
- Instalace firmwaru MicroPython pro ESP8266
- Komunikace s NodeMCU s PuTTY
- Nahrání blikajícího kódu LED na základě Pythonu pomocí Ampy
- MicroPython na ESP8266: Získání teploty a vlhkosti s DHT22
Pro začátečníka, který se zajímá o programování mikrokontrolérů s podporou Wi-Fi, jako je ESP8266, může být pochopení programovacího prostředí ESP-IDF nebo Arduino IDE skličující úkol, takže záhadná syntaxe jazyků C a C ++ vyžaduje více znalostí počítačových věd, což je proč tyto jazyky nejsou pro začátečníky vždy přátelské, tak se v tomto článku naučíme nastavovat a programovat ESP8266 s MicroPythonem a nakonec získáme údaje o teplotě a vlhkosti z našeho oblíbeného snímače teploty a vlhkosti DHT22. Dříve jsme také vytvořili výukový program, jak programovat ESP32 s Micro Pythonem, můžete si to také zkontrolovat, pokud vás to zajímá.
Co je MicroPython?
Můžeme říci, že MicroPython je kostkovaná verze pythonu navržená pro práci s mikrokontroléry a vestavěnými systémy. Proces syntaxe a kódování MicroPythonu se podobá pythonu. Takže pokud již znáte python, už víte, jak napsat svůj kód pomocí MicroPythonu. Pokud jste fanouškem Pythonu, můžete si přečíst tento článek.
MicroPython byl vyvinut ve Velké Británii týmem vedeným Damionem jonesem a v minulosti spustili Kickstarter, kde spustili konkrétní sadu vývojových desek, na kterých by byl spuštěn firmware, což vám umožní provozovat MicroPython nad tím, že firmware byl nyní přenesen, aby fungoval na ESP8266, o kterém se v tomto článku dozvíte.
Proč MicroPython pro NodeMCU?
Python je jedním z nejpoužívanějších a dosud snadno naučitelných programovacích jazyků. Se zavedením MicroPythonu bylo tedy programování hardwarových mikrokontrolérů velmi snadné. Pokud jste nikdy předtím neprogramovali mikrokontrolér a chcete se začít učit programovat, je MicroPython dobrým začátkem.
MicroPython používá ořezanou verzi standardních knihoven Pythonu, takže všechny standardní knihovny nejsou k dispozici. MicroPython však obsahuje jednoduché a snadno použitelné moduly pro rozhraní s hardwarem, což znamená, že pomocí MicroPythonu je čtení a zápis do registru GPIO mnohem jednodušší.
Konečným cílem MicroPythonu je co nejjednodušší programování mikrokontrolérů, takže jej může používat kdokoli. Díky snadnému importu knihoven MicroPython a psaní kódu je níže uvedený kód jednoduchým příkladem, který bliká integrovanou LED diodou desky NodeMCU, po článku budeme podrobně diskutovat o kódu.
z importu stroje Pin z importu času sleep LED = Pin (2, Pin.OUT) zatímco True: LED.value (ne LED.value ()) sleep (0,5)
Co je ESP8266 (NodeMCU)?
ESP8266 je levný modul Wi-Fi určený pro aplikace související s internetem věcí (IoT).
Dodává se s univerzálními vstupními a výstupními piny (GPIO) a podporuje také řadu běžně používaných protokolů, jako je SPI, I2C, UART a další. Nejúžasnějším rysem tohoto mikrokontroléru je však to, že má vestavěné Wi-Fi. Díky tomu se můžeme velmi snadno připojit k jakékoli 2,4 GHz Wi-Fi.
Nyní jsou základy mimo způsob, jak přejít k praktické části, kde vám ukážeme požadovaný hardware a proces instalace MicroPythonu na ESP8266 IC.
Použitý hardware
Seznam použitých materiálů
- 1 x prkénko
- 1 x ESP8266 (NodeMCU)
- 1 x DHT22 (snímač teploty a vlhkosti)
- 1 x 3 mm LED (světelná dioda)
- 1 x 1K rezistor
- 5 x propojovací vodič
Instalace firmwaru MicroPython pro ESP8266
V tomto článku existují dva způsoby instalace firmwaru MicroPython na ESP8266. Budeme mluvit o obou z nich, ale nejprve si je musíme stáhnout.
Stahování firmwaru MicroPython pro ESP8266:
Než připojíme desku NodeMCU (ESP8266) k našemu počítači, musíme si stáhnout nejnovější verzi MicroPythonu, poté můžeme nainstalovat firmware na NodeMCU, můžete si jej stáhnout z oficiální stránky pro stahování Micropython
Instalace firmwaru MicroPython na ESP8266:
Než můžeme nainstalovat firmware na ESP8266, musíme se ujistit, že máme správnou jednotku pro převodník USB na sériový převodník, většina desky NodeMCU používá IC převodník CP2102 USB na UART, což je důvod, proč musíme stáhnout a nainstalovat ovladač pro převodník CP2102 USB na UART, Jakmile je disk stažen a nainstalován, musíme si stáhnout esptool, což je nástroj založený na pythonu, který slouží ke čtení a zápisu firmwaru na ESP8266.
Nejjednodušší způsob, jak získat Python, je přes Microsoft Store, odtud si musíte stáhnout a nainstalovat kopii Pythonu. Jakmile je Python nainstalován, můžeme k instalaci esptoolu použít příkaz pip3 install esptool. Proces bude vypadat jako něco jako obrázek níže.
Po instalaci zkontrolujte, zda přistupujete k esptoolu z příkazového terminálu.
Chcete-li tak učinit, stačí spustit příkaz, verze esptool.py, pokud se zobrazí okno jako obrázek níže, úspěšně jste nainstalovali esptool do počítače se systémem Windows.
A pokud máte potíže s přístupem k esptoolu z příkazového okna, zkuste přidat celou instalační cestu do proměnné prostředí systému Windows.
Nalezení PORTU přiděleného pro NodeMCU Board:
Nyní musíme zjistit přidělený port pro desku NodeMCU, abychom to udělali, stačí přejít do okna správce zařízení a hledat možnost s názvem Porty, pokud rozbalíte, že můžete zjistit port přidružený k desce NodeMCU. Pro nás to vypadá jako na obrázku níže.
Vymazání flash paměti ESP8266:
Nyní jsme zjistili přidružený port COM, můžeme připravit modul NodeMCU vymazáním jeho flash paměti. K tomu se používá následující příkaz, esptool.py --port COM6 erase_flash . Proces bude vypadat přibližně jako na obrázku níže.
Instalace firmwaru:
Spuštěním následujícího příkazu nainstalujete binární soubor MicroPython na desku NodeMCU, po instalaci nám tento binární soubor umožní nahrát naše pythonovské programy a komunikovat se smyčkou Read Evaluate and Print .
esptool.py --port COM6 --baud 460800 write_flash --flash_size = detekovat 0 esp8266-20200911-v1.13.bin
Proces bude vypadat podobně jako na obrázku níže,
Vezměte prosím na vědomí, že v době instalace byl binární soubor na mé ploše, takže mám na ploše CD a spustím příkaz.
Nyní je hotovo, je čas komunikovat s deskou a blikat některé LED.
Komunikace s NodeMCU s PuTTY
Nyní začněme náš první program Hello World pomocí PuTTY, PuTTY k tomu musíme nastavit typ připojení jako Serial, dále nastavíme Serial line (v našem případě jeho COM6) a nakonec nastavíme Speed na 115200 baudů.
Pokud je vše provedeno správně, objeví se okno podobné obrázku níže a můžeme do něj snadno zapsat náš kód, obvykle funguje jako terminál iPython. Také jsme spustili náš první program hello world, který má jen dva jednoduché řádky, a jakmile jsme vložili naše tiskové prohlášení, dostali jsme naši odpověď.
Nahrání blikajícího kódu LED na základě Pythonu pomocí Ampy
Přístup k MicroPythonu pomocí terminálu PuTTY je dobrý způsob komunikace s modulem ESP, ale dalším snadným způsobem je nahrání kódu pomocí nástroje Adafruit Ampy, instalace ampy, stačí spustit jednoduchý pip3 install adafruit- příkaz ampy a nainstaluje ampy na náš počítač. Proces bude vypadat přibližně jako na obrázku níže.
Jakmile to máte, stále potřebujeme naše informace o sériovém portu, ke kterému jsme připojeni. V našem případě je to COM6. Nyní stačí napsat náš kód LED Blink pomocí MicroPythonu, k tomu jsme použili průvodce poskytovaného na oficiálním webu micro python
S pomocí průvodce je vytvořen následující kód.
z importu stroje Pin z importu času sleep LED = Pin (2, Pin.OUT) zatímco True: LED.value (ne LED.value ()) sleep (0,5)
Kód je velmi jednoduchý. Nejprve importujeme knihovnu Pin ze stroje. Třída špendlíku. Dále musíme importovat knihovnu času, která se používá k vytvoření funkce zpoždění. Dále nastavíme Pin2 (což je palubní LED připojená k modulu ESP12E) jako výstup. Dále jsme nastavili chvíli smyčku, kde jsme zapnout a vypnout LED s 500ms zpožděním.
Takto nahrajete kód na NodeMCU. Chcete-li to provést, musíte spustit následující příkaz ampy , ampy --port COM6 dal main.py
Pokud je program spuštěn opraven, uvidíte blikající LED, jak je znázorněno níže.
Poznámka: Při nahrávání kódu jsem nastavil své aktuální umístění výzvy na plochu, takže jsem nemusel zadat úplnou cestu k souboru main.py, pokud tomu tak není, musíte zadat úplnou cestu k hlavnímu soubor.py.
Dále přejdeme k získání údajů o teplotě a vlhkosti ze snímače DHT22.
MicroPython na ESP8266: Získání teploty a vlhkosti s DHT22
Schéma propojení DHT22 s NodeMCU:
Kompletní schéma zapojení pro tento projekt naleznete níže. K vytvoření tohoto obvodu jsem použil fritování.
Jak vidíte, obvod je velmi jednoduchý a lze ho snadno postavit na prkénku pomocí propojovacích vodičů. Celý obvod lze napájet pomocí portu micro-USB na NodeMCU. Moje nastavení hardwaru je uvedeno níže.
Kód:
Je velmi snadné získat údaje o teplotě a vlhkosti ze snímače DHT22 nebo DHT11 pomocí MicroPythonu, protože firmware MicroPython, který jsme nainstalovali dříve, je dodáván s integrovanou knihovnou DHT.
1. Začneme náš kód importem knihovny DHT a knihovny pinů ze třídy stroje.
import dht ze stroje importovat Pin
2. Dále vytvoříme objekt DHT, který odkazuje na kolík, ke kterému jsme připojili náš senzor.
sensor = dht.DHT22 (Pin (14))
3. Nakonec pro měření hodnoty senzoru musíme použít následující tři příkazy.
sensor.measure () sensor.teplota () sensor.humidity ()
U konečného kódu jej vložíme do smyčky while a vytiskneme hodnoty, které označují konec našeho kódu. Čidlo DHT22 také potřebuje 2 sekundy, aby mohlo číst data, takže musíme přidat zpoždění 2 sekundy.
z importu stroje Pin z importu času spánku 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.) Tisk ('Vlhkost:% 3,2f %%'% hučení) kromě OSError jako e: print ('Nepodařilo se přečíst data ze senzoru DHT22.')
Po dokončení programování můžeme nahrát kód pomocí příkazu ampy.
ampy --port COM6 dal main.py
Po úspěšném provedení kódu můžete sledovat hodnoty teploty a vlhkosti na libovolném sériovém monitoru. Použil jsem tmel a jak vidíte níže, byl jsem schopen přijímat hodnoty teploty a vlhkosti na COM5.
Doufám, že se vám článek líbil a naučili jste se něco užitečného. Máte-li jakékoli dotazy, můžete je zanechat v sekci komentářů níže nebo použít naše fóra k odeslání dalších technických otázek.