- Vad är MicroPython?
- Varför MicroPython för NodeMCU?
- Vad är en ESP8266 (NodeMCU)?
- Hårdvara används
- Installera MicroPython-firmware för ESP8266
- Kommunicera med NodeMCU med PuTTY
- Ladda upp en Python-baserad LED-blinkningskod med Ampy
- MicroPython på ESP8266: Få temperatur och luftfuktighet med DHT22
För en nybörjare som är intresserad av att programmera Wi-Fi-aktiverade mikrokontroller som ESP8266 kan det vara en skrämmande uppgift att förstå ESP-IDF-programmeringsmiljön eller Arduino IDE, den kryptiska syntaxen för C- och C ++ -språk kräver mer kunskap om datavetenskap varför dessa språk inte alltid är vänliga för nybörjare, så i den här artikeln lär vi oss att ställa in och programmera en ESP8266 med MicroPython, och slutligen får vi temperatur- och fuktighetsdata från vår favorit DHT22 temperatur- och luftfuktighetssensor. Tidigare har vi också gjort en handledning om hur man programmerar ESP32 med Micro Python, du kan också kolla in det om du är intresserad.
Vad är MicroPython?
Vi kan säga att MicroPython är en uppdelad version av python, utformad för att fungera med mikrokontroller och inbäddade system. Syntaxen och kodningsprocessen för MicroPython liknar python. Så om du redan känner till python vet du redan hur du skriver din kod med MicroPython. Om du är ett Python-fan kan du kolla in den här artikeln.
MicroPython utvecklades i Storbritannien, av ett team ledt av Damion jones, och de lanserade en Kickstarter medan de var tillbaka, där de lanserade en viss uppsättning utvecklingskort som skulle köra firmware, vilket gör att du kan köra MicroPython ovanpå det, det firmware har nu portats ut för att köra på ESP8266, vilket i den här artikeln kommer du att lära dig.
Varför MicroPython för NodeMCU?
Python är ett av de mest använda och enkla att lära sig programmeringsspråk hittills. Så med introduktionen av MicroPython blev det mycket enkelt att programmera hårdvarubaserade mikrokontroller. Om du aldrig har programmerat en mikrokontroller förut och vill börja lära dig programmera är MicroPython en bra start.
MicroPython använder en avskalad version av Python-standardbibliotek, så alla standardbibliotek är inte tillgängliga. Men MicroPython innehåller enkla och lättanvända moduler för att gränssnitt med hårdvaran, vilket innebär att med hjälp av MicroPython har läsning och skrivning till ett GPIO-register precis blivit enklare.
Det ultimata målet med MicroPython är att göra programmering av mikrokontroller så enkelt som möjligt, så det kan användas av vem som helst. Med MicroPython blir det enkelt att importera bibliotek och skriva kod, koden som visas nedan är ett enkelt exempel som blinkar den inbyggda lysdioden på NodeMCU-kortet, vi kommer att diskutera koden i detalj efter artikeln.
från maskinimport Stift från tidsimport sleep-LED = Pin (2, Pin.OUT) medan True: LED.value (inte LED.value ()) sleep (0.5)
Vad är en ESP8266 (NodeMCU)?
ESP8266 är en billig Wi-Fi-modul, designad för IoT-relaterade applikationer.
Den levereras med allmänna ingångs- och utgångsstift (GPIO) och den stöder också en mängd vanliga protokoll som SPI, I2C, UART och mer. Men den coolaste funktionen hos denna mikrokontroller är att den har inbyggt Wi-Fi. Med det kan vi enkelt ansluta till vilket 2,4 GHz Wi-Fi som helst.
Nu är grunderna ur vägen för att vi kan gå vidare till den praktiska delen där vi visar dig erforderlig hårdvara och processen att installera MicroPython på ESP8266 IC.
Hårdvara används
Lista över använda material
- 1 x brödbräda
- 1 x ESP8266 (NodeMCU)
- 1 x DHT22 (temperatur- och luftfuktighetssensor)
- 1 x 3 mm LED (ljusdiod)
- 1 x 1K motstånd
- 5 x bygeltråd
Installera MicroPython-firmware för ESP8266
Det finns två sätt att installera MicroPython-firmware på ESP8266 i den här artikeln. Vi kommer att prata om dem båda, men först måste vi ladda ner den.
Nedladdning av MicroPython-firmware för ESP8266:
Innan vi ansluter NodeMCU (ESP8266) -kortet till vår dator måste vi ladda ner den senaste versionen av MicroPython efter det att vi kan installera firmware på NodeMCU, du kan ladda ner den från den officiella Micropython-nedladdningssidan
Installera MicroPython-firmware på ESP8266:
Innan vi kan installera firmware på ESP8266 måste vi se till att vi har rätt enhet för USB till Serial Converter, de flesta av NodeMCU-kortet använder en CP2102 USB till UART-omvandlare IC, varför vi behöver ladda ner och installera drivrutin för CP2102 USB till UART-omvandlare. När enheten har laddats ner och installerats måste vi ladda ner esptool, som är ett pythonbaserat verktyg som görs för att läsa och skriva firmware på ESP8266.
Det enklaste sättet att få Python är via Microsoft Store, därifrån måste du ladda ner och installera en kopia av Python. När Python har installerats kan vi använda kommandot pip3 install esptool för att installera esptool. Processen kommer att se ut ungefär som bilden nedan.
När du är installerad, kontrollera om du kommer åt esptool från kommandoterminalen.
För att göra det, kör bara kommandot, esptool.py-versionen om du får ett fönster som en bild nedan har du framgångsrikt installerat esptool på din Windows-dator.
Och om du har problem med att komma åt esptool från kommandofönstret, försök lägga till hela installationsvägen till Windows-miljövariabeln.
Hitta den hamn som tilldelats NodeMCU-styrelsen:
Nu måste vi ta reda på den tilldelade porten för NodeMCU-kortet, för att göra det går du bara in i fönstret för enhetshanteraren och letar efter ett alternativ som heter Portar om du expanderar så att du kan ta reda på porten som är associerad med NodeMCU-kortet. För oss ser det ut som bilden nedan.
Radera flashminnet på ESP8266:
Nu har vi räknat ut den associerade COM-porten, vi kan förbereda NodeMCU-modulen genom att radera flashminnet i den. För att göra detta används följande kommando, esptool.py --port COM6 erase_flash . Processen kommer att se ut ungefär som bilden nedan.
Installera firmware:
Genom att köra följande kommando installeras MicroPython-binären på NodeMCU-kortet, när den här installationen är installerad kan vi ladda upp våra pythonprogram och kommunicera med läsutvärderings- och utskriftsslingan .
esptool.py --port COM6 --baud 460800 write_flash --flash_size = upptäcka 0 esp8266-20200911-v1.13.bin
Processen kommer att se ut som bilden nedan,
Observera att vid installationen fanns det binära på mitt skrivbord så jag har en cd till mitt skrivbord och kör kommandot.
Nu är det klart, det är dags att kommunicera med styrelsen och blinka några lysdioder.
Kommunicera med NodeMCU med PuTTY
Låt oss nu börja vårt första Hello World-program genom att använda PuTTY, PuTTY för att göra det, vi måste ställa in anslutningstypen som Serial, nästa ställer vi in Serial-linjen (i vårt fall är dess COM6) och slutligen sätter vi hastigheten till 115200 baud.
Om allt görs korrekt visas ett fönster som liknar bilden nedan, och vi kan enkelt skriva in vår kod i den, det fungerar vanligtvis som en iPython-terminal. Vi har också kört vårt första hejvärldsprogram som bara består av två enkla rader, och när vi har lagt ut vårt tryckuttalande fick vi vårt svar.
Ladda upp en Python-baserad LED-blinkningskod med Ampy
Åtkomst till MicroPython med hjälp av PuTTY-terminalen är ett bra sätt att kommunicera med ESP-modulen, men ett annat enkelt sätt är att ladda upp koden är via Adafruit Ampy-verktyget, för att installera ampy kan vi bara köra en enkel pip3-installation adafruit- ampy- kommandot och det kommer att installera ampy på vår dator. Processen kommer att se ut ungefär som bilden nedan.
När du väl har det här behöver vi fortfarande vår information om den seriella porten som vi är anslutna till. I vårt fall är det COM6. Nu behöver vi bara skriva vår LED Blink-kod med MicroPython, för det har vi använt guiden som tillhandahålls på den officiella micro python-webbplatsen
Med hjälp av guiden skapas följande kod.
från maskinimport Stift från tidsimport sleep-LED = Pin (2, Pin.OUT) medan True: LED.value (inte LED.value ()) sleep (0.5)
Koden är väldigt enkel. Först importerar vi Pin-biblioteket från maskinen. Pin-klass. Därefter måste vi importera tidsbiblioteket, som används för att göra en fördröjningsfunktion. Därefter ställer vi in Pin2 (som är den inbyggda lysdioden ansluten till ESP12E-modulen) som utgång. Därefter ställer vi in en stundslinga där vi slår på och av lysdioden med en fördröjning på 500 ms.
Det är så du laddar upp koden till NodeMCU. För att göra det måste du köra följande ampy- kommando, ampy --port COM6 sätt main.py
Om programmet korrigeras körs en LED blinka som visas nedan.
Obs: När jag laddade upp koden ställde jag in min nuvarande plats för mitt skrivbord, så jag behövde inte ange en fullständig sökväg för main.py-filen om det inte är fallet för du måste ange hela sökvägen för din huvud.py-fil.
Därefter går vi vidare till att få våra temperatur- och luftfuktighetsdata från DHT22-sensorn.
MicroPython på ESP8266: Få temperatur och luftfuktighet med DHT22
Schema för gränssnitt mellan DHT22 och NodeMCU:
Det fullständiga kretsschemat för detta projekt finns nedan. Jag har använt fritzing för att skapa den här kretsen.
Som du kan se är kretsen väldigt enkel och kan enkelt byggas på en bräda med hjälp av bygeln. Hela kretsen kan drivas med mikro-USB-porten på NodeMCU. Min hårdvaruuppsättning visas nedan.
Koda:
Det är väldigt enkelt att hämta temperatur- och luftfuktighetsdata från en DHT22- eller DHT11-sensor med hjälp av en MicroPython eftersom MicroPython-firmware vi installerade tidigare har ett inbyggt DHT-bibliotek.
1. Vi startar vår kod genom att importera DHT-biblioteket och stiftbiblioteket från maskinklassen.
importera dht från maskinens importstift
2. Därefter skapar vi ett DHT-objekt som hänvisar till stiftet, i vilket vi fäste vår sensor.
sensor = dht.DHT22 (stift (14))
3. Slutligen måste vi använda följande tre kommandon för att mäta sensorvärdet.
sensor.measure () sensor.temperature () sensor.humidity ()
För den slutliga koden lägger vi den i en stund-slinga med och skriver ut de värden som markerar slutet på vår kod. Dessutom behöver DHT22-sensorn 2 sekunder innan den kan läsa data så vi måste lägga till en fördröjning på 2 sekunder.
från maskinimport Stift från tidsimport sömnimport dht dht22 = dht.DHT22 (Pin (14)) medan True: prova: sleep (2) dht22.measure () temp = dht22.temperature () hum = dht22.humidity () print ('Temperatur:% 3.2f C'% temp) utskrift ('Luftfuktighet:% 3.2f %%'% hum) utom OSError som e: print ('Det gick inte att läsa data från DHT22-sensorn.')
När kodningen är klar kan vi ladda upp koden med hjälp av ampy-kommandot.
ampy --port COM6 sätt main.py
Efter att ha kört koden framgångsrikt kan du övervaka temperatur och fuktighetsvärden på vilken seriell bildskärm som helst. Jag har använt kitt och som du kan se nedan kunde jag få temperatur- och luftfuktighetsvärden på COM5.
Hoppas du gillade artikeln och lärde dig något användbart. Om du har några frågor kan du lämna dem i kommentarfältet nedan eller använda våra forum för att skicka andra tekniska frågor.