Aus Raspberry Pi Geek 03/2024

Micropython Teil 1: Grundlagen

© Vladimir Sladek | 123RF.com

Kleine Schlange

Martin Mohr

Auf Mikrocontrollern kommt häufig die dafür maßgeschneiderte Sprache Micropython zum Einsatz. Wir haben die kleine Schwester des weithin beliebten Python sowie passende IDEs unter die Lupe genommen.

Wie eingangs erwähnt, erschien in dieser Zeitschrift schon einmal ein Artikel zum Thema Micropython [1]. Die damalige Zielsetzung bestand darin, zu zeigen, was sich so alles mit dem ESP32 in Verbindung mit Micropython realisieren lässt. Aus Platzgründen ließen sich damals viele Themen lediglich anreißen oder nur oberflächlich behandeln. Nun werfen wir einen deutlich umfassenderen Blick auf die Programmiersprache und nutzen ein breiteres Spektrum an Hardware.

Als Python-Variante ist Micropython [2] für den Einsatz auf Mikrocontrollern optimiert. Sie basiert auf Python 3 und wurde mit einigen Bibliotheken für den Zugriff auf die Mikrocontroller (MCU) erweitert. Hierbei handelt es sich allerdings nicht um Standardbibliotheken. Außerdem stehen Ihnen nicht alle Bibliotheken zur Verfügung, die es in Python 3 gibt. Für einige MCUs existieren spezielle Bibliotheken, die auf deren Besonderheiten eingehen. Dazu gehören beispielsweise der ESP8266, der ESP32 und der Raspberry Pi Pico. Bitte verwenden Sie primär ausschließlich die in der Dokumentation [3] erwähnten Bibliotheken. Grundsätzlich können Sie zwar eigene in die Micropython-Umgebung kopieren, dabei sollten Sie aber wegen des begrenzten Speicherplatzes Vorsicht walten lassen. Mehr Informationen zu Mikrocontrollern finden Sie im entsprechenden Kasten.

Das interessante an Micropython ist, dass die Programme tatsächlich auf dem Controller ausgeführt werden. Dazu ist es allerdings notwendig, den Python-Interpreter zuerst einmal auf den Controller zu spielen. Danach meldet sich der Interpreter mit einer eigenen Konsole über eine serielle USB-Schnittstelle.

Mikrocontroller

Mikrocontroller bilden eine spezielle Kategorie von Halbleiterchips, die dazu dienen, einfache Steuerungsaufgaben zu bewältigen. Ein Mikrocontroller beherbergt neben dem Mikroprozessor (CPU) zusätzlich Hauptspeicher (RAM), einen nicht flüchtigen Speicher (ROM) für Programmcode und unterschiedlich ausgeprägte IO-Ports, um mit der Außenwelt zu kommunizieren. Die IO-Ports können einfache digitale Ein-/Ausgänge oder komplexere Schnittstellen wie I2C sein. Einige MCUs verfügen sogar über Wi-Fi oder GPS.

Üblicherweise besitzen MCUs eine Schnittstelle, über die sich der Programmcode in das IC laden lässt. Hier befindet sich der Grund für ihren anhaltenden Erfolg – sie lassen sich in großen Stückzahlen günstig herstellen, da sie ab Werk für keine spezielle Bestimmung konzipiert sind. Erst durch die Programmierung erhalten die MCUs ihre konkrete Aufgabe.

Inzwischen sind in fast allen technischen Geräten MCUs verbaut: Das geht vom PIN-Code-Generator fürs Online-Banking über die Waschmaschine bis hin zur smarten Wohnzimmerleuchte. Da es für verschiedene Anwendungsfälle unterschiedlich konzipierte Mikrocontroller braucht, hat sich die Modellvielfalt vergrößert. Einer der wohl bekannteren Mikrocontroller-Hersteller ist Atmel mit seiner AVR-Familie (2016 von Microchip übernommen). Die kleinen Chips aus Kalifornien kommen beispielsweise auf den Arduino-Boards (Abbildung 1) zum Einsatz.

Abbildung 1: Der Klassiker unter den Microchips, ein Atmel-Modell, findet sich zum Beispiel auf Arduino-Boards.

Abbildung 1: Der Klassiker unter den Microchips, ein Atmel-Modell, findet sich zum Beispiel auf Arduino-Boards.

Für die Entwicklung von Micropython gibt es ein offizielles Entwicklungsboard, das PyBoard [4]. Theoretisch könnten Sie es im Shop der Micropython-Website bestellen, allerdings ist es derzeit nicht lieferbar. Zum Glück unterstützt die Programmiersprache jedoch über 150 Entwicklungsboards unterschiedlicher Hersteller. Eine Übersicht der Boards findet sich zum Herunterladen auf der Webseite des Projekts [5]. Neben den MCU-Boards unterstützt Micropython selbstverständlich Schnittstellen zur Kommunikation zu externer Hardware, zum Beispiel I2C, SPI, UART oder Neopixel.

