- Was ist MicroPython?
- Warum MicroPython für NodeMCU?
- Was ist ein ESP8266 (NodeMCU)?
- Verwendete Hardware
- Installieren der MicroPython-Firmware für ESP8266
- Kommunikation mit der NodeMCU mit PuTTY
- Hochladen eines Python-basierten LED-Blinkcodes mit Ampy
- MicroPython auf ESP8266: Temperatur und Luftfeuchtigkeit mit DHT22 ermitteln
Für Anfänger, die an der Programmierung von Wi-Fi-fähigen Mikrocontrollern wie dem ESP8266 interessiert sind, kann das Verständnis der ESP-IDF-Programmierumgebung oder der Arduino IDE eine entmutigende Aufgabe sein. Die kryptische Syntax von C- und C ++ - Sprachen erfordert mehr Kenntnisse der Informatik Warum diese Sprachen nicht immer für Anfänger geeignet sind, lernen wir in diesem Artikel, einen ESP8266 mit MicroPython einzurichten und zu programmieren, und schließlich erhalten wir die Temperatur- und Feuchtigkeitsdaten von unserem bevorzugten DHT22-Temperatur- und Feuchtigkeitssensor. Zuvor haben wir auch ein Tutorial zum Programmieren von ESP32 mit Micro Python erstellt. Sie können dies auch bei Interesse überprüfen.
Was ist MicroPython?
Wir können sagen, dass MicroPython eine gewürfelte Version von Python ist, die für die Arbeit mit Mikrocontrollern und eingebetteten Systemen entwickelt wurde. Die Syntax und der Codierungsprozess von MicroPython ähneln Python. Wenn Sie Python bereits kennen, wissen Sie bereits, wie Sie Ihren Code mit MicroPython schreiben. Wenn Sie ein Python-Fan sind, können Sie diesen Artikel lesen.
MicroPython wurde in Großbritannien von einem Team unter der Leitung von Damion Jones entwickelt. Vor einiger Zeit starteten sie einen Kickstarter, auf dem sie einen bestimmten Satz von Entwicklungsboards starteten, auf denen Firmware ausgeführt wurde, mit denen Sie MicroPython darüber ausführen können Die Firmware wurde jetzt für den ESP8266 portiert, was Sie in diesem Artikel erfahren werden.
Warum MicroPython für NodeMCU?
Python ist eine der am weitesten verbreiteten und bisher leicht zu erlernenden Programmiersprachen. Mit der Einführung von MicroPython wurde die Programmierung hardwarebasierter Mikrocontroller sehr einfach. Wenn Sie noch nie einen Mikrocontroller programmiert haben und mit dem Programmieren beginnen möchten, ist MicroPython ein guter Anfang.
MicroPython verwendet eine abgespeckte Version der Python-Standardbibliotheken, sodass nicht alle Standardbibliotheken verfügbar sind. MicroPython enthält jedoch einfache und benutzerfreundliche Module für die Schnittstelle mit der Hardware. Mit Hilfe von MicroPython ist das Lesen und Schreiben in ein GPIO-Register jetzt noch einfacher.
Das ultimative Ziel von MicroPython ist es, die Programmierung von Mikrocontrollern so einfach wie möglich zu gestalten, damit sie von jedem verwendet werden können. Da MicroPython das Importieren von Bibliotheken und das Schreiben von Code vereinfacht, ist der unten gezeigte Code ein einfaches Beispiel, bei dem die integrierte LED der NodeMCU-Karte blinkt. Wir werden den Code nach dem Artikel ausführlich erläutern.
vom Maschinenimport Pin vom Zeitimport Schlaf LED = Pin (2, Pin.OUT) während True: LED.Wert (nicht LED.Wert ()) Schlaf (0,5)
Was ist ein ESP8266 (NodeMCU)?
Der ESP8266 ist ein kostengünstiges Wi-Fi-Modul, das für IoT-Anwendungen (Internet of Things) entwickelt wurde.
Es wird mit Allzweck-Eingangs- und Ausgangspins (GPIOs) geliefert und unterstützt auch eine Vielzahl häufig verwendeter Protokolle wie SPI, I2C, UART und mehr. Das Coolste an diesem Mikrocontroller ist jedoch, dass er über integriertes WLAN verfügt. Damit können wir sehr einfach eine Verbindung zu jedem 2,4-GHz-WLAN herstellen.
Jetzt sind die Grundlagen nicht mehr im Weg. Wir können mit dem praktischen Teil fortfahren, in dem wir Ihnen die erforderliche Hardware und den Installationsprozess von MicroPython auf dem ESP8266-IC zeigen.
Verwendete Hardware
Liste der verwendeten Materialien
- 1 x Steckbrett
- 1 x ESP8266 (NodeMCU)
- 1 x DHT22 (Temperatur- und Feuchtigkeitssensor)
- 1 x 3 mm LED (Leuchtdiode)
- 1 x 1K Widerstand
- 5 x Überbrückungskabel
Installieren der MicroPython-Firmware für ESP8266
In diesem Artikel gibt es zwei Möglichkeiten, die MicroPython-Firmware auf dem ESP8266 zu installieren. Wir werden über beide sprechen, aber zuerst müssen wir es herunterladen.
Herunterladen der MicroPython-Firmware für ESP8266:
Bevor wir die NodeMCU-Karte (ESP8266) an unseren PC anschließen, müssen wir die neueste Version von MicroPython herunterladen. Danach können wir die Firmware auf der NodeMCU installieren. Sie können sie von der offiziellen Micropython-Download-Seite herunterladen
Installieren der MicroPython-Firmware auf ESP8266:
Bevor wir die Firmware auf dem ESP8266 installieren können, müssen wir sicherstellen, dass wir das richtige Laufwerk für den USB-zu-Seriell-Konverter haben. Die meisten NodeMCU-Karten verwenden einen CP2102-USB-zu-UART-Konverter-IC, weshalb wir den herunterladen und installieren müssen Treiber für den CP2102 USB-zu-UART-Konverter. Sobald das Laufwerk heruntergeladen und installiert wurde, müssen wir das esptool herunterladen, ein Python-basiertes Tool zum Lesen und Schreiben der Firmware auf ESP8266.
Der einfachste Weg, um Python zu erhalten, ist über den Microsoft Store. Von dort aus müssen Sie eine Kopie von Python herunterladen und installieren. Sobald Python installiert ist, können wir den Befehl esptool mit dem Befehl pip3 install esptool installieren. Der Vorgang sieht ungefähr so aus wie im folgenden Bild.
Überprüfen Sie nach der Installation, ob Sie über das Befehlsterminal auf esptool zugreifen.
Führen Sie dazu einfach den Befehl esptool.py version aus. Wenn Sie ein Fenster wie das folgende Bild erhalten, haben Sie esptool erfolgreich auf Ihrem Windows-PC installiert.
Wenn Sie Probleme haben, über das Befehlsfenster auf esptool zuzugreifen, fügen Sie der Windows-Umgebungsvariablen den vollständigen Installationspfad hinzu.
Finden des für das NodeMCU-Board zugewiesenen PORT:
Jetzt müssen wir den zugewiesenen Port für die NodeMCU-Karte herausfinden. Gehen Sie dazu einfach in Ihr Geräte-Manager-Fenster und suchen Sie nach einer Option namens Ports, wenn Sie erweitern, dass Sie den der NodeMCU-Karte zugeordneten Port herausfinden können. Für uns sieht es wie das unten gezeigte Bild aus.
Löschen des Flash-Speichers des ESP8266:
Nachdem wir den zugehörigen COM-Port herausgefunden haben, können wir das NodeMCU-Modul vorbereiten, indem wir den Flash-Speicher löschen. Dazu wird der folgende Befehl verwendet: esptool.py --port COM6 erase_flash . Der Vorgang sieht ungefähr so aus wie im Bild unten.
Firmware installieren:
Wenn Sie den folgenden Befehl ausführen, wird die MicroPython-Binärdatei auf der NodeMCU-Karte installiert. Nach der Installation dieser Binärdatei können wir unsere Python-Programme hochladen und mit der Read Evaluate- und Print- Schleife kommunizieren.
esptool.py --port COM6 --baud 460800 write_flash --flash_size = 0 erkennen esp8266-20200911-v1.13.bin
Der Vorgang ähnelt dem Bild unten.
Bitte beachten Sie, dass sich die Binärdatei zum Zeitpunkt der Installation auf meinem Desktop befand, sodass ich eine CD auf meinem Desktop habe und den Befehl ausführen kann.
Nun ist es soweit, es ist Zeit, mit der Platine zu kommunizieren und einige LEDs zu blinken.
Kommunikation mit der NodeMCU mit PuTTY
Beginnen wir nun unser erstes Hello World-Programm mit PuTTY, PuTTY, um dies zu tun. Dazu müssen wir den Verbindungstyp als Seriell festlegen. Als nächstes setzen wir die serielle Leitung (in unserem Fall COM6) und schließlich die Geschwindigkeit auf 115200 Baud.
Wenn alles richtig gemacht ist, erscheint ein Fenster ähnlich dem folgenden Bild, und wir können unseren Code leicht hineinschreiben. Normalerweise funktioniert es wie ein iPython-Terminal. Außerdem haben wir unser erstes Hallo-Welt-Programm ausgeführt, das nur aus zwei einfachen Zeilen besteht, und nachdem wir unsere Druckerklärung abgegeben haben, haben wir unsere Antwort erhalten.
Hochladen eines Python-basierten LED-Blinkcodes mit Ampy
Der Zugriff auf MicroPython mithilfe des PuTTY-Terminals ist eine gute Möglichkeit, mit dem ESP-Modul zu kommunizieren. Eine andere einfache Möglichkeit besteht darin, den Code über das Adafruit Ampy-Tool hochzuladen. Um ampy zu installieren, können Sie einfach eine einfache pip3-Installation ausführen. Befehl ampy und es wird ampy auf unserem PC installiert. Der Vorgang sieht ungefähr so aus wie im Bild unten.
Sobald Sie dies haben, benötigen wir noch unsere Informationen über die serielle Schnittstelle, mit der wir verbunden sind. In unserem Fall ist es COM6. Jetzt müssen wir nur noch unseren LED Blink-Code mit MicroPython schreiben. Dazu haben wir den Leitfaden auf der offiziellen Micro Python-Website verwendet
Mit Hilfe des Handbuchs wird der folgende Code erstellt.
vom Maschinenimport Pin vom Zeitimport Schlaf LED = Pin (2, Pin.OUT) während True: LED.Wert (nicht LED.Wert ()) Schlaf (0,5)
Der Code ist sehr einfach. Zuerst importieren wir die Pin-Bibliothek von der Maschine. Pin-Klasse. Als nächstes müssen wir die Zeitbibliothek importieren, mit der eine Verzögerungsfunktion erstellt wird. Als nächstes setzen wir Pin2 (die integrierte LED, die an das ESP12E-Modul angeschlossen ist) als Ausgang. Als nächstes richten wir eine while-Schleife ein, in der wir die LED mit einer Verzögerung von 500 ms ein- und ausschalten.
So laden Sie den Code auf NodeMCU hoch. Dazu müssen Sie den folgenden ampy- Befehl ausführen :
ampy --port COM6 put main.py.
Wenn das Programm korrigiert ausgeführt wird, blinkt eine LED wie unten gezeigt.
Hinweis: Beim Hochladen des Codes habe ich meinen aktuellen Speicherort für Eingabeaufforderungen auf meinem Desktop festgelegt, sodass ich keinen vollständigen Pfad für die Datei main.py angeben musste, wenn dies nicht der Fall ist, müssen Sie den vollständigen Pfad für Ihre Datei main angeben.py-Datei.
Als Nächstes erhalten wir unsere Temperatur- und Feuchtigkeitsdaten vom DHT22-Sensor.
MicroPython auf ESP8266: Temperatur und Luftfeuchtigkeit mit DHT22 ermitteln
Schema für die Schnittstelle von DHT22 mit NodeMCU:
Das vollständige Schaltbild für dieses Projekt finden Sie unten. Ich habe Fritzing verwendet, um diese Schaltung zu erstellen.
Wie Sie sehen können, ist die Schaltung sehr einfach und kann mit Hilfe von Überbrückungsdrähten leicht auf einem Steckbrett aufgebaut werden. Der gesamte Stromkreis kann über den Micro-USB-Anschluss der NodeMCU mit Strom versorgt werden. Mein Hardware-Setup ist unten dargestellt.
Code:
Es ist sehr einfach, die Temperatur- und Feuchtigkeitsdaten von einem DHT22- oder DHT11-Sensor mit einem MicroPython abzurufen, da die zuvor installierte MicroPython-Firmware über eine integrierte DHT-Bibliothek verfügt.
1. Wir beginnen unseren Code mit dem Importieren der DHT-Bibliothek und der Pin-Bibliothek aus der Maschinenklasse.
Import dht vom Maschinenimport Pin
2. Als nächstes erstellen wir ein DHT-Objekt, das sich auf den Stift bezieht, an dem wir unseren Sensor angebracht haben.
Sensor = dht.DHT22 (Pin (14))
3. Um den Sensorwert zu messen, müssen wir die folgenden drei Befehle verwenden.
sensor.measure () sensor.temperature () sensor.humidity ()
Für den endgültigen Code setzen wir ihn in eine while-Schleife mit und drucken die Werte, die das Ende unseres Codes markieren. Außerdem benötigt der DHT22-Sensor 2 Sekunden, bevor er Daten lesen kann, sodass eine Verzögerung von 2 Sekunden hinzugefügt werden muss.
vom Maschinenimport Pin vom Zeitimport Schlafimport dht dht22 = dht.DHT22 (Pin (14)) während True: try: sleep (2) dht22.measure () temp = dht22.temperature () hum = dht22.humidity () print ('Temperatur:% 3.2f C'% Temp.) Drucken ('Luftfeuchtigkeit:% 3.2f %%'% Brummen) außer OSError als e: Drucken ('Daten vom DHT22-Sensor konnten nicht gelesen werden.')
Sobald wir mit dem Codieren fertig sind, können wir den Code mit Hilfe des Befehls ampy hochladen.
ampy --port COM6 put main.py.
Nach erfolgreicher Ausführung des Codes können Sie die Temperatur- und Feuchtigkeitswerte auf jedem seriellen Monitor überwachen. Ich habe Kitt verwendet und wie Sie unten sehen können, konnte ich auf COM5 Temperatur- und Feuchtigkeitswerte empfangen.
Ich hoffe, Ihnen hat der Artikel gefallen und Sie haben etwas Nützliches gelernt. Wenn Sie Fragen haben, können Sie diese im Kommentarbereich unten hinterlassen oder in unseren Foren andere technische Fragen stellen.