In dem ersten Beitrag möchte ich dir zeigen, wie du dein erstes Programm in MicroPython programmierst und auf einen Mikrocontroller aufspielst.
Mikrocontroller für MicroPython
Die Programmiersprache MicroPython habe ich bereits in der Beitragsreihe zum Microcontroller BBC micro:bit angeschnitten. Jedoch möchte ich in dieser Beitragsreihe den “normalen” ESP32 verwenden.
Der Vorteil des “normalen” ESP32 ist einmal dieser günstig in der Anschaffung sowie durch die Stiftleisten ohne weitere Shields / Module auf ein 400 Pin Breadboard gesteckt werden kann. Solltest du kein 400 Pin oder 720 Pin Breadboard haben, so kannst du auch 2 170 Pin Breadboards verwenden.
Flashen des ESP32 Chips für die Programmierung von MicroPython auf einem Mikrocontroller
Mein mir vorliegender Mikrocontroller wurde mit der Firmware für die Arduino IDE ausgeliefert, d.h. ich konnte diesen prima mit der genannten IDE verbinden und dort Sketche / Programme entwickeln und hochladen. ABER für MicroPython war diese Version nicht geeignet, daher musste ich eine neue Firmware einspielen.
Das Einspielen einer Firmware ist nicht immer ganz ungefährlich, wenn dieser Vorgang abgebrochen wird oder etwas schiefläuft kann es unter Umständen passieren, dass der Mikrocontroller nicht mehr reagiert.
Im nachfolgenden, möchte ich dir aufzeigen wie ich den ESP32 Mikrocontroller mit dem Chip ESP32D0WDQ6 geflasht habe.
Schritt 1 – installieren von esptool
Damit wir auf den Mikrocontroller eine neue Firmware installieren können, benötigen wir ein Tool. Es gibt hierzu 2 verschiedene Tools, ich möchte den Weg über das Tool esptool.py erläutern.
Ich verwende ein Microsoft Windows 10 mit einer installierten Python3 Version.
Das Programm esptool.py wird über die Kommandozeile mit dem Befehl
pip install esptool
installiert.
Nachdem das Tool installiert wurde, muss der Ordner geöffnet werden in welchem dieses Tool installiert wurde, bei mir ist es der Pfad:
C:\Users\<BENUTZERNAME>\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\Scripts
Sollte dieser Pfad nach der Anpassung des Benutzernames nicht geöffnet werden können so navigiere ab dem Punkt “/Packages” über den Dateiexplorer.
Schritt 2 – löschen des Inhalts
Im zweiten Schritt habe ich den Inhalt des ESP32 gelöscht, dieses wird mit einem einfachen Befehl auf der Konsole erledigt. Du benötigst dazu die Bezeichnung des COM Anschlusses. Diesen kannst du zbsp. im Geräte-Manager unter dem Punkt “Anschlüsse (COM & LPT)” ablesen.
In meinem Fall ist der Microcontroller am COM10 angeschlossen.
esptool.py --chip esp32 --port COM10 erase_flash
Wenn dieser Befehl mit der Enter-Taste bestätigt wird, werden zunächst die Spezifikationen des Chips ausgelesen und angezeigt. Danach wird der Flashspeicher gelöscht und der Mikrocontroller neu gestartet.
Das der Mikrocontroller gelöscht wurde erkennt man nun daran das die BUILD_IN LED, welche zuvor im Intervall geblinkt hat, nicht mehr blinkt.
Schritt 3 – schreiben der neuen Firmwareversion
Im dritten und letzten Schritt schreiben wir nun eine aktuelle Version der Firmware für MicroPython auf den ESP32.
Diese *.bin Datei findest du unter https://micropython.org/download/esp32/ dort findest du jeweils zwei Versionen, einmal ein tagesaktuelles Artefakt und einmal ein Release.
Die Version mit “unstable” sind tagesaktuelle Artefakte und können ggf. Fehler / Features beinhalten, welche zu einem Fehlverhalten führen können. Ich habe mich für die Datei “esp32-idf3-20101220-v1.12.bin” entschieden und heruntergeladen. Diese Datei habe ich in das Verzeichnis abgelegt, wo auch die ausführbare Datei esptool.py.exe liegt.
Des Weiteren habe ich die Datei umbenannt, so das der Befehl
esptool.py --chip esp32 --port COM10 --baud 460800 write_flash -z 0x1000 esp32-idf3.bin
deutlich kürzer wird.
Entwicklungsumgebung uPyCraft für die Programmierung in MicroPython auf einem Mikrocontroller
Für die Programmierung nutze ich das Tool uPyCraft, dieses gibt es für Windows, macOS und Linux. Auf der Herstellerseite http://docs.dfrobot.com.cn/upycraft/ findest du den Link zum Download der Windows Version.
Leider ist die Seite nur auf Chinesisch verfügbar, somit kann ich keine Aussage über den Rest der Seite machen jedoch ist die Anwendung selbst in Englischer Sprache gehalten.
Wenn die ca. 13 MB große Datei heruntergeladen wurde (dauert ungewöhnlich lange) kann uPyCraft gestartet werden.
Mein Windows Defender hat die Datei “uPyCraft_V1.1.exe” als potentiell gefährlich gemeldet, so das ich die Ausführung explizit bestätigen musste. Nachdem ich die IDE gestartet wurde, wird ein Dialog angezeigt das ich zusätzlich
Aufbau der Oberfläche
Die Oberfläche der Anwendung uPyCraft ist sehr einfach gehalten, quasi auf das wesentliche beschränkt, aber trotzdem sehr mächtig.
Auf der linken Seite (1) findest du einen Baum mit den Dateien aus deinem aktuellen Workspace, sowie die verbundenen Geräte.
Der Editor für den Quellcode befindet sich in der Mitte (2) der Anwendung, es können mehrere Dateien gleichzeitig geöffnet werden, diese werden dann in Tabs dargestellt.
Einen neuen Tab bzw. Editor für man mit der Schaltfläche “New” (3) hinzu. Darunter befindet sich die Schaltfläche zum Öffnen einer bestehenden *.py Datei (4). Zum Speichern des aktuellen Tabs nutzt man entweder die Tastenkombination “Strg + S” oder die Schaltfläche (5).
Die Schaltfläche “DownloadAndRun” (6) speichert das aktuelle Skript auf den ESP32 und führt einen Neustart durch.
Die Bezeichnung finde ich etwas irreführend denn eigentlich macht man einen Upload.
Mit der Schaltfläche “Stop” (7) wird der Vorgang abgebrochen.
Die Schaltfläche (8) dient zum Verbinden mit dem ESP32 und verändert sich bei erfolg in die Schaltfläche zum Trennen der Verbindung. Wenn man eine Verbindung über diese Funktion aufgebaut hat, dann kann man quasi Inline Befehle eingeben und sofort ausführen lassen.
Die Ausgabe von Fehlermeldungen / Kompilermeldungen und auch die von der seriellen Schnittstelle werden im Ausgabefenster (9) angezeigt.
Alle diese Funktionen (und viele weitere) findest auch über das Hauptmenü. Jedoch möchte ich zunächst einfache kleine Programme schreiben.
Aufbau einer Verbindung
Bevor wir unser erstes Programm schreiben, wollen wir eine Verbindung mit dem ESP32 aufbauen. Dazu navigieren wir vom Hauptmenüpunkt “Tools” > “Serial” und wählen dort unseren Mikrocontroller aus.
In meinem Fall ist dieser am Port COM10 angeschlossen.
Wenn eine Verbindung aufgebaut wurde, wird der Inhalt des Mikrocontrollers im Baum unter “device” angezeigt.
Ich habe bereits ein Programm hochgeladen, somit existiert neben der wichtigen “boot.py” zusätzlich die Datei “helloWorld.py”.
Über das Kontextmenü in diesem Knoten können wir Dateien bearbeiten.
Sehr gut finde ich zbsp. das Feature das eine hochgeladene Datei wieder einfach heruntergeladen und bearbeitet werden kann. Dieses Feature würde ich mir bei den Arduinos auch sehr gerne wünschen.
Programm “Hello World!” auf dem ESP32
Nachdem wir den ESP32 mit der für MicroPython passenden Firmware geflasht und die Entwicklungsumgebung uPyCraft “installiert” haben, möchten wir ein einfaches kleines Programm schreiben. Dieses Programm soll und zunächst auf der Konsole die Zeichenkette “Hello World!” ausgeben.
Zunächst benötigen wir eine Bibliothek, damit wir eine kleine Pause zwischen den Ausgaben des Textes einfügen können.
Die importieren wir mit dem Befehl “import”.
import time as time
Danach benötigen wir eine Endlosschleife, denn sonst würde das Programm einmal die Zeichenkette “Hello World!” ausgeben und dann beendet werden.
while(1):
In dieser Endlosschleife führen wir nun die zwei Funktionen aus zum Schreiben der Zeichenkette sowie für die Pause von 0,5 Sekunden.
print("Hello World!") time.sleep(0.5)
Das gesamte Programm.
import time as time while(1): print("Hello World!") time.sleep(0.5)
Wenn wir nun das Programm über die Schaltfläche “DownloadAndRun” hochladen, dann wird dieses auf der Konsole angezeigt. Das Programm startet auch sofort nach erfolgreichem reboot des Mikrocontrollers.
Fazit
Wir haben nun einen ESP32 eingerichtet und mit der Anwendung uPyCraft ein erstes Programm hochgeladen. Es bedarf für mich einiger suche (“Google ist mein Freund”) aber du hast in diesem Beitrag alles für dein erstes MicroPython Programm zusammen.
Als Nächstes möchte ich nun einsteigen einige Sensoren & Aktoren (LEDs, Piezo Buzzer, DHT11, Servomotoren usw.) über MicroPython zu programmieren.