IDEs

Zur Programmierung von Mikrocontrollern benötigen Sie für gewöhnlich eine speziell darauf zugeschnittene Entwicklungsumgebung (IDE). Die IDE muss einen C-Compiler zum Erstellen von Bootimages mitbringen. Weiterhin benötigen Sie herstellerspezifische Tools zum Überspielen der Images. Zwar existieren einige IDEs, die mehrere unterschiedliche MCUs unterstützen, aber dadurch können sie nicht mehr vollständig auf die Besonderheiten der Hardware eingehen.

Bei Micropython sieht das ein wenig anders aus. Da der Controller selbst eine Python-Konsole bereitstellt, muss die IDE nur die Kommunikation dazu aufbauen und in der Lage sein, Dateien zu übertragen. Bei der Auswahl Ihrer IDE sollten Sie unbedingt darauf achten, ob sie die Micropython-Firmware-Images in den Controller schreiben kann. Das passiert üblicherweise nicht allzu oft, Gründe dafür gibt es jedoch durchaus: Zu Beginn muss beispielsweise die Firmware auf den Controller, um damit arbeiten zu können. Hin und wieder verhakt sich außerdem das Filesystem auf dem Controller, sodass nur noch ein Neuaufspielen hilft. Man kann tatsächlich so ungeschickte Programme schreiben, dass es unmöglich wird, auf den Controller zuzugreifen. Dann führt ebenso kein Weg mehr am Neuaufspielen vorbei. Zuletzt erscheint mitunter eine neue Firmware-Version von Micropython.

Ein weiteres wichtiges Kriterium bei der Entscheidung für oder gegen eine IDE ist ihre Bedienbarkeit. Als Anfänger auf diesem Gebiet sollten Sie eine einfache IDE wählen, um nicht vom Funktionsumfang erschlagen zu werden und sich nicht überwiegend mit der Bedienung auseinandersetzen zu müssen.

Als Linux-Anwender behalten Sie bitte im Hinterkopf, dass kein normaler User standardmäßig die seriellen Schnittstellen verwenden darf – hier müssen Sie diese Berechtigung stets zwingend einmal vergeben. Das Recht ist an die Gruppe dialout gebunden. Mit dem Kommando sudo adduser $USER dialout nehmen Sie den aktuell angemeldeten User in diese Gruppe mit auf.

Thonny IDE

Hinter der Thonny IDE [6] steckt eine leicht zu bedienende Entwicklungsumgebung für Python und Micropython. Sie lässt sich für Linux (auch ARM64-Architektur), MacOS und Windows von der Projekthomepage herunterladen. In den Ubuntu-Repositories liegt ein Paket bei, das Sie mit sudo apt install thonny installieren. Die Micropython-Firmware spielen Sie damit ebenso problemlos auf die MCUs. Es gibt hier keine Einschränkungen auf bestimmte Hardware, sämtliche Images von der Micropython-Homepage werden unterstützt. Alles in allem zeigt sich Thonny für den Einsteiger als ein solides Werkzeug (Abbildung 2). In den Ubuntu-Repositories müssen Sie derzeit noch auf die aktuelle Version verzichten, aber mit der älteren Variante lässt sich genauso arbeiten.

Abbildung 2: Thonny glänzt mit einem sehr aufgeräumt wirkenden Userinterface.

Abbildung 2: Thonny glänzt mit einem sehr aufgeräumt wirkenden Userinterface.

Mu-Editor

Der Mu-Editor [7] ist genau wie Thonny eine für Einsteiger gut geeignete Python-IDE, die die Besonderheiten von Micropython beherrscht. Auf der Website des Projekts beziehen Sie Versionen für Linux (auch ARM64-Architektur), MacOS und Windows. Die in den Ubuntu-Repositories vorhandene Variante ist nicht nur etwas älter, sie bietet obendrein keine Unterstützung für Micropython. Dementsprechend sollten Sie erst gar nicht versuchen, sie zu installieren. Der Mu-Editor (Abbildung 3) unterstützt darüber hinaus nur ausgewählte Hardware in Verbindung mit Micropython: ESP8266, ESP32, LEGO Spike, PyBoard, BBC micro:bit und RP2040.

Abbildung 3: Der Mu-Editor beim Firmware schreiben.

Abbildung 3: Der Mu-Editor beim Firmware schreiben.

Visual Studio Code

Visual Studio Code [8] erfreut sich großer Beliebtheit in der Entwicklergemeinde. Die IDE beziehen Sie über die Produkthomepage für Windows, MacOS und Linux. Hierbei fällt auf, dass sowohl deb- als auch rpm-Pakete (auch für ARM64) zum Herunterladen bereitstehen. Dadurch erreicht die Entwicklungsumgebung eine große Anzahl von Linux-Usern. Zudem erweitern Sie Visual Studio Code mithilfe von Extensions im Funktionsumfang, um die IDE an jedes Einsatzszenario anzupassen.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben