- Hvad er MicroPython?
- Hvorfor MicroPython til NodeMCU?
- Hvad er en ESP8266 (NodeMCU)?
- Brugt hardware
- Installation af MicroPython Firmware til ESP8266
- Kommunikation med NodeMCU med PuTTY
- Uploade en Python-baseret LED-blinkkode ved hjælp af Ampy
- MicroPython på ESP8266: Få temperatur og fugtighed med DHT22
For en nybegynder, der er interesseret i programmering af Wi-Fi-aktiverede mikrokontrollere som ESP8266, kan forståelse af ESP-IDF-programmeringsmiljøet eller Arduino IDE være en skræmmende opgave, den kryptiske syntaks af C- og C ++ -sprog kræver mere viden om datalogi hvorfor disse sprog ikke altid er venlige for begyndere, så i denne artikel lærer vi at opsætte og programmere en ESP8266 med MicroPython, og endelig får vi temperatur- og fugtighedsdata fra vores foretrukne DHT22 temperatur- og fugtighedsføler. Tidligere har vi også lavet en tutorial om, hvordan man programmerer ESP32 med Micro Python, du kan også tjekke det ud, hvis du er interesseret.
Hvad er MicroPython?
Vi kan sige, at MicroPython er en opskåret version af python, designet til at arbejde med mikrocontrollere og indlejrede systemer. Syntaks og kodningsprocessen for MicroPython ligner python. Så hvis du allerede kender python, ved du allerede, hvordan du skriver din kode ved hjælp af MicroPython. Hvis du er en Python-fan, kan du tjekke denne artikel.
MicroPython blev udviklet i Storbritannien af et team ledet af Damion jones, og de lancerede en Kickstarter, mens de var tilbage, hvor de lancerede et bestemt sæt udviklingskort, der kørte firmware, som giver dig mulighed for at køre MicroPython oven på det firmware er nu blevet portet til at køre på ESP8266, som i denne artikel vil du lære.
Hvorfor MicroPython til NodeMCU?
Python er et af de mest anvendte og nemme at lære programmeringssprog til dato. Så med introduktionen af MicroPython blev det meget let at programmere hardwarebaserede mikrokontroller. Hvis du aldrig har programmeret en mikrocontroller før og vil begynde at lære at programmere, er MicroPython en god start.
MicroPython bruger en fjernet version af Python-standardbiblioteker, så alle standardbibliotekerne er ikke tilgængelige. Men MicroPython inkluderer enkle og brugervenlige moduler til at grænseflade med hardwaren, hvilket betyder, at det ved hjælp af MicroPython er blevet lettere at læse og skrive til et GPIO-register.
Det ultimative mål med MicroPython er at gøre programmering af mikrocontrollere så enkle som muligt, så det kan bruges af alle. Med MicroPython bliver import af biblioteker og skrivning af kode let, koden vist nedenfor er et simpelt eksempel, der blinker den indbyggede LED på NodeMCU-kortet, vi vil diskutere koden detaljeret efter artiklen.
fra maskineimport Pin fra tidsimport sleep-LED = Pin (2, Pin.OUT) mens True: LED.value (ikke LED.value ()) sleep (0.5)
Hvad er en ESP8266 (NodeMCU)?
ESP8266 er et billig Wi-Fi-modul designet til Internet of Things (IoT) -relaterede applikationer.
Den leveres med generelle input- og output-pins (GPIO'er), og den understøtter også en række almindeligt anvendte protokoller som SPI, I2C, UART og mere. Men den sejeste funktion ved denne mikrocontroller er, at den har indbygget Wi-Fi. Med det kan vi oprette forbindelse til ethvert 2,4 GHz Wi-Fi meget let.
Nu er det grundlæggende ude af vejen, vi kan gå videre til den praktiske del, hvor vi viser dig den nødvendige hardware og processen med at installere MicroPython på ESP8266 IC.
Brugt hardware
Liste over anvendte materialer
- 1 x brødplade
- 1 x ESP8266 (NodeMCU)
- 1 x DHT22 (temperatur- og fugtighedssensor)
- 1 x 3 mm LED (lysdiode)
- 1 x 1K modstand
- 5 x Jumper Wire
Installation af MicroPython Firmware til ESP8266
Der findes to måder at installere MicroPython-firmwaren på ESP8266 i denne artikel. Vi vil tale om dem begge, men først skal vi downloade det.
Download af MicroPython Firmware til ESP8266:
Inden vi forbinder NodeMCU (ESP8266) -kortet til vores pc, skal vi downloade den nyeste version af MicroPython, efter at vi kan installere firmwaren på NodeMCU, du kan downloade den fra den officielle Micropython-downloadside
Installation af MicroPython-firmwaren på ESP8266:
Før vi kan installere firmwaren på ESP8266, skal vi sørge for, at vi har det rigtige drev til USB til seriel konverter, det meste af NodeMCU-kortet bruger en CP2102 USB til UART-konverter IC, hvorfor vi skal downloade og installere driver til CP2102 USB til UART-konverteren. Når drevet er downloadet og installeret, skal vi downloade esptool, som er et pythonbaseret værktøj lavet til at læse og skrive firmwaren på ESP8266.
Den nemmeste måde at få Python på er via Microsoft Store, derfra skal du downloade og installere en kopi af Python. Når Python er installeret, kan vi bruge pip3 install esptool- kommandoen til at installere esptool. Processen vil ligne noget som nedenstående billede.
Når det er installeret, skal du kontrollere, om du får adgang til esptool fra kommandoterminalen.
For at gøre det skal du bare køre kommandoen, esptool.py-versionen, hvis du får et vindue som et billede nedenfor, har du med succes installeret esptool på din Windows-pc.
Og hvis du har problemer med at få adgang til esptool fra kommandovinduet, skal du prøve at tilføje den fulde installationssti til windows-miljøvariablen.
Find den PORT, der er afsat til NodeMCU Board:
Nu er vi nødt til at finde ud af den tildelte port til NodeMCU-kortet, for at gøre det skal du bare gå ind i vinduet enhedsadministrator og kigge efter en mulighed kaldet Porte, hvis du udvider, at du kan finde ud af porten, der er knyttet til NodeMCU-kortet. For os ser det ud som billedet vist nedenfor.
Sletning af flashhukommelsen på ESP8266:
Nu har vi fundet ud af den tilknyttede COM-port, vi kan forberede NodeMCU-modulet ved at slette flashhukommelsen af det. For at gøre dette bruges følgende kommando, esptool.py --port COM6 erase_flash . Processen vil se ud som billedet nedenfor.
Installation af firmwaren:
Kørsel af følgende kommando installerer MicroPython-binær på NodeMCU-kortet, når denne binær er installeret, giver det os mulighed for at uploade vores pythonprogrammer og kommunikere med Læseevaluerings- og udskriftssløjfen .
esptool.py --port COM6 --baud 460800 write_flash --flash_size = detect 0 esp8266-20200911-v1.13.bin
Processen vil se ud som billedet nedenfor,
Vær opmærksom på at binæret var på mit skrivebord på installationstidspunktet, så jeg har en cd til mit skrivebord og kører kommandoen.
Nu er det gjort, det er tid til at kommunikere med tavlen og blinke nogle lysdioder.
Kommunikation med NodeMCU med PuTTY
Lad os nu starte vores første Hello World-program ved at bruge PuTTY, PuTTY til at gøre det, vi er nødt til at indstille forbindelsestypen som Serial, derefter indstiller vi Serielinjen (i vores tilfælde dens COM6), og til sidst indstiller vi hastigheden til 115200 baud.
Hvis alt er gjort korrekt, vises et vindue svarende til nedenstående billede, og vi kan nemt skrive vores kode ind i det, det fungerer normalt som en iPython-terminal. Vi har også kørt vores første hej-verdensprogram, der kun er to enkle linjer, og når vi først har fremsat vores udskriftserklæring, fik vi vores svar.
Uploade en Python-baseret LED-blinkkode ved hjælp af Ampy
Adgang til MicroPython ved hjælp af PuTTY-terminalen er en god måde at kommunikere med ESP-modulet, men en anden nem måde er at uploade koden er via Adafruit Ampy-værktøjet, at installere ampy, vi kan bare køre en simpel pip3-installation adafruit- ampy- kommando, og den installerer ampy på vores pc. Processen vil se ud som billedet nedenfor.
Når du først har dette, har vi stadig brug for vores oplysninger om den serielle port, som vi er tilsluttet. I vores tilfælde er det COM6. Nu skal vi bare skrive vores LED Blink-kode med MicroPython, for det har vi brugt guiden på det officielle micro python-websted
Ved hjælp af guiden oprettes følgende kode.
fra maskineimport Pin fra tidsimport sleep-LED = Pin (2, Pin.OUT) mens True: LED.value (ikke LED.value ()) sleep (0.5)
Koden er meget enkel. Først importerer vi Pin-biblioteket fra maskinen. Pin klasse. Dernæst skal vi importere tidsbiblioteket, som bruges til at lave en forsinkelsesfunktion. Dernæst indstiller vi Pin2 (som er den indbyggede LED, der er knyttet til ESP12E-modulet) som output. Dernæst opretter vi en stundsløjfe, hvor vi tænder og slukker for LED'en med en forsinkelse på 500 ms.
Sådan uploader du koden til NodeMCU. For at gøre det skal du køre følgende ampy- kommando, ampy --port COM6 sætte main.py
Hvis programmet bliver udført korrigeret, vil du se en LED blinker som vist nedenfor.
Bemærk: Mens jeg uploader koden, indstiller jeg min nuværende promptplacering til mit skrivebord, så jeg behøvede ikke at angive en fuld sti til main.py-filen, hvis det ikke er tilfældet, for du skal angive den fulde sti til din main.py-fil.
Dernæst fortsætter vi med at hente vores temperatur- og fugtighedsdata fra DHT22-sensoren.
MicroPython på ESP8266: Få temperatur og fugtighed med DHT22
Skematisk til grænseflade mellem DHT22 og NodeMCU:
Det komplette kredsløbsdiagram for dette projekt kan findes nedenfor. Jeg har brugt fritzing til at skabe dette kredsløb.
Som du kan se, er kredsløbet meget simpelt og kan let bygges på et brødbræt ved hjælp af jumpertråde. Det komplette kredsløb kan få strøm ved hjælp af mikro-USB-porten på NodeMCU. Min hardwareopsætning er vist nedenfor.
Kode:
Det er meget let at hente temperatur- og fugtighedsdataene fra en DHT22- eller DHT11-sensor ved hjælp af en MicroPython, fordi den MicroPython-firmware, vi installerede tidligere, leveres med et indbygget DHT-bibliotek.
1. Vi starter vores kode ved at importere DHT-biblioteket og pin-biblioteket fra maskinklassen.
import dht fra maskineimport Pin
2. Dernæst opretter vi et DHT-objekt, der refererer til stiften, hvor vi fastgør vores sensor.
sensor = DHT.DHT22 (Pin (14))
3. Endelig skal vi bruge følgende tre kommandoer til at måle sensorens værdi.
sensor.measure () sensor.temperature () sensor.humidity ()
For den endelige kode sætter vi den i et stykke løb med og udskriver de værdier, der markerer slutningen af vores kode. DHT22-sensoren har også brug for 2 sekunder, før den kan læse data, så vi skal tilføje en forsinkelse på 2 sekunder.
fra maskineimport Pin fra tid importeret sleep import dht dht22 = dht.DHT22 (Pin (14)) mens True: prøv: sleep (2) dht22.measure () temp = dht22.temperature () hum = dht22.humidity () print ('Temperatur:% 3.2f C'% temp) udskrivning ('Fugtighed:% 3.2f %%'% hum) undtagen OSError som e: print ('Kunne ikke læse data fra DHT22-sensoren.')
Når vi er færdige med at kode, kan vi uploade koden ved hjælp af ampy-kommandoen.
ampy --port COM6 sætte main.py
Når du har udført koden med succes, kan du overvåge temperatur- og fugtighedsværdierne på enhver seriel skærm. Jeg har brugt kitt, og som du kan se nedenfor, kunne jeg modtage temperatur- og fugtighedsværdier på COM5.
Håber du nød artiklen og lærte noget nyttigt. Hvis du har spørgsmål, kan du lade dem være i kommentarfeltet nedenfor eller bruge vores fora til at stille andre tekniske spørgsmål.