Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Über mich
  • Deutsch
  • English
Menu

MicroPython mit ESP32: Grundlagen der Programmierung

Posted on 5. Juni 20246. Juni 2024 by Stefan Draeger

In diesem Beitrag möchte ich dir die Grundlagen zur Programmierung in MicroPython anhand des ESP32 D1 R32 näher bringen. Du kannst dieses jedoch auch sehr einfach auf andere Mikrocontroller anwenden, welche ebenso mit MicroPython arbeiten.

MicroPython & ESP32 - Grundlagen der Programmierung
Dieses Video auf YouTube ansehen.

Im letzten Beitrag MicroPython mit ESP32: Einführung in den ESP32 D1 R32 habe ich dir bereits den Mikrocontroller ESP32 D1 R32 vorgestellt und aufgezeigt wie dieser für MicroPython geflasht wird.

Inhaltsverzeichnis

  • MicroPython vs. Python
  • Aufbau des Quellcodes in MicroPython
  • Kommentare
  • Ausgaben auf der Kommandozeile
  • Erzeugen von Variablen
    • Verketten von Texten
  • Schleifen
    • For-Schleifen
    • While-Schleife
      • Endlosschleife
    • Abbrechen einer Schleife
    • Überspringen einer Ausführung innerhalb einer Schleife
  • If-Statements
    • Abzweigungen mit Else
    • weitere Prüfungen mit elif
  • Ausblick

MicroPython vs. Python

MicroPython ist eine vollständige Implementierung der Programmiersprache Python 3, die direkt auf eingebetteter Hardware wie dem ESP32 D1 R32 oder dem Raspberry Pi Pico läuft. Während beide Sprachen auf der gleichen Grundlage basieren, gibt es einige wesentliche Unterschiede und Anpassungen, die MicroPython besonders für den Einsatz in Mikrocontrollern geeignet machen:

  1. Interaktive Eingabeaufforderung (REPL): MicroPython bietet eine interaktive Eingabeaufforderung (REPL – Read-Eval-Print Loop), die es ermöglicht, Befehle sofort über USB-Serial auszuführen. Dies ist besonders nützlich für schnelles Testen und Debuggen von Code auf der Hardware.
  2. Eingebautes Dateisystem: MicroPython beinhaltet ein eingebautes Dateisystem, das auf dem Flash-Speicher des Mikrocontrollers gespeichert wird. Dies ermöglicht das Speichern und Verwalten von Skripten und Daten direkt auf dem Gerät.
  3. Modulspezifischer Zugriff auf Hardware: Der ESP32-Port von MicroPython umfasst spezielle Module, die den Zugriff auf hardware-spezifische Funktionen des Chips ermöglichen. Dazu gehören beispielsweise GPIO-Steuerung, PWM, I2C, SPI und andere Peripheriegeräte.
  4. Ressourceneffizienz: MicroPython ist so konzipiert, dass es auf ressourcenbeschränkten Geräten läuft. Es verwendet weniger Speicher und Rechenleistung im Vergleich zu einer vollständigen Python-Implementierung auf einem Desktop-Computer.
  5. Bibliotheken und Module: MicroPython enthält eine Auswahl an Standardbibliotheken und modulspezifischen Bibliotheken, die für die Entwicklung von Embedded-Anwendungen nützlich sind. Während einige Bibliotheken aus der Standard-Python-Bibliothek fehlen, gibt es spezielle Bibliotheken, die für die Arbeit mit Mikrocontrollern optimiert sind.

Diese Unterschiede machen MicroPython zu einer idealen Wahl für die Programmierung von Mikrocontrollern wie dem ESP32 D1 R32, da es die Leistungsfähigkeit und Einfachheit von Python mit der Effizienz und Funktionalität für Embedded-Systeme kombiniert.

Aufbau des Quellcodes in MicroPython

In MicroPython gibt es keine Klammern für das Zusammenfassen von Codeblöcken, du musst hier mit Einrückungen arbeiten. Du kannst hier wählen zwischen Leerschritte und Tabulatoren. Jedoch wenn du dich einmal auf eine Art festgelegt hast, dann musst du diese weiterverwenden!

Solltest du also nachfolgende Fehlermeldung erhalten, so prüfe zuerst die Anzahl der Leerschritte / Tabs vor deinen Codeblöcken.

Traceback (most recent call last):
  File "<stdin>", line 1
IndentationError: unexpected indent

Kommentare

Mit Kommentaren kannst du Text in deinen Quellcode einfügen, welcher keinen Einfluss auf das Verhalten des Codes hat. Kommentare werden meist verwendet, um komplizierten Code zu beschreiben oder für andere Entwickler einen leichteren Einstieg in den Quellcode zu schaffen.

Auch kannst du Code auskommentieren, um die Funktion / den Codeblock zu überspringen.

Du kannst einzelne Zeilen mit einem „#“ Symbol auskommentieren und wenn du einen mehrzeiligen Kommentar erstellen möchtest, dann leitest du diesen mit drei doppelte Anführungszeichen ein und beendest dieses auch damit.

