MicroPython ist eine kompakte Implementierung der Programmiersprache Python, die direkt auf Mikrocontrollern und kleinen eingebetteten Systemen läuft. Im Gegensatz zu C oder C++, die vor der Ausführung in Maschinencode kompiliert werden müssen, arbeitet MicroPython als Interpreter auf der Zielhardware. Das macht die Sprache besonders geeignet für schnelle Entwicklung, Experimente und den Einsatz in der Ausbildung.

MicroPython wird auf modernen Mikrocontroller-Plattformen wie dem Raspberry Pi Pico, dem ESP32 und einigen Arduino-Boards eingesetzt und ermöglicht es Entwicklern, lesbaren High-Level-Code zu schreiben und dennoch direkt mit der Hardware zu interagieren.

MicroPython folgt der Standard-Python-Syntax und -Semantik so nah wie möglich, mit einigen Einschränkungen aufgrund begrenzten Speichers und begrenzter Rechenleistung.

Wesentliche Merkmale:
 
  • Einrückung definiert Codeblöcke (keine geschweiften Klammern)
  • dynamische Typisierung (Variablen benötigen keine expliziten Typdeklarationen)
  • automatische Speicherverwaltung (Garbage Collection)
  • High-Level-Datenstrukturen wie Listen, Tupel und Dictionaries
 
Beispiel – Ein einfaches MicroPython-Programm
Beispiel – ein einfaches MicroPython-Programm
Im Vergleich zum entsprechenden C/C++-Code ist dieses Beispiel kürzer und leichter lesbar – auf Kosten der Ausführungsgeschwindigkeit.

Programmstruktur und Ausführung

MicroPython-Programme werden typischerweise auf eine von zwei Arten ausgeführt:
 
  1. Interaktive Ausführung: Basiert auf dem Read–Eval–Print Loop (REPL), bei dem Befehle direkt in eine Eingabeaufforderung eingegeben und sofort ausgeführt werden. Dies ist nützlich zum Testen von Hardware und zum Experimentieren.
  2. Skriptausführung: Programme werden als Dateien im internen Dateisystem des Mikrocontrollers gespeichert. Eine Datei namens main.py wird automatisch ausgeführt, wenn das Board eingeschaltet oder zurückgesetzt wird.

Zugriff auf Hardware

MicroPython bietet Hardware-Zugriff über integrierte Module, vor allem das machine-Modul. Dieses Modul stellt Mikrocontroller-Peripheriegeräte auf portable Weise bereit.

Häufige Funktionen umfassen:
 
  • digitale Ein- und Ausgabe (GPIO)
  • Analog-Digital-Wandlung (ADC)
  • Pulsweitenmodulation (PWM)
  • Timer
  • Kommunikationsschnittstellen (I²C, SPI, UART)
 
Beispiel – Einen Taster einlesen
Beispiel – einen Taster einlesen
Obwohl MicroPython viele Hardware-Details abstrahiert, hängen Pin-Nummern und -Fähigkeiten weiterhin vom jeweiligen Board ab.

Leistung und Speicher

Da MicroPython interpretiert wird, ist es grundsätzlich langsamer als kompiliertes C/C++. Das spielt in der Regel keine Rolle bei:
 
  • Sensorabfragen
  • Benutzeroberflächen
  • Kommunikation
  • allgemeiner Steuerlogik

MicroPython ist jedoch weniger geeignet für:
 
  • sehr schnelle Signalverarbeitung
  • eng getaktete Echtzeit-Regelschleifen
  • speicherintensive Anwendungen

Mikrocontroller, die MicroPython ausführen, müssen Speicher für den Interpreter selbst reservieren, wodurch weniger RAM für Anwenderprogramme verbleibt als in einer reinen C/C++-Umgebung.

Bibliotheken und Ökosystem

MicroPython enthält eine kleine Standardbibliothek und viele hardwarespezifische Module. Zusätzliche Treiber (für Sensoren, Displays usw.) werden typischerweise als .py-Dateien bereitgestellt, die direkt auf das Gerät kopiert werden. Es gibt keinen zentralen Paketmanager, was die Verwaltung von Bibliotheken (d. h. Abhängigkeiten) manueller, aber auch transparenter macht.
 
Elektor Newsletter 42026 (1)

Fehlerbehandlung und Debugging

Ein wesentlicher Vorteil von MicroPython sind seine klaren und informativen Fehlermeldungen. Syntaxfehler und Laufzeitausnahmen werden sofort gemeldet, oft mit Zeilennummern und beschreibenden Meldungen. In Kombination mit dem interaktiven REPL ist das Debugging deutlich einfacher als in vielen C/C++-Workflows.

