- Wat is MicroPython?
- Waarom MicroPython voor NodeMCU?
- Wat is een ESP8266 (NodeMCU)?
- Gebruikte hardware
- De MicroPython-firmware voor ESP8266 installeren
- Communiceren met de NodeMCU met PuTTY
- Een op Python gebaseerde LED-knippercode uploaden met Ampy
- MicroPython op ESP8266: temperatuur en vochtigheid verkrijgen met DHT22
Voor een beginner die geïnteresseerd is in het programmeren van Wi-Fi-compatibele microcontrollers zoals de ESP8266, kan het begrijpen van de ESP-IDF-programmeeromgeving of de Arduino IDE een ontmoedigende taak zijn, de cryptische syntaxis van C- en C ++ -talen vereist meer kennis van informatica, wat waarom die talen niet altijd vriendelijk zijn voor beginners, dus in dit artikel zullen we leren om een ESP8266 in te stellen en te programmeren met MicroPython, en tot slot krijgen we de temperatuur- en vochtigheidsgegevens van onze favoriete DHT22-temperatuur- en vochtigheidssensor. Eerder hebben we ook een tutorial gemaakt over het programmeren van ESP32 met Micro Python, je kunt dat ook bekijken als je geïnteresseerd bent.
Wat is MicroPython?
We kunnen zeggen dat MicroPython een in blokjes gesneden versie van python is, ontworpen om te werken met microcontrollers en embedded systemen. De syntaxis en het coderingsproces van MicroPython lijkt op python. Dus als je Python al kent, weet je al hoe je je code moet schrijven met MicroPython. Als je een Python-fan bent, kun je dit artikel raadplegen.
MicroPython is ontwikkeld in het VK, door een team onder leiding van Damion Jones, en ze lanceerden toen een Kickstarter, waar ze een bepaalde set ontwikkelborden lanceerden waarop firmware zou worden uitgevoerd, waarmee je MicroPython erop kunt draaien, dat firmware is nu geport om op de ESP8266 te draaien, wat u in dit artikel zult leren.
Waarom MicroPython voor NodeMCU?
Python is tot op heden een van de meest gebruikte en gemakkelijk te leren programmeertalen. Dus met de introductie van MicroPython werd het programmeren van op hardware gebaseerde microcontrollers heel eenvoudig. Als je nog nooit een microcontroller hebt geprogrammeerd en je wilt beginnen met leren programmeren, dan is MicroPython een goed begin.
MicroPython gebruikt een uitgeklede versie van de standaardbibliotheken van Python, dus niet alle standaardbibliotheken zijn beschikbaar. Maar MicroPython bevat wel eenvoudige en gemakkelijk te gebruiken modules om te communiceren met de hardware, wat betekent dat met behulp van MicroPython het lezen en schrijven naar een GPIO-register nu veel eenvoudiger is geworden.
Het uiteindelijke doel van MicroPython is om het programmeren van microcontrollers zo eenvoudig mogelijk te maken, zodat het door iedereen kan worden gebruikt. Met MicroPython wordt het importeren van bibliotheken en het schrijven van code eenvoudig, de onderstaande code is een eenvoudig voorbeeld dat de ingebouwde LED van het NodeMCU-bord laat knipperen, we zullen de code in detail bespreken na het artikel.
van machine import Pin van tijd import slaap-LED = Pin (2, Pin.OUT) while True: LED.value (niet LED.value ()) sleep (0.5)
Wat is een ESP8266 (NodeMCU)?
De ESP8266 is een goedkope Wi-Fi-module, ontworpen voor aan het Internet of Things (IoT) gerelateerde toepassingen.
Het wordt geleverd met algemene invoer- en uitvoerpinnen (GPIO's) en ondersteunt ook een verscheidenheid aan veelgebruikte protocollen zoals SPI, I2C, UART en meer. Maar de coolste eigenschap van deze microcontroller is dat hij ingebouwde Wi-Fi heeft. Hiermee kunnen we heel gemakkelijk verbinding maken met elke 2,4 GHz wifi.
Nu de basis uit de weg is, kunnen we door naar het praktische gedeelte waar we u de vereiste hardware laten zien, en het proces van het installeren van MicroPython op de ESP8266 IC.
Gebruikte hardware
Lijst met gebruikte materialen
- 1 x Breadboard
- 1 x ESP8266 (NodeMCU)
- 1 x DHT22 (temperatuur- en vochtigheidssensor)
- 1 x 3 mm LED (lichtgevende diode)
- 1 x 1K weerstand
- 5 x verbindingsdraad
De MicroPython-firmware voor ESP8266 installeren
In dit artikel bestaan er twee manieren om de MicroPython-firmware op de ESP8266 te installeren. We zullen het over beide hebben, maar eerst moeten we het downloaden.
De MicroPython-firmware voor ESP8266 downloaden:
Voordat we het NodeMCU (ESP8266) -bord op onze pc aansluiten, moeten we de nieuwste versie van MicroPython downloaden, daarna kunnen we de firmware op de NodeMCU installeren, je kunt het downloaden van de officiële Micropython-downloadpagina
De MicroPython-firmware installeren op ESP8266:
Voordat we de firmware op de ESP8266 kunnen installeren, moeten we ervoor zorgen dat we de juiste schijf hebben voor de USB-naar-seriële converter. stuurprogramma voor de CP2102 USB naar UART-converter, Nadat de schijf is gedownload en geïnstalleerd, moeten we de esptool downloaden, een op python gebaseerde tool die is gemaakt om de firmware op ESP8266 te lezen en te schrijven.
De gemakkelijkste manier om Python te krijgen, is via de Microsoft Store, van daaruit moet je een kopie van Python downloaden en installeren. Zodra Python is geïnstalleerd, kunnen we de opdracht pip3 install esptool gebruiken om de esptool te installeren. Het proces ziet er ongeveer zo uit als de onderstaande afbeelding.
Controleer na installatie of u esptool opent vanaf de opdrachtterminal.
Om dit te doen, voert u gewoon de opdracht uit, esptool.py version. Als u een venster zoals een afbeelding hieronder krijgt, hebt u met succes esptool op uw Windows-pc geïnstalleerd.
En als u problemen ondervindt bij het openen van esptool vanuit het opdrachtvenster, probeer dan het volledige installatiepad toe te voegen aan de windows omgevingsvariabele.
De poort vinden die is toegewezen aan het NodeMCU-bord:
Nu moeten we de toegewezen poort voor het NodeMCU-bord achterhalen, om dat te doen, ga je gewoon naar je apparaatbeheervenster en zoek je naar een optie genaamd Poorten als je uitbreidt, zodat je de poort kunt achterhalen die is gekoppeld aan het NodeMCU-bord. Voor ons lijkt het op de onderstaande afbeelding.
Het flashgeheugen van de ESP8266 wissen:
Nu we de bijbehorende COM-poort hebben gevonden, kunnen we de NodeMCU-module voorbereiden door het flash-geheugen ervan te wissen. Om dit te doen, wordt het volgende commando gebruikt, esptool.py --port COM6 erase_flash . Het proces ziet er ongeveer zo uit als in de onderstaande afbeelding.
De firmware installeren:
Als u de volgende opdracht uitvoert, wordt het MicroPython-binaire bestand op het NodeMCU-bord geïnstalleerd. Zodra dit binaire bestand is geïnstalleerd, kunnen we onze Python-programma's uploaden en communiceren met de Read Evaluate and Print- lus.
esptool.py --port COM6 --baud 460800 write_flash --flash_size = detect 0 esp8266-20200911-v1.13.bin
Het proces ziet er hetzelfde uit op de onderstaande afbeelding,
Houd er rekening mee dat op het moment van de installatie het binaire bestand op mijn bureaublad stond, dus ik heb een cd naar mijn bureaublad en voer de opdracht uit.
Nu dat is gebeurd, is het tijd om met het bord te communiceren en enkele LED's te laten knipperen.
Communiceren met de NodeMCU met PuTTY
Laten we nu ons eerste Hello World-programma starten door PuTTY, PuTTY te gebruiken om dit te doen, we moeten het verbindingstype instellen op Serieel, vervolgens stellen we de seriële lijn in (in ons geval is dit COM6) en tot slot stellen we de snelheid in op 115200 baud.
Als alles correct is gedaan, verschijnt er een venster dat lijkt op de onderstaande afbeelding en kunnen we er gemakkelijk onze code in schrijven, het werkt meestal als een iPython-terminal. We hebben ook ons eerste Hello World-programma uitgevoerd, dat slechts uit twee eenvoudige regels bestaat, en zodra we onze gedrukte verklaring hebben geplaatst, kregen we onze reactie.
Een op Python gebaseerde LED-knippercode uploaden met Ampy
Toegang tot MicroPython met behulp van de PuTTY-terminal is een goede manier om te communiceren met de ESP-module, maar een andere gemakkelijke manier is om de code te uploaden is via de Adafruit Ampy-tool, om ampy te installeren, kunnen we gewoon een eenvoudige pip3-installatie uitvoeren. ampy- opdracht en het zal ampy op onze pc installeren. Het proces ziet er ongeveer zo uit als in de onderstaande afbeelding.
Als u dit eenmaal heeft, hebben we nog steeds onze informatie nodig over de seriële poort waarmee we zijn verbonden. In ons geval is dit COM6. Nu hoeven we alleen maar onze LED Blink-code met MicroPython te schrijven, daarvoor hebben we de gids op de officiële micro python-website gebruikt
Met behulp van de gids wordt de volgende code gemaakt.
van machine import Pin van tijd import slaap-LED = Pin (2, Pin.OUT) while True: LED.value (niet LED.value ()) sleep (0.5)
De code is heel simpel. Eerst importeren we de pin-bibliotheek van de machine. Klasse vastzetten. Vervolgens moeten we de tijdbibliotheek importeren, die wordt gebruikt om een vertragingsfunctie te maken. Vervolgens stellen we Pin2 (dit is de ingebouwde LED die aan de ESP12E-module is bevestigd) in als uitvoer. Vervolgens zetten we een while-lus op waarin we de LED in- en uitschakelen met een vertraging van 500 ms.
Dat is hoe u de code uploadt naar NodeMCU. Om dat te doen, moet u de volgende ampy- opdracht uitvoeren, ampy --port COM6 zet main.py
Als het programma gecorrigeerd wordt uitgevoerd, ziet u een LED knipperen zoals hieronder weergegeven.
Opmerking: tijdens het uploaden van de code, heb ik mijn huidige promptlocatie ingesteld op mijn bureaublad, dus ik hoefde geen volledig pad op te geven voor het main.py-bestand als dat niet het geval is, moet je het volledige pad voor je main.py specificeren..py-bestand.
Vervolgens gaan we verder met het verkrijgen van onze temperatuur- en vochtigheidsgegevens van de DHT22-sensor.
MicroPython op ESP8266: temperatuur en vochtigheid verkrijgen met DHT22
Schema voor het koppelen van DHT22 met NodeMCU:
Het volledige schakelschema voor dit project vindt u hieronder. Ik heb fritzing gebruikt om dit circuit te maken.
Zoals je kunt zien, is het circuit heel eenvoudig en kan het gemakkelijk op een breadboard worden gebouwd met behulp van jumperdraden. Het volledige circuit kan worden gevoed via de micro-USB-poort op NodeMCU. Mijn hardware-configuratie wordt hieronder weergegeven.
Code:
Het is heel gemakkelijk om de temperatuur- en vochtigheidsgegevens van een DHT22- of DHT11-sensor te krijgen met behulp van een MicroPython, omdat de MicroPython-firmware die we eerder hebben geïnstalleerd, wordt geleverd met een ingebouwde DHT-bibliotheek.
1. We starten onze code door de DHT-bibliotheek en de pin-bibliotheek uit de machineklasse te importeren.
import dht van machine import Pin
2. Vervolgens maken we een DHT-object dat verwijst naar de pin waarin we onze sensor hebben bevestigd.
sensor = dht.DHT22 (Pin (14))
3. Ten slotte moeten we de volgende drie commando's gebruiken om de sensorwaarde te meten.
sensor.measure () sensor.temperature () sensor.humidity ()
Voor de laatste code plaatsen we deze in een while-lus met en drukken we de waarden af die het einde van onze code markeren. Ook heeft de DHT22-sensor 2 seconden nodig voordat hij gegevens kan lezen, dus we moeten een vertraging van 2 seconden toevoegen.
uit machine import Pin uit tijd import sleep import dht dht22 = dht.DHT22 (Pin (14)) while True: probeer: slaap (2) dht22.measure () temp = dht22.temperature () hum = dht22.humidity () print ('Temperatuur:% 3.2f C'% temp) print ('Vochtigheid:% 3.2f %%'% hum) behalve OSError als e: print ('Kan gegevens van de DHT22-sensor niet lezen.')
Als we klaar zijn met coderen, kunnen we de code uploaden met behulp van het ampy-commando.
ampy --port COM6 zet main.py
Nadat de code met succes is uitgevoerd, kunt u de temperatuur- en vochtigheidswaarden op elke seriële monitor controleren. Ik heb stopverf gebruikt en zoals je hieronder kunt zien, kon ik temperatuur- en vochtigheidswaarden ontvangen op COM5.
Ik hoop dat je het artikel leuk vond en iets nuttigs hebt geleerd. Als u vragen heeft, kunt u deze achterlaten in het commentaargedeelte hieronder of onze forums gebruiken om andere technische vragen te stellen.