# Hier steht ein einzeiliger Kommentar
"""
Hier können
mehrere Zeilen
gleichzeig auskommentiert werden
"""

Wenn du eine Entwicklungsumgebung verwendest, dann werden Kommentare immer speziell angezeigt, sodass diese sich vom eigentlichen Quellcode abheben.

MicroPython - Kommentare
MicroPython – Kommentare

Du kannst auch hinter dem Quellcode Kommentare setzen und so platzsparend Informationen hinterlassen.

MicroPython - Kommentar und Code in einer Zeile
MicroPython – Kommentar und Code in einer Zeile

Ausgaben auf der Kommandozeile

Zur Fehlersuche und für die Ausgabe von Sensordaten können wir den einfachen aber trotzdem mächtigen Befehl „print“ nutzen.

Diesem Befehl können wir einfach einen Text übergeben, welcher dann auf der Kommandozeile ausgegeben wird.

print("Hallo Welt!")
print("Test")

In der Kommandozeile siehst du die Ausgabe der beiden Texte, welche jeweils durch einen Zeilenumbruch getrennt sind.

MicroPython - Befehl print
MicroPython – Befehl print

Du kannst diesem Befehl jedoch auch mehrere Werte übergeben, dazu trennst du diese mit einem Komma.

print("Hallo Welt!", "Test")

Die Werte werden mit einem Komma getrennt und auf der Kommandozeile hintereinander (getrennt durch ein Leerzeichen) ausgegeben.

MicroPython - Befehl "print", mehrere Werte
MicroPython – Befehl „print“, mehrere Werte

Wenn du statt einem Leerzeichen ein anderes verwenden möchtest, dann kannst du diesen Separator mithilfe des optionalen Parameters „sep=“ benennen.

print("Hallo Welt!", "Test", sep="|")

In diesem Fall verwende ich zum Trennen der Werte einen geraden Strich. Du kannst auch beliebig andere Symbole, Buchstaben oder Zahlen verwenden.

Erzeugen von Variablen

In MicroPython bzw. Python gibt es keine Datentypen. Das heißt für uns, wir legen neue Variablen an, indem wir einfach einen Namen für unsere neue Variable schreiben, gefolgt von einem Wert.

Dabei kannst du diesen Wert auch jederzeit mit einem anderen Wert / Datentyp beliebig überschreiben.

MicroPython - Variablen
MicroPython – Variablen

Du kannst mit den bereits bekannten mathematischen Operatoren Zahlen Addieren, Subtrahieren usw. und natürlich mit dem Befehl print diesen Wert ausgeben.

Verketten von Texten

Wenn du Texte verketten / verbinden möchtest, dann verwendest du das + Symbol. Das funktioniert für Texte sehr einfach.

text1 = "Text1"
text2 = "Text2"
print(text1+text2)

Die beiden Texte werden einfach zusammengefügt und auf der Kommandozeile ausgegeben.

Wenn wir jedoch einen Text und eine Zahl verbinden möchten, dann können wir dieses nicht so einfach machen.

text1 = "Text1"
zahl1 = 2
print(text1+zahl1)

Der Code erzeugt die nebenstehende Fehlermeldung. Diese besagt, dass String & Int nicht mit der Funktion add zusammengefügt werden können.

Traceback (most recent call last):
File „“, line 3, in
TypeError: unsupported types for add: ’str‘, ‚int‘

Wir müssen also zunächst die Zahl in einen String umwandeln. Um die Zahl 1 umzuwandeln, können wir nun einfach jeweils ein doppeltes Anführungszeichen am Anfang und Ende hinzufügen, oder wir nutzen die Funktion „str“.

text1 = "Text1"
zahl1 = 2
print(text1+str(zahl1))

Die Funktion str erwartet einen Zahlenwert (Ganzzahl oder Gleitkommazahl) und wandelt diese in einen Text um und gibt diesen zurück.

Das kannst du zum Beispiel verwenden, wenn du einen Sensorwert auf einem Display mit dem zugehörigen Symbol dahinter anzeigen möchtest.

Schleifen

Wenn du Codeblöcke in einer bestimmten Anzahl wiederholen möchtest, oder dauerhaft wiederholen möchtest, dann benötigst du eine Schleife.

For-Schleifen

Um einen Block 5-mal zu wiederholen, können wir eine For-Schleife verwenden.

for i in range(5):
    print("i ist:", i)

Du kannst den Index i innerhalb der For-Schleife verwenden und auf diesen reagieren.

Die Funktion range liefert dir eine Liste von Zahlen, von 0 bis 4 (insgesamt 5). Wenn du die Zahlenfolge 1 bis 6 möchtest, kannst du dieser Funktion wie folgt anpassen.

for i in range(1, 6):
    print("i ist:", i)

While-Schleife

Eine While-Schleife wird verwendet, um einen Ausdruck zu prüfen, um diese innerhalb der Schleife abzubrechen.

zahl = 5
while(zahl > 0):
 print(zahl)
 zahl -=1