Wann MicroPython einsetzen

MicroPython ist eine ausgezeichnete Wahl, wenn:
 
  • Entwicklungsgeschwindigkeit wichtig ist
  • Codeklarheit und Lesbarkeit zählen
  • die Anwendung nicht leistungskritisch ist
  • Lernen und Experimentieren im Vordergrund stehen

C oder C++ ist in der Regel die bessere Wahl, wenn:
 
  • präzises Timing erforderlich ist
  • der Speicher extrem begrenzt ist
  • maximale Ausführungsgeschwindigkeit entscheidend ist
  • große, langfristige Projekte eine enge Kontrolle über Ressourcen erfordern

Datentypen

MicroPython verwendet dynamische Typisierung, das heißt, Variablen haben keinen im Voraus festgelegten Typ. Der Typ einer Variable wird automatisch anhand des zugewiesenen Wertes bestimmt.

Gängige Datentypen sind:
 
  • int – ganzzahlige Werte
  • float – Gleitkommazahlen
  • bool – boolesche Werte (True oder False)
  • str – Zeichenketten (Text)
  • list – geordnete Sammlungen
  • tuple – unveränderliche geordnete Sammlungen
  • dict – Schlüssel-Wert-Paare
 
Micropython 3

Auf Sprachebene wird nicht zwischen den Größen von int, long oder float unterschieden; diese Details werden intern vom Interpreter verwaltet.

Variablen und Konstanten

Variablen in MicroPython werden durch Zuweisung erstellt. Es gibt keinen separaten Deklarationsschritt.
 
Micropython 4

MicroPython erzwingt keine Konstanten auf Sprachebene. Per Konvention werden Variablen in Großbuchstaben als Konstanten behandelt und sollten nicht verändert werden.
 
Micropython 5

Diese Konvention verbessert die Lesbarkeit des Codes, wird vom Interpreter jedoch nicht durchgesetzt.

Kontrollstrukturen

MicroPython bietet dieselben grundlegenden Kontrollstrukturen wie Standard-Python.

Bedingte Anweisungen
 
Micropython 6

Einrückungen sind in MicroPython bedeutsam und ersetzen die geschweiften Klammern {} aus C/C++.

Schleifen
Eine while-Schleife:
 
Micropython 7

Eine for-Schleife:
 
Micropython8

Es gibt keine traditionelle for (init; condition; increment)-Schleife wie in C/C++; die Iteration basiert auf Sequenzen und Bereichen.

Funktionen

Funktionen werden mit dem Schlüsselwort def definiert. Sie können Parameter entgegennehmen und Werte zurückgeben.
 
Micropython 9

Funktionen erfordern keine Typdeklarationen für Parameter oder Rückgabewerte. Das macht das Schreiben von Funktionen einfach, verlagert die Verantwortung für die Korrektheit aber auf den Programmierer.

Fazit

MicroPython bietet eine moderne und zugängliche Möglichkeit, Mikrocontroller mit einer High-Level-Sprache zu programmieren. Auch wenn es C oder C++ in leistungskritischen Anwendungen nicht vollständig ersetzen kann, senkt es die Einstiegshürde erheblich und beschleunigt die Entwicklung für ein breites Spektrum eingebetteter Projekte. Wer beide Ansätze kennt, kann das jeweils passende Werkzeug für jede Aufgabe wählen und sie bei Bedarf sogar innerhalb desselben Projekts kombinieren.
Anmerkung der Redaktion: Dieser Artikel ist ein Auszug aus dem Buch Programming Microcontrollers in MicroPython (C. Valens, Elektor 2026), das zum Elektor-Kurs Raspberry Pi Pico with MicroPython (Programming Course) gehört. Das Buch führt in die eingebettete Programmierung mit MicroPython auf populären Plattformen wie dem Raspberry Pi Pico und dem ESP32 ein. Leser erfahren, wie Mikrocontroller zum Einlesen von Eingaben, zur Datenverarbeitung und zur Steuerung von Ausgaben in einer vorhersehbaren Echtzeit-Schleife eingesetzt werden. Mit überschaubarem Code lassen sich LEDs blinken, Sensoren auslesen, Motoren ansteuern und mit der Umgebung kommunizieren. Die interaktive REPL-Programmierschnittstelle fördert Experimentierfreude und schnelles Lernen.