- Hva er MicroPython?
- Hvorfor MicroPython for NodeMCU?
- Hva er en ESP8266 (NodeMCU)?
- Maskinvare brukt
- Installere MicroPython-firmware for ESP8266
- Kommunisere med NodeMCU med PuTTY
- Laste opp en Python-basert LED-blinkkode ved hjelp av Ampy
- MicroPython på ESP8266: Få temperatur og fuktighet med DHT22
For en nybegynner som er interessert i å programmere Wi-Fi-aktiverte mikrokontrollere som ESP8266, kan forståelse av ESP-IDF-programmeringsmiljøet eller Arduino IDE være en skremmende oppgave, den kryptiske syntaksen til C og C ++ språk krever mer kunnskap om datavitenskap som er hvorfor disse språkene ikke alltid er vennlige for nybegynnere, så i denne artikkelen vil vi lære å sette opp og programmere en ESP8266 med MicroPython, og til slutt vil vi få data om temperatur og fuktighet fra vår favoritt DHT22 temperatur- og fuktighetssensor. Tidligere har vi også laget en veiledning om hvordan du programmerer ESP32 med Micro Python, du kan også sjekke det ut hvis du er interessert.
Hva er MicroPython?
Vi kan si at MicroPython er en oppdelt versjon av python, designet for å fungere med mikrokontrollere og innebygde systemer. Syntaksen og kodingsprosessen til MicroPython ligner python. Så hvis du allerede kjenner til python, vet du allerede hvordan du skal skrive koden din ved hjelp av MicroPython. Hvis du er en Python-fan, kan du sjekke denne artikkelen.
MicroPython ble utviklet i Storbritannia, av et team ledet av Damion jones, og de lanserte en Kickstarter mens de var tilbake, der de lanserte et bestemt sett med utviklingskort som skulle kjøre firmware, som lar deg kjøre MicroPython på toppen av det, at firmware har nå blitt portet for å kjøre på ESP8266, som du vil lære i denne artikkelen.
Hvorfor MicroPython for NodeMCU?
Python er et av de mest brukte og enkle å lære programmeringsspråk til dags dato. Så med introduksjonen av MicroPython ble det veldig enkelt å programmere maskinvarebaserte mikrokontrollere. Hvis du aldri har programmert en mikrokontroller før og vil begynne å lære å programmere, er MicroPython en god start.
MicroPython bruker en strippet ned versjon av Python-standardbiblioteker, så alle standardbibliotekene er ikke tilgjengelige. Men MicroPython inkluderer enkle og brukervennlige moduler for å grensesnitt med maskinvaren, noe som betyr at det ved hjelp av MicroPython bare ble enklere å lese og skrive til et GPIO-register.
Det endelige målet med MicroPython er å gjøre programmering av mikrokontrollere så enkle som mulig, så den kan brukes av alle. Med MicroPython blir det enkelt å importere biblioteker og skrive kode. Koden vist nedenfor er et enkelt eksempel som blinker den innebygde LED-en på NodeMCU-kortet, vi vil diskutere koden i detalj etter artikkelen.
fra maskinimport Pin fra tid import sleep LED = Pin (2, Pin.OUT) mens True: LED.value (ikke LED.value ()) sleep (0.5)
Hva er en ESP8266 (NodeMCU)?
ESP8266 er en billig Wi-Fi-modul, designet for Internet of Things (IoT) -relaterte applikasjoner.
Den leveres med generelle inngangs- og utgangspinner (GPIOer), og den støtter også en rekke ofte brukte protokoller som SPI, I2C, UART og mer. Men den kuleste funksjonen til denne mikrokontrolleren er at den har innebygd Wi-Fi. Med den kan vi koble til hvilken som helst 2,4 GHz Wi-Fi veldig enkelt.
Nå er det grunnleggende ute av veien vi kan gå videre til den praktiske delen der vi viser deg den nødvendige maskinvaren, og prosessen med å installere MicroPython på ESP8266 IC.
Maskinvare brukt
Liste over brukte materialer
- 1 x brødbrett
- 1 x ESP8266 (NodeMCU)
- 1 x DHT22 (temperatur- og fuktighetssensor)
- 1 x 3 mm LED (lysdiode)
- 1 x 1K motstand
- 5 x Jumper Wire
Installere MicroPython-firmware for ESP8266
Det finnes to måter å installere MicroPython-fastvaren på ESP8266 i denne artikkelen. Vi vil snakke om dem begge, men først må vi laste den ned.
Laste ned MicroPython-firmware for ESP8266:
Før vi kobler NodeMCU (ESP8266) -kortet til PC-en vår, må vi laste ned den nyeste versjonen av MicroPython etter at vi kan installere fastvaren på NodeMCU, du kan laste den ned fra den offisielle Micropython-nedlastingssiden
Installere MicroPython-firmware på ESP8266:
Før vi kan installere firmwaren på ESP8266, må vi sørge for at vi har riktig stasjon for USB til seriell omformer. Det meste av NodeMCU-kortet bruker en CP2102 USB til UART-omformer IC, og det er derfor vi trenger å laste ned og installere driver for CP2102 USB til UART-omformeren. Når stasjonen er lastet ned og installert, må vi laste ned esptool, som er et pythonbasert verktøy laget for å lese og skrive firmwaren på ESP8266.
Den enkleste måten å få Python på er via Microsoft Store, derfra må du laste ned og installere en kopi av Python. Når Python er installert, kan vi bruke kommandoen pip3 install esptool for å installere esptool. Prosessen vil se ut som noe som ligner på bildet nedenfor.
Når du er installert, sjekk om du får tilgang til esptool fra kommandoterminalen.
For å gjøre det, bare kjør kommandoen, esptool.py-versjonen hvis du får et vindu som et bilde nedenfor, har du vellykket installert esptool på din Windows-PC.
Og hvis du har problemer med å få tilgang til esptool fra kommandovinduet, kan du prøve å legge til hele installasjonsstien til Windows-miljøvariabelen.
Finne den PORT som er tildelt NodeMCU Board:
Nå må vi finne ut den tildelte porten for NodeMCU-kortet, for å gjøre det bare gå inn i enhetsadministrasjonsvinduet og se etter et alternativ som heter Ports hvis du utvider at du kan finne ut porten som er tilknyttet NodeMCU-kortet. For oss ser det ut som bildet vist nedenfor.
Slette flashminnet til ESP8266:
Nå har vi funnet ut den tilknyttede COM-porten, vi kan forberede NodeMCU-modulen ved å slette flashminnet til den. For å gjøre dette brukes følgende kommando, esptool.py --port COM6 erase_flash . Prosessen vil se ut som bildet nedenfor.
Installere fastvaren:
Å kjøre følgende kommando vil installere MicroPython-binæren på NodeMCU-kortet, når denne binæren er installert, kan vi laste opp pythonprogrammene våre og kommunisere med leseevaluerings- og utskriftssløyfen .
esptool.py --port COM6 --baud 460800 write_flash --flash_size = oppdage 0 esp8266-20200911-v1.13.bin
Prosessen vil se ut som bildet nedenfor,
Vær oppmerksom på at binærbildet var på skrivebordet mitt på tidspunktet for installasjonen, så jeg har en cd til skrivebordet mitt og kjører kommandoen.
Nå er det gjort, det er på tide å kommunisere med styret og blinke noen lysdioder.
Kommunisere med NodeMCU med PuTTY
La oss nå starte vårt første Hello World-program ved å bruke PuTTY, PuTTY for å gjøre det, vi må sette tilkoblingstypen som Serial, deretter setter vi Seriellinjen (I vårt tilfelle COM6), og til slutt setter vi hastigheten til 115200 baud.
Hvis alt er gjort riktig, vises et vindu som ligner på bildet nedenfor, og vi kan enkelt skrive koden vår inn i den, den fungerer vanligvis som en iPython-terminal. Vi har også kjørt vårt første hei-verdensprogram som bare er to enkle linjer, og når vi har lagt utskriftutskriften, fikk vi svar.
Laste opp en Python-basert LED-blinkkode ved hjelp av Ampy
Å få tilgang til MicroPython ved hjelp av PuTTY-terminalen er en god måte å kommunisere med ESP-modulen, men en annen enkel måte er å laste opp koden er via Adafruit Ampy-verktøyet, for å installere ampy, kan vi bare kjøre en enkel pip3 installere adafruit- ampy- kommandoen, og den vil installere ampy på PC-en vår. Prosessen vil se ut som bildet nedenfor.
Når du først har dette, trenger vi fortsatt informasjon om den serielle porten som vi er koblet til. I vårt tilfelle er det COM6. Nå trenger vi bare å skrive vår LED Blink-kode med MicroPython, for det har vi brukt guiden som er gitt på det offisielle micro python-nettstedet
Ved hjelp av guiden blir følgende kode laget.
fra maskinimport Pin fra tid import sleep LED = Pin (2, Pin.OUT) mens True: LED.value (ikke LED.value ()) sleep (0.5)
Koden er veldig enkel. Først importerer vi Pin-biblioteket fra maskinen. Pin-klasse. Deretter må vi importere tidsbiblioteket, som brukes til å lage en forsinkelsesfunksjon. Deretter setter vi Pin2 (som er den innebygde LED-en som er koblet til ESP12E-modulen) som utgang. Deretter setter vi opp en stundsløyfe der vi slår LED-lampen på og av med en forsinkelse på 500 ms.
Slik laster du opp koden på NodeMCU. For å gjøre det, må du kjøre følgende ampy- kommando, ampy --port COM6 sette main.py
Hvis programmet blir utført korrigert, vil du se en LED som blinker som vist nedenfor.
Merk: Mens jeg lastet opp koden, satte jeg min nåværende ledelsesplassering til skrivebordet mitt, så jeg trengte ikke å spesifisere en full bane for main.py-filen hvis det ikke er tilfelle for deg, du må spesifisere hele banen for din hoved.py-fil.
Deretter går vi videre til å få data om temperatur og fuktighet fra DHT22-sensoren.
MicroPython på ESP8266: Få temperatur og fuktighet med DHT22
Skjema for grensesnitt DHT22 med NodeMCU:
Det komplette kretsskjemaet for dette prosjektet finner du nedenfor. Jeg har brukt fritzing for å lage denne kretsen.
Som du ser er kretsen veldig enkel og kan enkelt bygges på et brødbrett ved hjelp av hoppetråder. Hele kretsen kan drives av mikro-USB-porten på NodeMCU. Min maskinvareoppsett er vist nedenfor.
Kode:
Det er veldig enkelt å hente temperatur- og fuktighetsdataene fra en DHT22- eller DHT11-sensor ved hjelp av en MicroPython fordi MicroPython-fastvaren vi installerte tidligere, har et innebygd DHT-bibliotek.
1. Vi starter koden vår ved å importere DHT-biblioteket og pin-biblioteket fra maskinklassen.
importer dht fra maskinimport Pin
2. Deretter lager vi et DHT-objekt som refererer til pinnen der vi festet sensoren vår.
sensor = dht.DHT22 (Pin (14))
3. Til slutt, for å måle sensorverdien, må vi bruke følgende tre kommandoer.
sensor.measure () sensor.temperature () sensor.humidity ()
For den endelige koden, legger vi den i en periode med og skriver ut verdiene som markerer slutten på koden vår. DHT22-sensoren trenger også to sekunder før den kan lese data, så vi må legge til en forsinkelse på 2 sekunder.
fra maskinimport Pin fra tid importere sleep import dht dht22 = dht.DHT22 (Pin (14)) mens True: try: sleep (2) dht22.measure () temp = dht22.temperature () hum = dht22.humidity () print ('Temperatur:% 3.2f C'% temp) utskrift ('Fuktighet:% 3.2f %%'% hum) unntatt OSError som e: print ('Kunne ikke lese data fra DHT22-sensoren.')
Når vi er ferdig kodet, kan vi laste opp koden ved hjelp av ampy-kommandoen.
ampy --port COM6 sette main.py
Etter at du har kjørt koden, kan du overvåke temperatur- og fuktighetsverdiene på hvilken som helst seriell skjerm. Jeg har brukt kitt, og som du kan se nedenfor, klarte jeg å motta temperatur- og fuktighetsverdier på COM5.
Håper du likte artikkelen og lærte noe nyttig. Hvis du har spørsmål, kan du legge dem igjen i kommentarfeltet nedenfor eller bruke forumene våre til å legge ut andre tekniske spørsmål.