© Liashko/Shutterstock.com
Die Nutzungsmöglichkeiten von Python mit dem Mikrocontroller ESP32

Python, subminiaturisiert


Wer Python im Embedded-Bereich einsetzen möchte, greift normalerweise reflexartig zu einem Raspberry Pi oder einem preiswerteren Orange Pi. Wirklich billig wird es allerdings erst mit dem ESP32. Seit einiger Zeit lässt er sich komfortabel mit Python programmieren.

Die Entwicklung von Software für den ESP32 ist per se ein durchaus chaotischer Prozess – neben dem Arduino Core und der ESP-IDF buhlen auch andere Entwicklungssysteme um Aufmerksamkeit. Wer beispielsweise mit JavaScript arbeiten möchte, findet im von Neonious entwickelten low.js eine durchaus kreative Arbeitsumgebung. Für Python spricht allerdings die weite Verbreitung im Maker- und Smart-Home-Bereich: Es gibt kaum ein Problem, für das der Entwickler nicht eine unter Python lebensfähige Lösung findet. Der ESP32 ist dann das geradezu kongeniale Werkzeug, um das Produkt „in den Massenmarkt“ zu bringen. Die einzelne Platine kostet bei intelligenter Beschaffung per AliExpress rund fünf Euro; direkt einlötbare Chips sind noch billiger.

Neben einem durchaus leistungsfähigen Zweikernprozessor mit bis zu 240 Megahertz darf sich der Entwickler zudem über ein WLAN- und ein Bluetooth-Funkmodul freuen. Für die Interaktion mit beliebiger Hardware steht naturgemäß ein umfangreiches Komplement von GPIO-Ports zur Verfügung.

Eine Frage der Herangehensweise

Im Bereich Python für ESP32 haben sich zwei konkurrierende Designpatterns etabliert. Einerseits gibt es das komplett quelloffene und kostenlose MicroPython. Es implementiert eine vollwertige Runtime auf dem ESP32, die sogar einen Paketmanager und diverse andere von Desktopbetriebssystemen bekannte Unterstützungsinfrastrukturen mitbringt. Der Nachteil von MicroPython ist, dass es ob dieser komplexen Architektur langsam arbeitet. Zudem erweist sich die Einrichtung von Paketmanager und Co. als zugegebenermaßen etwas ärgerlich.

Das in Italien ansässige Start-up Zerynth unterscheidet sich von MicroPython insofern, als die hauseigene Runtime während der Kompilation vollwertig zusammengestellt wird. Das bedeutet, dass der ESP32 ein Paket aus optimierter Runtime, eigenem Programmcode und eventuell verwendeten Bibliotheken enthält. Paketmanager und Co. befinden sich ausschließlich auf der Workstation des Entwicklers. Ein weiterer Vorteil dieser Vorgehensweise ist, dass die Performance des Systems im Allgemeinen höher ausfällt. Nachteilig ist, dass die Verwendung von Zerynth ab einer gewissen Prozessrechnermenge kostenpflichtig wird. Zudem ist die Adaptierung von „Schlomos Normalbibliothek“ auf Zerynth etwas schwieriger – Web-Frameworks wie PicoWeb stehen beispielsweise nur für MicroPython zur Verfügung.

Da das Zerynth-Entwicklerteam Anwendern allerdings eine Gruppe kostenloser Lizenzen zur Verfügung stellt, möchten wir in den folgenden Schritten mit Zerynth arbeiten. Besuchen Sie im ersten Schritt die Webseite https://www.zerynth.com/zerynth-studio/, um das Archiv zerynth.tar.xz herunterzuladen. Es enthält die Zerynth-eigene Entwicklungsumgebung Zerynth Studio, die durchaus komfortables Arbeiten ermöglicht. Extrahieren Sie das Archiv jedenfalls an einen bequem zugänglichen Ort im Dateisystem, um den Installationsprozess über die ausführbare Datei zu befehligen:

tamhan@TAMHAN18:~/Downloads/zerynth$ ./zerynth Gtk-Message: 12:16:22.589: Failed to load module "canberra-gtk-module" ...

Eine interessante Besonderheit von Zerynth Studio ist die Fähigkeit, sowohl im Online- als auch im Offlinebetrieb zu arbeiten. Arbeitet man im Onlinemodus, so lädt die Workstation benötigte Bibliotheken und anderes zur Laufzeit herunter. Das setzt zwar eine permanente Internetverbindung voraus, sorgt aber für weniger Arbeit.

Bei der Auswahl der Version haben Sie überwiegend freie Hand. Der Autor arbeitet mit 2.3.0. Nach dem Anklicken des Installationsknopfs ist die Arbeit im Großen und Ganzen erledigt. Der Deployment-Assistent von Zerynth Studio kümmert sich auch darum, die ESP32 Toolchain, den Compiler und andere Komponenten herunterzuladen und bereitzustellen. Kritisch ist, dass die Hostworkstation unbedingt einen 64-Bit-Kernel aufweisen muss: ältere 32-Bit-Linux finden beim Zerynth-Team keine Unterstützung mehr. Das gilt analog auch für Windows, wo ebenfalls eine 64-Bit-Version vorausgesetzt wird.

Im Rahmen der Installation bietet der Installer den Start von Zerynth Studio an. Unter Linux integriert sich das Programm ärgerlicherweise nicht in den Programmstarter, weshalb eine spätere Aktivierung ebenfalls über das Installationsprogramm zu erfolgen hat. Wenn die passende Version schon installiert ist, zeigt der Assistent wie in Abbildung 1 dargestellt einen Start-Button an. Über diesen können Sie Zerynth Studio dann nach Belieben reaktivieren.

hanna_python_1.tif_fmt1.jpgAbb. 1: Programmstart aus der Set-up-Routine

Lizenzrechtliche Probleme

Espressif stattet jedes ESP32-Modul mit einer weltweit einzigartigen Seriennummer aus. Das Zerynth-Entwicklerteam nutzt diese Information, um die einzelnen Runtime-Lizenzen mit Prozessrechnern zu verbinden. Zur Autorisierung ist ein Konto erforderlich, weshalb Sie die Zerynth IDE nach dem ersten Start zur Anmeldung auffordert. Neben einem beliebigen, auf einer E-Mail-Adresse basierenden Konto funktionieren auch Facebook- und Google-Daten. Wer seine Komponenten gerne bei RS Components kauft, darf sich auch mit einem DesignSpark-Konto autorisieren.

Obwohl Zerynth Studio im Browser lebt, verhält sich die IDE im Großen und Ganzen konventionell. Auf der linken Seite des Bildschirms finden Sie in der Rubrik Project eine Übersicht über das gerade geladene Projekt. Klicken Sie im ersten Schritt auf Create, um ein neues Projekt anzulegen. Die IDE fragt Sie an dieser Stelle nach Titel und Beschreibung – d. h. nach Parametern, die nur für Sie als Entwickler von Relevanz sind und mehr oder weniger nach Belieben vergeben werden. Interessant ist die Möglichkeit, einen GitHub-URL anzugeben: in diesem Fall beschafft Zerynth den Projektcode aus GitHub.

Lohn der Mühen ist ein aus drei Teilen bestehendes Projekt. Die im Markdown-Format gehaltene Readme-Datei nimmt Dokumentation auf, während project.yml für fortgeschrittene Konfigurationseinstellungen verantwortlich ist. Im Hintergrund von Zerynth Studio arbeitet ein vergleichsweise umfangreiches Build-System, das (unter anderem) in C vorliegende native Module in die Python Runtime kopieren kann. Für uns ist momentan allerdings nur die Datei mai...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang