Programmieren mit MicroPython #1: Microcontroller und Entwicklungsumgebung

In dem ersten Beitrag zur Beitragsreihe „Programmieren mit MicroPython“ möchte ich dir zeigen welche Microcontroller es gibt und wie wir ein Programm bzw. Skript auf diesem ausführen können. 

Microcontroller 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.

sfdfh

Flashen des ESP32 Chips

Mein mir vorliegender Microcontroller 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 schief läuft kann es unter Umständen passieren das der Microcontroller nicht mehr reagiert. 

Im nachfolgenden, möchte ich dir aufzeigen wie ich den ESP32 Microcontroller mit dem Chip  ESP32D0WDQ6 geflasht habe.

Schritt 1 – installieren von esptool

Damit wir auf den Microcontroller 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.

installieren des Tools esptool über pip
installieren des Tools esptool über pip

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.

Geräte-Manager unter Windows 10, CH340
Geräte-Manager unter Windows 10, CH340

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 Microcontroller neugestartet.

löschen des Flashspeichers auf dem ESP32 mit esptool.py
löschen des Flashspeichers auf dem ESP32 mit esptool.py

Das der Microcontroller 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.

MicroPython Artefakte
MicroPython Artefakte

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.

flashen eines MicroPython Artefakten auf den ESP32
flashen eines MicroPython Artefakten auf den ESP32

Entwicklungsumgebung uPyCraft

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 gleichzeig 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 ein 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.

Entwicklungsumgebung uPyCraft für MicroPython
Entwicklungsumgebung uPyCraft für MicroPython

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 Microcontroller aus.

"uPyCraft,

In meinem Fall ist dieser am Port COM10 angeschlossen. 

Wenn eine Verbindung aufgebaut wurde, wird der Inhalt des Microcontrollers im Baum unter „device“ angezeigt.

uPyCraft, Inhalt des ESP32 anzeigen
uPyCraft, Inhalt des ESP32 anzeigen

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.

"uPyCraft,

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 Microcontrollers.

Ausgabe "Hello World!"
Ausgabe „Hello World!“

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. 

2 Gedanken zu „Programmieren mit MicroPython #1: Microcontroller und Entwicklungsumgebung

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.