- Ce este MicroPython?
- De ce MicroPython pentru NodeMCU?
- Ce este un ESP8266 (NodeMCU)?
- Hardware folosit
- Instalarea firmware-ului MicroPython pentru ESP8266
- Comunicarea cu NodeMCU cu PuTTY
- Încărcarea unui cod de clipire LED bazat pe Python folosind Ampy
- MicroPython pe ESP8266: Obținerea temperaturii și umidității cu DHT22
Pentru un începător interesat de programarea microcontrolerelor activate Wi-Fi precum ESP8266, înțelegerea mediului de programare ESP-IDF sau Arduino IDE poate fi o sarcină descurajantă, sintaxa criptică a limbajelor C și C ++ necesită mai multe cunoștințe de informatică, care este de ce aceste limbi nu sunt întotdeauna prietenoase pentru începători, așa că, în acest articol, vom învăța să configurăm și să programăm un ESP8266 cu MicroPython și, în cele din urmă, vom obține datele de temperatură și umiditate de la senzorul nostru preferat de temperatură și umiditate DHT22. Anterior am făcut și un tutorial despre cum să programăm ESP32 cu Micro Python, puteți verifica și asta dacă sunteți interesat.
Ce este MicroPython?
Putem spune că MicroPython este o versiune de Python, concepută pentru a funcționa cu microcontrolere și sisteme încorporate. Sintaxa și procesul de codare ale MicroPython seamănă cu python. Deci, dacă știi deja python, știi deja cum să scrii codul tău folosind MicroPython. Dacă sunteți fan Python, puteți verifica acest articol.
MicroPython a fost dezvoltat în Marea Britanie, de către o echipă condusă de Damion Jones și au lansat un Kickstarter în timp ce erau înapoi, unde au lansat un set special de plăci de dezvoltare care ar rula firmware-ul, care vă permite să rulați MicroPython deasupra acestuia, firmware-ul a fost portat acum pentru a rula pe ESP8266, pe care în acest articol îl veți afla.
De ce MicroPython pentru NodeMCU?
Python este unul dintre cele mai utilizate și ușor de învățat limbaje de programare până în prezent. Deci, odată cu introducerea MicroPython, programarea microcontrolerelor bazate pe hardware a devenit foarte ușoară. Dacă nu ați programat niciodată un microcontroler înainte și doriți să începeți să învățați să programați, MicroPython este un început bun.
MicroPython folosește o versiune redusă a bibliotecilor standard Python, astfel încât toate bibliotecile standard nu sunt disponibile. Dar, MicroPython include module simple și ușor de utilizat pentru interfața cu hardware-ul, ceea ce înseamnă că, cu ajutorul MicroPython, citirea și scrierea într-un registru GPIO au devenit mult mai ușoare.
Obiectivul final al MicroPython este de a face programarea microcontrolerelor cât mai simplă posibil, astfel încât să poată fi folosită de oricine. Cu importul de biblioteci MicroPython și scrierea codului devine ușoară, codul prezentat mai jos este un exemplu simplu care clipește LED-ul de pe placa NodeMCU, vom discuta codul în detaliu după articol.
de la importul mașinii Pin de la importul de timp LED sleep = Pin (2, Pin.OUT) în timp ce True: LED.value (nu LED.value ()) sleep (0,5)
Ce este un ESP8266 (NodeMCU)?
ESP8266 este un modul Wi-Fi low-cost, conceput pentru aplicațiile legate de Internet of Things (IoT).
Acesta vine cu pini de intrare și ieșire de uz general (GPIO) și acceptă, de asemenea, o varietate de protocoale utilizate în mod obișnuit, cum ar fi SPI, I2C, UART și multe altele. Dar, cea mai tare caracteristică a acestui microcontroler este că are Wi-Fi încorporat. Cu acesta, ne putem conecta la orice Wi-Fi de 2,4 GHz foarte ușor.
Acum, noțiunile de bază sunt în afara modului în care putem trece la partea practică în care vă vom arăta hardware-ul necesar și procesul de instalare a MicroPython pe ESP8266 IC.
Hardware folosit
Lista materialelor utilizate
- 1 x panou de pâine
- 1 x ESP8266 (NodeMCU)
- 1 x DHT22 (senzor de temperatură și umiditate)
- 1 x LED de 3 mm (diodă emițătoare de lumină)
- 1 x rezistor 1K
- 5 x sârmă jumper
Instalarea firmware-ului MicroPython pentru ESP8266
Există două modalități de a instala firmware-ul MicroPython pe ESP8266 în acest articol. Vom vorbi despre amândoi, dar mai întâi, trebuie să-l descărcăm.
Descărcarea firmware-ului MicroPython pentru ESP8266:
Înainte de a conecta placa NodeMCU (ESP8266) la computerul nostru, trebuie să descărcăm cea mai recentă versiune a MicroPython după care putem instala firmware-ul pe NodeMCU, îl puteți descărca de pe pagina oficială de descărcare Micropython
Instalarea firmware-ului MicroPython pe ESP8266:
Înainte de a putea instala firmware-ul pe ESP8266, trebuie să ne asigurăm că avem unitatea potrivită pentru convertorul USB la Serial, majoritatea plăcii NodeMCU utilizând un IC CP2102 USB la convertizor UART, motiv pentru care trebuie să descărcăm și să instalăm driver pentru convertorul CP2102 USB la UART, Odată ce unitatea este descărcată și instalată, trebuie să descărcăm esptool, care este un instrument bazat pe python creat pentru a citi și scrie firmware-ul pe ESP8266.
Cel mai simplu mod de a obține Python este prin Microsoft Store, de acolo trebuie să descărcați și să instalați o copie a Python. Odată ce Python este instalat, putem folosi comanda pip3 install esptool pentru a instala esptool. Procesul va arăta ca ceva ca imaginea de mai jos.
Odată instalat, verificați dacă accesați esptool de la terminalul de comandă.
Pentru a face acest lucru, trebuie doar să executați comanda, versiunea esptool.py , dacă aveți o fereastră ca o imagine de mai jos, ați instalat cu succes esptool pe computerul dvs. Windows.
Și dacă aveți probleme la accesarea esptool din fereastra de comandă, încercați să adăugați calea completă de instalare la variabila de mediu Windows.
Găsirea PORTULUI alocat pentru placa NodeMCU:
Acum trebuie să aflăm portul alocat pentru placa NodeMCU, pentru a face acest lucru, trebuie doar să accesați fereastra managerului dispozitivului și să căutați o opțiune numită Porturi, dacă extindeți, puteți afla portul asociat cu placa NodeMCU. Pentru noi, arată ca imaginea prezentată mai jos.
Ștergerea memoriei flash a ESP8266:
Acum am descoperit portul COM asociat, putem pregăti modulul NodeMCU ștergând memoria flash a acestuia. Pentru a face acest lucru, se utilizează următoarea comandă, esptool.py --port COM6 erase_flash . Procesul va arăta ceva asemănător cu imaginea de mai jos.
Instalarea firmware-ului:
Rularea următoarei comenzi va instala binarul MicroPython pe placa NodeMCU, odată instalat acest binar ne va permite să încărcăm programele noastre Python și să comunicăm cu bucla de citire evaluată și imprimare .
esptool.py --port COM6 --baud 460800 write_flash --flash_size = detect 0 esp8266-20200911-v1.13.bin
Procesul va arăta la fel ca imaginea de mai jos,
Vă rugăm să rețineți că la momentul instalării, binarul se afla pe desktopul meu, așa că am un cd pe desktopul meu și execut comanda.
Acum este gata, este timpul să comunicați cu placa și să clipiți câteva LED-uri.
Comunicarea cu NodeMCU cu PuTTY
Acum să începem primul nostru program Hello World folosind PuTTY, PuTTY pentru a face acest lucru, trebuie să setăm tipul de conexiune ca Serial, apoi setăm linia Serial (în cazul nostru COM6) și, în cele din urmă, setăm Viteza la 115200 baud.
Dacă totul este făcut corect, va apărea o fereastră similară cu imaginea de mai jos și putem scrie cu ușurință codul nostru în ea, de obicei funcționează ca un terminal iPython. De asemenea, am rulat primul nostru program Hello World, care este doar două linii simple și, odată ce am pus declarația noastră tipărită, am primit răspunsul nostru.
Încărcarea unui cod de clipire LED bazat pe Python folosind Ampy
Accesarea MicroPython cu ajutorul terminalului PuTTY este o modalitate bună de a comunica cu modulul ESP, dar un alt mod ușor este de a încărca codul prin intermediul instrumentului Adafruit Ampy, pentru a instala ampy, putem rula doar un simplu pip3 instalați adafruit- ampy și va instala ampy pe computerul nostru. Procesul va arăta ceva asemănător cu imaginea de mai jos.
Acum, odată ce aveți acest lucru, avem încă nevoie de informațiile noastre despre portul serial la care suntem conectați. În cazul nostru, este COM6. Acum trebuie doar să scriem codul nostru LED Blink cu MicroPython, pentru asta am folosit ghidul furnizat pe site-ul oficial al micro python
Cu ajutorul ghidului, se face următorul cod.
de la importul mașinii Pin de la importul de timp LED sleep = Pin (2, Pin.OUT) în timp ce True: LED.value (nu LED.value ()) sleep (0,5)
Codul este foarte simplu. În primul rând, importăm biblioteca Pin de pe aparat. Clasa PIN. Apoi, trebuie să importăm biblioteca de timp, care este utilizată pentru a face o funcție de întârziere. Apoi, setăm Pin2 (care este LED-ul integrat atașat modulului ESP12E) ca ieșire. Apoi, configurăm o buclă de timp în care aprindem și oprim LED-ul cu o întârziere de 500 ms.
Așa încărcați codul pe NodeMCU. Pentru a face acest lucru, trebuie să executați următoarea comandă ampy , ampy --port COM6 pune main.py
Dacă programul este executat corectat, veți vedea un LED care clipește așa cum se arată mai jos.
Notă: În timpul încărcării codului, am setat locația curentă a promptului pe desktopul meu, așa că nu a fost nevoie să specific o cale completă pentru fișierul main.py dacă nu este cazul, trebuie să specificați calea completă pentru principalul dvs. fișier.py.
Apoi, trecem la obținerea datelor de temperatură și umiditate de la senzorul DHT22.
MicroPython pe ESP8266: Obținerea temperaturii și umidității cu DHT22
Schema pentru interfața DHT22 cu NodeMCU:
Schema completă a circuitului pentru acest proiect poate fi găsită mai jos. Am folosit fritzing pentru a crea acest circuit.
După cum puteți vedea, circuitul este foarte simplu și poate fi construit cu ușurință pe o placă de calcul folosind fire jumper. Circuitul complet poate fi alimentat folosind portul micro-USB de pe NodeMCU. Configurarea hardware-ului meu este prezentată mai jos.
Cod:
Este foarte ușor să obțineți datele de temperatură și umiditate de la un senzor DHT22 sau DHT11 folosind un MicroPython, deoarece firmware-ul MicroPython pe care l-am instalat anterior vine cu o bibliotecă DHT încorporată.
1. Ne începem codul prin importarea bibliotecii DHT și a bibliotecii pin din clasa de mașini.
import dht din pinul de import al mașinii
2. Apoi, creăm un obiect DHT care se referă la pinul, în care am atașat senzorul nostru.
senzor = dht.DHT22 (Pin (14))
3. În cele din urmă, pentru a măsura valoarea senzorului, trebuie să folosim următoarele trei comenzi.
senzor.măsură () senzor.temperatură () senzor.umiditate ()
Pentru codul final, îl punem într-o buclă de timp și imprimăm valorile care marchează sfârșitul codului nostru. De asemenea, senzorul DHT22 are nevoie de 2 secunde înainte de a putea citi orice date, așa că trebuie să adăugăm o întârziere de 2 secunde.
din importul mașinii Pin din timp import somn import dht dht22 = dht.DHT22 (Pin (14)) în timp ce True: încercați: sleep (2) dht22.measure () temp = dht22.temperature () hum = dht22.humidity () print („Temperatură:% 3.2f C”% temp) tipărire („Umiditate:% 3.2f %%”% zumzet) cu excepția OSError ca e: print („Nu s-au citit datele de la senzorul DHT22.”)
Odată ce am terminat codarea, putem încărca codul cu ajutorul comenzii ampy.
ampy --port COM6 pune main.py
După executarea cu succes a codului, puteți monitoriza valorile de temperatură și umiditate pe orice monitor serial. Am folosit chit și, după cum puteți vedea mai jos, am putut primi valori de temperatură și umiditate pe COM5.
Sper că ți-a plăcut articolul și ai învățat ceva util. Dacă aveți întrebări, le puteți lăsa în secțiunea de comentarii de mai jos sau puteți folosi forumurile noastre pentru a posta alte întrebări tehnice.