Innerhalb der While-Schleife wird die Variable zahl um 1 verringert und im Kopf der Schleife wird geprüft, ob dieser Wert größer 0 ist. Sobald der Wert der Variable zahl den Wert 0 erreicht, wird die Schleife abgebrochen.

Endlosschleife

Mit der While-Schleife kannst du eine Endlosschleife starten, dazu übergibst du dieser lediglich ein True.

while True:
    print("Hallo Welt!")

Dieser kleine Code bewirkt nun, dass auf der Kommandozeile der Text „Hallo Welt!“ fortlaufend ausgegeben wird.

Abbrechen einer Schleife

Wenn du innerhalb der Schleife diese abbrechen möchtest, dann verwendest du den Befehl break. Mit diesem Aufruf wird dann sofort die Schleife verlassen und der nachfolgende Code ausgeführt (soweit vorhanden).

while True:
    print("Hallo Welt!")
    break

In diesem Beispiel startet die Endlosschleife, gibt den Text „Hallo Welt!“ aus und sofort danach wird diese abgebrochen.

Natürlich ergibt dieser Code wenig Sinn, jedoch mit einem später vorgestellten If-Statement wird etwas mehr Funktion geschaffen.

Überspringen einer Ausführung innerhalb einer Schleife

Wenn du die Schleife nicht abbrechen möchtest, sondern nur die Ausführung der Schleife überspringen möchtest, dann verwendest du den Befehl continue. Damit wird wieder zum Kopf gesprungen und von vorne gestartet.

for i in range(1,6):
    if i == 2:
        continue
    print(i)

In der Ausgabe siehst du das die Zahl 2 übersprungen wurde, das liegt daran das wir im Code prüfen ob der aktuelle Index gleich 2 ist und wenn dieses so ist, soll die Ausführung an dieser Stelle abgebrochen werden.

Anders als bei break wird die Schleife jedoch fortgeführt.

If-Statements

Mit If-Statements kannst du innerhalb deines Quellcodes bedingten Code erzeugen. Du prüfst innerhalb des Statements einen Ausdruck welcher einen Wahrheitswert hat True/False 1/0.

test = True
if test:
 print("Der Wert von test ist Wahr!")

Man muss bei boolschen Werten nicht unbedingt mit einem doppelten Gleichheitszeichen prüfen, hier reicht es aus den Wert hineinzuschreiben.

if test == True:
#oder
if test:

Genaus kann man auch prüfen ob ein Wert Falsch ist.

if test == False:
#oder
if !test:

Zahlenwerte kannst du mit den nachfolgenden Symbolen prüfen:

  • prüfen ob ein Wert größer ist >
  • prüfen ob ein Wert größer gleich ist >=
  • prüfen ob ein Wert kleiner ist <
  • prüfen ob ein Wert kleiner gleich ist <=
  • prüfen ob ein Wert ungleich ist !=
  • prüfen ob ein Wert gleich ist ==

Abzweigungen mit Else

Mit dem zusätzlichen Befehl else und else if können wir für das geschriebene If-Statement eine weitere Prüfung hinzufügen. Im Fall wenn eine boolsche Variable geprüft wird, gibt es nur zwei fälle Wahr oder Falsch, jedoch bei Zahlenwerten können wir auch prüfen ob die Werte größer, kleiner und gleich und ungleich sind.

test = 1
if test > 0:
 print("Der Wert von test ist größer 0")
else:
 print("Der Wert von test ist kleiner 1")

Im rechten Beispiel wird die Variable test geprüft ob die größer 0 ist. Wenn dieses nicht so ist (also der Wert ist kleiner 1) dann wird der Text „Der Wert von test ist kleiner 1“ ausgegeben.

weitere Prüfungen mit elif

Wenn du weitere Prüfungen hinzufügen möchtest dann kannst du dieses mit elif machen, jedoch musst du bedenken das wenn einmal ein Statement zu einer Ausführung geführt hat die anderen Prüfungen nicht ausgeführt / geprüft werden!

test = 17
if test > 0 and test < 10:
 print("Der Wert von test ist zwischen 1 und 9.")
elif test >= 10 and test < 20:
 print("Der Wert von test ist zwischen 10 und 19.")
elif test >= 20:
 print("Der Wert von test ist größer gleich 20.")

In diesem Beispiel wird geprüft ob sich der Wert der Variable test zwischen bestimmten Werten befindet oder größer gleich 20 ist.

Ausblick

Mit diesem Beitrag habe ich dir nun einen Überblick über die Programmiersprache MicroPython anhand von Beispielen gegeben. Jedoch ist dieses nur der „normale“ Funktionsumfang, bei Mikrocontroller wird es schon etwas spezieller denn hier können wir Schnittstellen, GPIO Pins etc. ansteuern und somit Sensoren / Aktoren bedienen.

Wie du die GPIOs ansteuern kannst zeige ich dir im nächsten Beitrag anhand von einfachen LEDs, Taster usw.

1 thought on “MicroPython mit ESP32: Grundlagen der Programmierung”

  1. Pingback: MicroPython mit ESP32: GPIO-Pins steuern – LEDs und Taster - Technik Blog

Schreibe einen Kommentar Antworten abbrechen

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

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}