{"id":4337,"date":"2025-09-01T15:49:38","date_gmt":"2025-09-01T13:49:38","guid":{"rendered":"https:\/\/staging.elv.eqxt.de\/?p=4337"},"modified":"2026-04-15T12:27:08","modified_gmt":"2026-04-15T10:27:08","slug":"esp32-einstieg-micropython","status":"publish","type":"post","link":"https:\/\/de.elv.com\/elvjournal\/esp32-einstieg-micropython\/","title":{"rendered":"ESP32: Einstieg in MicroPython"},"content":{"rendered":"\n<p class=\"has-gray-light-color has-text-color has-link-color has-h-5-font-size wp-elements-b8911535c41d819bd7bd637a08003119\"><strong>Python \u2013 der neue Star am Programmiersprachen-Himmel?<\/strong><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">ESP32: Einstieg in MicroPython<\/h1>\n\n\n\n<p><strong>Python ist inzwischen eine der am h\u00e4ufigsten verwendeten, einfachsten und am leichtesten zu erlernenden Programmiersprachen. Das Aufkommen von MicroPython macht die Programmierung von Mikrocontroller-Systemen sehr einfach und unkompliziert. Damit ist die Programmiersprache auch f\u00fcr Einsteiger hervorragend geeignet.<\/strong><\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Einfacher Einstieg<\/h2>\n\n\n\n<p>Ein Ziel von <a href=\"https:\/\/www.micropython.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">MicroPython<\/a> ist es, die Programmierung digitaler Elektronik so einfach wie m\u00f6glich zu gestalten. Die Sprache soll von einem m\u00f6glichst gro\u00dfen Anwenderkreis verwendet und nutzbringend eingesetzt werden k\u00f6nnen. MicroPython wird von Hobbyanwendern und P\u00e4dagogen verwendet und kommt sowohl im wissenschaftlichen Bereich als auch bei professionellen Entwicklern zum Einsatz. Bei den Schwergewichten der IT-Branche wie etwa Google z\u00e4hlt Python seit Langem zu den bevorzugten Sprachen \u2013 aber auch viele britische Sch\u00fcler lernen beispielsweise MicroPython mit dem BBC micro:bit.<\/p>\n\n\n\n<p>Durch vielf\u00e4ltige Zusatzmodule wie <a href=\"https:\/\/scikit-learn.org\/stable\/\" target=\"_blank\" rel=\"noreferrer noopener\">Scikit<\/a>, <a href=\"https:\/\/numpy.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">NumPy<\/a> oder <a href=\"https:\/\/scipy.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">SciPy<\/a> stehen umfangreiche M\u00f6glichkeiten zur Verf\u00fcgung, die von wissenschaftlicher Datenanalyse bis hin zu Machine-Learning und k\u00fcnstlicher Intelligenz reichen. Durch die einfache Syntax ist Python dennoch einsteigerfreundlich und leicht zu verstehen. So ist der Programmcode, um eine LED zum Blinken zu bringen, auch ohne Programmierkenntnisse leicht verst\u00e4ndlich:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>from machine import Pin\nfrom time import sleep\n\nled = Pin(2, Pin.OUT)\n\nwhile True:\n    led.on()\n    sleep(1)\n    led.off()\n    sleep(1)<\/code><\/pre>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Ein besonderes Merkmal von MicroPython ist die Ausstattung mit einer interaktiven REPL-Konsole (Read-Evaluate-Print-Loop). Befehle sind damit direkt auf dem Zielsystem ausf\u00fchrbar. Auf diese Weise kann ein Code schnell getestet werden, ohne dass nach jeder Programm\u00e4nderung neu kompiliert oder Programme erneut hochgeladen werden m\u00fcssen.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">(Micro)Python vs. C++<\/h2>\n\n\n\n<p>Im direkten Vergleich von Python mit C\/C++ wird inzwischen immer h\u00e4ufiger Python der Vorzug gegeben. So belegt Python in den Ranglisten der beliebtesten Programmiersprachen h\u00e4ufig den ersten Platz, w\u00e4hrend C\/C++ auf die hinteren R\u00e4nge abgerutscht ist. Gr\u00fcnde f\u00fcr diese Beliebtheit sind unter anderem:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Einsteigerfreundlichkeit<\/li>\n\n\n\n<li>eine F\u00fclle von Tutorials und Beispielcodes f\u00fcr Python<\/li>\n\n\n\n<li>umfangreiche Bibliotheken (Libraries)<\/li>\n\n\n\n<li>aktive Foren<\/li>\n<\/ul>\n\n\n\n<p>Insbesondere durch die aktive Community finden auch Einsteiger sehr schnell Antworten auf ihre Fragen. Dies ist ein wichtiger Vorteil gegen\u00fcber anderen Sprachen, die weniger beliebt sind oder von ihren Benutzern nicht so ausf\u00fchrlich im Internet diskutiert werden.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Unterschiede zwischen Python und C\/C++<\/h2>\n\n\n\n<p>Sowohl Python als auch C\/C++ wurden als universelle Programmiersprachen konzipiert. Dennoch unterscheiden sie sich in vielerlei Hinsicht voneinander. Bei C\/C++ muss der Programmcode zun\u00e4chst in eine f\u00fcr Maschinen verst\u00e4ndliche Version \u00fcbersetzt werden (Kompilierung), die dann vom Prozessor abgearbeitet wird.<\/p>\n\n\n\n<p>Python dagegen wird interpretiert. Das bedeutet, dass der urspr\u00fcngliche Programmcode direkt vom Zielprozessor abgearbeitet wird. Eine Kompilierung ist daher nicht erforderlich. Python bietet daher die M\u00f6glichkeit, ein einmal geschriebenes Programm auf den verschiedensten Systemen auszuf\u00fchren. Dazu muss lediglich ein entsprechender Interpreter installiert sein. Python-Code kann also sowohl auf klassischen Computern unter Windows oder Linux als auch auf kleineren Einplatinensystemen wie dem Raspberry Pi ausgef\u00fchrt werden. Vor allem die Verwendung auf dem popul\u00e4ren Raspberry Pi hat mit zur zunehmenden Beliebtheit von Python beigetragen.<\/p>\n\n\n\n<p>Mit neuen leistungsstarken Controllern wie beispielsweise dem ESP32 ist es nun sogar m\u00f6glich geworden, Python auch in diesem Bereich effizient und komfortabel einzusetzen. Zu diesem Zweck wurde sogar eine eigene Variante, das sogenannte MicroPython entwickelt.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Python \u2013 Pro und Contra<\/h2>\n\n\n\n<p>Python ist bekannt f\u00fcr seine Einfachheit und die ausgezeichnete Lesbarkeit des Programmcodes. Fest integrierte Konstrukte sorgen daf\u00fcr, dass Programme sowohl im kleinen als auch im gro\u00dfen Ma\u00dfstab problemlos entwickelt werden k\u00f6nnen. Python ist damit hervorragend skalierbar. Die m\u00f6gliche Kapselung von Daten und Programmcode in \u00fcbersichtlichen, wiederverwendbaren Modulen, sogenannten \u201eObjekten\u201c, macht Python zu einer vollst\u00e4ndig objektorientierten Programmiersprache. C++ wird heutzutage im Allgemeinen vor allem in der hardwarenahen Programmierung verwendet. Klassische Python-Varianten waren dazu bislang nicht gut geeignet. Mit MicroPython wird diese L\u00fccke nun geschlossen.<\/p>\n\n\n\n<p>C++ umfasst neben Clientanwendungen auch leistungsstarke Serverapplikationen sowie Ger\u00e4tetreiber und eingebettete Treiberkomponenten. Der Anwendungsbereich erstreckt sich also von der Systemsoftware bis hin zur Anwendungsprogrammierung. Da Python im Vergleich zu C eine noch relativ junge Programmiersprache ist, hat es noch nicht diese universelle Verbreitung in allen Teilbereichen der Informationstechnik gefunden. Allerdings zeigt sich, dass Python auf praktisch allen Gebieten im Vormarsch ist.<\/p>\n\n\n\n<p>Python wird mit einer Vielzahl integrierter Standardbibliotheken geliefert. Diese Funktionen machen es zu einer Sprache mit hoher Benutzerfreundlichkeit. Interpreter f\u00fcr Python sind f\u00fcr praktisch alle wichtigen Betriebssysteme verf\u00fcgbar<\/p>\n\n\n\n<p>F\u00fcr den Einsteiger hat Python einige Vorteile zu bieten. So kann eine Variable direkt ohne Deklaration verwendet werden. In den meisten anderen Sprachen muss der Datentyp deklariert werden, bevor die Variable verwendbar ist. Zudem verf\u00fcgt Python \u00fcber eine integrierte Speicherbereinigung und einen dynamischen Zuweisungsprozess, der eine effiziente Speicherverwaltung erm\u00f6glicht. Man muss daher kaum auf Zeiger (engl. pointer) oder \u00e4hnliche, f\u00fcr den Einsteiger meist schwer verst\u00e4ndliche Konstrukte zur\u00fcckgreifen.<\/p>\n\n\n\n<p>Die <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">Tabelle 1<\/mark> fasst die Vor- und Nachteile der beiden in der Controller-Programmierung vorherrschenden Sprachen zusammen. Der Vollst\u00e4ndigkeit halber wurde auch noch die Arduino-IDE mit aufgenommen, da diese eine sehr beliebte Alternative zur Programmierung mit Python darstellt.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h6 class=\"wp-block-heading\">Tabelle 1: Vor- und Nachteile der in der Controller-Programmierung vorherrschenden Sprachen<\/h6>\n\n\n\n<figure class=\"wp-block-table has-text-small-font-size\"><table class=\"has-fixed-layout\"><tbody><tr><td colspan=\"1\" rowspan=\"1\"><\/td><td colspan=\"1\" rowspan=\"1\"><strong>Python<\/strong><\/td><td colspan=\"1\" rowspan=\"1\"><strong>Arduino-IDE<\/strong><\/td><td colspan=\"1\" rowspan=\"1\"><strong>C\/C++<\/strong><\/td><\/tr><tr><td colspan=\"1\" rowspan=\"1\"><strong>Aktuelle Version<\/strong><\/td><td colspan=\"1\" rowspan=\"1\">3.7.3 und 2.7.16<\/td><td colspan=\"1\" rowspan=\"1\">1.8.9<\/td><td colspan=\"1\" rowspan=\"1\">z. B. GCC 9.2<\/td><\/tr><tr><td colspan=\"1\" rowspan=\"1\"><strong>Verf\u00fcgbarkeit<\/strong><\/td><td colspan=\"1\" rowspan=\"1\">Windows, Linux, Mac OS, AIX, IBM i, iOS, z\/OS, Solaris, VMS<\/td><td colspan=\"1\" rowspan=\"1\">Windows, Linux, Mac OS<\/td><td colspan=\"1\" rowspan=\"1\">Windows, Linux, Mac OS u. a.<\/td><\/tr><tr><td colspan=\"1\" rowspan=\"1\"><strong>Einsteigerfreundlichkeit<\/strong><\/td><td colspan=\"1\" rowspan=\"1\">Hoch, viele Tutorials<br><br>Ausf\u00fchrliche Dokumentationen<br><br>IDE verf\u00fcgbar<\/td><td colspan=\"1\" rowspan=\"1\">Sehr gut<br><br>Sehr einfache und intuitiv zu<br>bedienende IDE<\/td><td colspan=\"1\" rowspan=\"1\">Gering, da komplexe Toolchain erforderlich (aufwendige IDE, Linker etc.)<\/td><\/tr><tr><td colspan=\"1\" rowspan=\"1\"><strong>Syntax<\/strong><\/td><td colspan=\"1\" rowspan=\"1\">Klar und einfach lesbar<br><br>Keine zus\u00e4tzlichen Sonderzeichen wie Semikolons und geschweifte Klammern etc.<br><br>Funktionale Leerzeichen sorgen f\u00fcr konsistente Einr\u00fcckungen<br><br>Verwendung nat\u00fcrlicher englischer W\u00f6rter wie \u201eund&#8220; und \u201eoder&#8220;, und damit weniger undurchsichtige Symbole<\/td><td colspan=\"1\" rowspan=\"1\">Eng an C angelehnt<br><br>Vereinfacht durch spezielle Funktionen wie digitalWrite(), loop etc.<\/td><td colspan=\"1\" rowspan=\"1\">Komplexe Syntax<br><br>Verwendung von Sonderzeichen (++, &gt;&gt;, || etc.), dadurch f\u00fcr Einsteiger schwer lesbarer Code<\/td><\/tr><tr><td colspan=\"1\" rowspan=\"1\"><strong>Bibliotheken und Libraries<\/strong><\/td><td colspan=\"1\" rowspan=\"1\">Gro\u00dfe Standardbibliothek<br><br>Umfangreiche Applikations-Libraries frei verf\u00fcgbar<\/td><td colspan=\"1\" rowspan=\"1\">Umfangreiche Applikations-Libraries frei verf\u00fcgbar<\/td><td colspan=\"1\" rowspan=\"1\">Standardbibliothek verf\u00fcgbar<br><br>Professionelle Libraries z. T. kostenpflichtig<\/td><\/tr><tr><td colspan=\"1\" rowspan=\"1\"><strong>Community<\/strong><\/td><td colspan=\"1\" rowspan=\"1\">Aktive und hilfreiche Communities stehen zur Verf\u00fcgung<\/td><td colspan=\"1\" rowspan=\"1\">Sehr viele Communities, allerdings meist nur im nicht professionellen Bereich<\/td><td colspan=\"1\" rowspan=\"1\">Communities oft auf professionelle Anwendungen beschr\u00e4nkt<\/td><\/tr><tr><td colspan=\"1\" rowspan=\"1\"><strong>Anwendungsbandbreite<\/strong><\/td><td colspan=\"1\" rowspan=\"1\">Professioneller und nicht-professioneller Einsatz<br><br>Z. B. eine der Hauptsprachen bei Google<br><br>Interfaces mit anderen Sprachen wie C<\/td><td colspan=\"1\" rowspan=\"1\">\u00dcberwiegend Hobby und <br>Maker-Szene<br><br>F\u00fcr professionelle Projekte weniger geeignet<\/td><td colspan=\"1\" rowspan=\"1\">Industrielle und professionelle Anwendungen<\/td><\/tr><tr><td colspan=\"1\" rowspan=\"1\"><strong>Zukunftssicherheit<\/strong><\/td><td colspan=\"1\" rowspan=\"1\">Kaum Unterst\u00fctzung f\u00fcr Parallelit\u00e4t<br><br>Version 2.x immer noch aktiv, da viele Libraries vorhanden<br><br>F\u00fcr zukunftssichere Projekte mit Version 3.x starten<\/td><td colspan=\"1\" rowspan=\"1\">Eingeschr\u00e4nkt, da \u00fcberwiegend im Hobbybereich eingesetzt<\/td><td colspan=\"1\" rowspan=\"1\">Unsicher<br><br>Langfristig abnehmende Tendenz<\/td><\/tr><tr><td colspan=\"1\" rowspan=\"1\"><strong>Programmstruktur<\/strong><\/td><td colspan=\"1\" rowspan=\"1\">Python-Programme sind im Vergleich zu Code in C++ meist deutlich k\u00fcrzer<br><br>Schnelles Prototyping und effiziente Codierung m\u00f6glich<\/td><td colspan=\"1\" rowspan=\"1\">Einfach<\/td><td colspan=\"1\" rowspan=\"1\">Komplex<br><br>Vergleichsweise langer Code<\/td><\/tr><tr><td colspan=\"1\" rowspan=\"1\"><strong>Ablaufgeschwindigkeit<\/strong><\/td><td colspan=\"1\" rowspan=\"1\">Python ist langsamer als C++<\/td><td colspan=\"1\" rowspan=\"1\">Deutlich langsamer als C++, aufgrund der aufwendigen Zusatzfunktionen<\/td><td colspan=\"1\" rowspan=\"1\">Sehr schnell und effizient<\/td><\/tr><tr><td colspan=\"1\" rowspan=\"1\"><strong>Installation<\/strong><\/td><td colspan=\"1\" rowspan=\"1\">Vergleichsweise aufwendige Installation unter Windows<\/td><td colspan=\"1\" rowspan=\"1\">Sehr einfach<\/td><td colspan=\"1\" rowspan=\"1\">Aufwendige und komplexe Installation<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">MicroPython f\u00fcr den ESP32<\/h2>\n\n\n\n<p>MicroPython (\u00b5P) ist eine spezielle Implementierung von Python 3 f\u00fcr Mikrocontroller und Embedded Systems. Da die Micro-Version dem klassischen Python, das auf PCs und Laptops benutzt wird, sehr \u00e4hnlich ist, sollten routinierte Programmierer mit dem Umstieg keine Probleme haben.<\/p>\n\n\n\n<p>Um mit \u00b5P auf einem Controller arbeiten zu k\u00f6nnen, muss dort zun\u00e4chst ein Interpreter installiert werden, da Python ja nicht kompiliert wird. In diesem Abschnitt wird erl\u00e4utert, wie die MicroPython-Firmware auf den ESP32 geladen werden kann. Mit der hier verwendeten \u00b5PyCraft-IDE (Integrated Development Environment = integrierte Entwicklungsumgebung [5]) sind die meisten ESP-basierten Boards programmierbar. Nach dem Durcharbeiten dieses Abschnittes sind bereits viele Funktionen des ESP-Controllers nutzbar. Insbesondere k\u00f6nnen die einzelnen Ports aktiviert und damit z. B. LEDs angesteuert werden.<\/p>\n\n\n\n<p>Bis auf wenige Ausnahmen sind alle Leistungsmerkmale und Funktionen von Python auch in \u00b5P verf\u00fcgbar. Der gr\u00f6\u00dfte Unterschied besteht darin, dass die Micro-Version f\u00fcr den Einsatz auf Mikrocontrollersystemen konzipiert wurde und daher die klassischen, nur f\u00fcr den PC erforderlichen Routinen fehlen.<\/p>\n\n\n\n<p>Aus diesem Grund enth\u00e4lt MicroPython auch nicht die vollst\u00e4ndige Standardbibliothek, sondern nur die f\u00fcr Mikrocontroller relevanten Teile. Daf\u00fcr sind alle f\u00fcr den Zugriff auf die verwendete Hardware erforderlichen Module vorhanden. Mit den entsprechenden Bibliotheken kann man daher sehr einfach auch auf die GPIOs zugreifen. Speziell f\u00fcr den ESP32 sind au\u00dferdem Module zur Unterst\u00fctzung von Netzwerkverbindungen WiFi und Bluetooth verf\u00fcgbar.<\/p>\n\n\n\n<p>Folgende Boards werden unterst\u00fctzt:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ESP32<\/li>\n\n\n\n<li>ESP8266<\/li>\n\n\n\n<li>PyBoard<\/li>\n\n\n\n<li>Teensy 3.X<\/li>\n\n\n\n<li>WiPy \u2013 Pycom<\/li>\n\n\n\n<li>andere ESP32-basierte Boards<\/li>\n<\/ul>\n\n\n\n<p>Obwohl noch nicht alle Funktionen des ESP-Controllers in MicroPython vollst\u00e4ndig verf\u00fcgbar sind, enthalten die Bibliotheken die wichtigsten Befehle und Routinen. Daher k\u00f6nnen viele Projekte und Anwendungen problemlos umgesetzt werden. Zudem schreitet die Implementierung der noch fehlenden Features rasch voran, sodass auch dieser kleine Sch\u00f6nheitsfehler in absehbarer Zeit beseitigt sein wird.<\/p>\n\n\n\n<p>Auf PC-Seite muss zun\u00e4chst die \u00b5PyCraft-IDE installiert werden. Diese ist f\u00fcr die wichtigsten Betriebssysteme wie<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Windows PC<\/li>\n\n\n\n<li>Mac OS X<\/li>\n\n\n\n<li>Linux Ubuntu<\/li>\n<\/ul>\n\n\n\n<p>verf\u00fcgbar.<\/p>\n\n\n\n<p>Falls es bei der Installation oder Verwendung von \u00b5PyCraft Probleme geben sollte, steht mit der <a href=\"https:\/\/thonny.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">Thonny-IDE<\/a> eine gute Alternative zu Verf\u00fcgung. Im Folgenden wird jedoch die PyCraft-Version verwendet, da diese bereits weit verbreitet ist. Zudem ist sie einfach und intuitiv zu bedienen und bestens f\u00fcr den Einsatz von ESP-Boards geeignet. Welche der beiden Varianten gew\u00e4hlt wird, bleibt aber letztendlich dem Anwender \u00fcberlassen.<\/p>\n\n\n\n<p>Der MicroPython-Interpreter ist nicht standardm\u00e4\u00dfig auf dem ESP32 verf\u00fcgbar. Daher muss die Anwendung zun\u00e4chst auf das Board geflasht werden. Hierf\u00fcr kann die auf einem PC oder Laptop installierte uPyCraft-IDE genutzt werden. Nachdem die MicroPython-Firmware auf Ihrem ESP32 installiert wurde, kann man auch sehr einfach beispielsweise zur Arduino-IDE zur\u00fcckkehren. Hierzu ist lediglich der neue C-Code mit der Arduino-IDE auf den Controller zu laden. Ein spezielles L\u00f6schverfahren ist nicht erforderlich. Soll anschlie\u00dfend jedoch wieder MicroPython verwendet werden, ist die MicroPython-Firmware neu zu flashen.<\/p>\n\n\n\n<p>Vor der Installation von \u00b5PyCraft-IDE sollte die neueste Version von Python 3.7.X auf dem verwendeten Computer installiert sein. Wenn dies nicht der Fall ist, kann dies mit den folgenden Anweisungen nachgeholt werden:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Herunterladen der Installationsdatei von der Python-Downloadseite unter <a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"http:\/\/www.python.org\/downloads\">www.python.org\/downloads<\/a><\/li>\n\n\n\n<li>Nach dem Download sollte sich auf dem Computer eine Datei mit dem Namen python-3.7.X.exe befinden. Ein Doppelklicken auf die Datei startet die Installation<\/li>\n\n\n\n<li>Option \u201eAdd Python 3.7 to PATH\u201c ausw\u00e4hlen und auf die Schaltfl\u00e4che \u201eInstall Now\u201c klicken<\/li>\n\n\n\n<li>Der Installationsvorgang sollte nach einigen Sekunden mit der Meldung \u201eSetup was successful\u201c abgeschlossen sein. Danach kann das Fenster geschlossen werden.<\/li>\n<\/ol>\n\n\n\n<p>Nun kann die \u00b5PyCraft-IDE f\u00fcr Windows oder auch ein anderes Betriebssystem unter <a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"http:\/\/docs.dfrobot.com\/upycraft\/\">http:\/\/docs.dfrobot.com\/upycraft\/<\/a> als uPyCraft_V1.x.exe heruntergeladen werden.<\/p>\n\n\n\n<p>Nach dem Klick auf die .exe-datei \u00f6ffnet sich die \u00b5PyCraft-IDE <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">(Bild 1)<\/mark>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized is-style-bordered\"><img loading=\"lazy\" decoding=\"async\" width=\"1026\" height=\"582\" src=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/bild01_python_esp32.jpg\" alt=\"Bild 1: \u03bcPyCraft-IDE (Beschreibung der Fenster siehe Text)\" class=\"wp-image-7999\" style=\"width:746px;height:auto\" srcset=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/bild01_python_esp32.jpg 1026w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/bild01_python_esp32-300x170.jpg 300w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/bild01_python_esp32-768x436.jpg 768w\" sizes=\"auto, (max-width: 1026px) 100vw, 1026px\" \/><figcaption class=\"wp-element-caption\">Bild 1: \u03bcPyCraft-IDE (Beschreibung der Fenster siehe Text)<\/figcaption><\/figure>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-gray-lightest-100-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><strong>Tipp: <\/strong>Unter Umst\u00e4nden erscheint beim Start des Programms als Fehlermeldung, dass die Schrift SourceCodePro nicht vorhanden ist. Diese kann mit einer Internet-Suche nach Source CodePro-Fonts gefunden und heruntergeladen werden. Unter Windows muss dann die Datei <em>SourceCodePro-Regular.ttf<\/em> in <em>SourceCodePro.ttf<\/em> umbenannt und per Rechtsklick <strong>f\u00fcr alle Benutzer<\/strong> installiert werden. Dann verschwindet der Hinweis auf die fehlende Schrift beim n\u00e4chsten Start der \u00b5PyCraft-IDE.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Nachdem die IDE auf dem Computer installiert ist, kann die ESP32-Firmeware auf den Chip geladen werden. Die aktuellste Version der MicroPython-Firmware f\u00fcr den ESP32 findet sich unter <a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"http:\/\/micropython.org\/download#esp32\">http:\/\/micropython.org\/download#esp32<\/a><\/p>\n\n\n\n<p>Dort scrollt man zum Abschnitt \u201eESP32\u201c. Der Link zum Herunterladen der aktuellen ESP32-Datei sieht zum Beispiel so aus: esp32-20190529-v1.11.bin<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-columns has-gray-lightest-100-background-color has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:55%\">\n<p><strong>Tipp:<\/strong> Im Folgenden arbeiten wir mit der JOY-iT Entwicklungsplatine <span data-tooltip=\"145164\" class=\"dhsv-product-tooltip\">NodeMCU mit ESP32<\/span><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\"> (Bild 2) <\/mark>&#8211; andere Boards mit dem ESP32 sollten aber ebenfalls in der beschriebenen Form arbeiten. Gegebenenfalls muss hier aber der Pin, an der die LED angeschlossen ist, ge\u00e4ndert werden.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full is-style-bordered\"><img loading=\"lazy\" decoding=\"async\" width=\"1138\" height=\"838\" src=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/bild02_python_esp32.jpg\" alt=\"Bild 2: JOY-iT Entwicklungsplatine NodeMCU mit ESP32\" class=\"wp-image-8000\" srcset=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/bild02_python_esp32.jpg 1138w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/bild02_python_esp32-300x221.jpg 300w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/bild02_python_esp32-768x566.jpg 768w\" sizes=\"auto, (max-width: 1138px) 100vw, 1138px\" \/><figcaption class=\"wp-element-caption\">Bild 2: JOY-iT Entwicklungsplatine NodeMCU mit ESP32<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Nun kann man in der \u00b5PyCraft-IDE unter Tools \u2192 Serial den ESP32-COM-Port ausw\u00e4hlen, hier z. B. als COM12:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-style-bordered\"><img loading=\"lazy\" decoding=\"async\" width=\"604\" height=\"256\" src=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/bild03_python_esp32.jpg\" alt=\"Bild 3: Auswahl des Ports\" class=\"wp-image-8001\" srcset=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/bild03_python_esp32.jpg 604w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/bild03_python_esp32-300x127.jpg 300w\" sizes=\"auto, (max-width: 604px) 100vw, 604px\" \/><figcaption class=\"wp-element-caption\">Bild 3: Auswahl des Ports<\/figcaption><\/figure>\n\n\n\n<p>Wenn das ESP32-Board an den Computer angeschlossen ist, der ESP32-Port jedoch nicht in der \u00b5PyCraft-IDE erscheint, k\u00f6nnte eventuell der passende USB-Treiber fehlen. In diesem Fall muss dieser nachinstalliert werden. Ein entsprechender Treiber findet sich unter <a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https:\/\/www.silabs.com\/products\/development-tools\/software\/usb-to-uart-bridge-vcp-drivers\">https:\/\/www.silabs.com\/products\/development-tools\/software\/usb-to-uart-bridge-vcp-drivers<\/a><\/p>\n\n\n\n<p>Danach kann unter Tools \u2192 Board die Option \u201eesp32\u201c gew\u00e4hlt werden:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-style-bordered\"><img loading=\"lazy\" decoding=\"async\" width=\"486\" height=\"284\" src=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/bild04_python_esp32.jpg\" alt=\"Bild 4: Auswahl des Boardtyps\" class=\"wp-image-8002\" srcset=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/bild04_python_esp32.jpg 486w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/bild04_python_esp32-300x175.jpg 300w\" sizes=\"auto, (max-width: 486px) 100vw, 486px\" \/><figcaption class=\"wp-element-caption\">Bild 4: Auswahl des Boardtyps<\/figcaption><\/figure>\n\n\n\n<p>Nun kann \u00fcber Tools \u2192 BurnFirmware der MicroPython-Interpreter auf ESP32 geschrieben werden. Die passenden Optionen dazu lauten: board: esp32 burn_addr: 0x1000 erase_flash: yes COM: COMX (hier COM12, siehe oben)<\/p>\n\n\n\n<p>Unter \u201eUsers\u201c wird die heruntergeladene ESP32-BIN-Datei ausgew\u00e4hlt, dann auf \u201eok\u201c geklickt.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-style-bordered\"><img loading=\"lazy\" decoding=\"async\" width=\"535\" height=\"297\" src=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/bild05_python_esp32.jpg\" alt=\"Bild 5: Die Parameter zum Flashen der Firmware\" class=\"wp-image-8003\" srcset=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/bild05_python_esp32.jpg 535w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/bild05_python_esp32-300x167.jpg 300w\" sizes=\"auto, (max-width: 535px) 100vw, 535px\" \/><figcaption class=\"wp-element-caption\">Bild 5: Die Parameter zum Flashen der Firmware<\/figcaption><\/figure>\n\n\n\n<p>Wenn alle Einstellungen korrekt ausgew\u00e4hlt sind, wird die Taste &#8222;Boost&#8220; auf dem ESP32-Modul gedr\u00fcckt \u2013 bei manchen Modulen (z. B. LOLIN D32) startet das Flashen automatisch. Sobald der Vorgang \u201eEraseFlash&#8220; beginnt, kann die Taste losgelassen werden. Nach einigen Sekunden sollte die Firmware auf das ESP32-Board geflasht sein.<\/p>\n\n\n\n<p>Falls die Anzeige \u201eEraseFlash&#8220; nicht startet oder die Fehlermeldung \u201eErase false&#8220; angezeigt wird, ist es oftmals hilfreich, die beschriebenen Schritte zu wiederholen. Auch die Taste &#8222;Boost&#8220; ist erneut zu dr\u00fccken, um sicherzustellen, dass der ESP32 in den Flashmodus wechselt.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Laden des ersten MicroPython-Programms<\/h2>\n\n\n\n<p>Bevor das erste Anwendungsprogramm auf den ESP geladen wird, sollte man sich mit der \u00b5PyCraft-IDE vertraut machen. Diese enth\u00e4lt, analog zu vielen anderen Programmiertools, die folgenden Unterfenster <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">(siehe Bild 1)<\/mark>:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Ordner und Dateien<\/li>\n\n\n\n<li>Editor<\/li>\n\n\n\n<li>MicroPython Shell\/Terminal<\/li>\n\n\n\n<li>Werkzeuge<\/li>\n<\/ol>\n\n\n\n<p>Die einzelnen Fenster haben die folgenden Funktionen und Aufgaben:<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">\u2460 Ordner und Dateien<\/h3>\n\n\n\n<p>Der Ger\u00e4teordner (\u201edevice&#8220;) zeigt die Dateien an, die derzeit auf dem ESP-Board gespeichert sind. Wenn das Board \u00fcber eine serielle Verbindung mit uPyCraft_IDE verbunden ist, sollten beim \u00d6ffnen des Ger\u00e4teordners alle gespeicherten Dateien geladen werden. Standardm\u00e4\u00dfig ist hier nur eine boot.py-Datei sichtbar. Um den Anwendungscode auszuf\u00fchren, wird empfohlen, eine main.py-Datei zu erstellen.<\/p>\n\n\n\n<p><strong>boot.py:<\/strong> wird ausgef\u00fchrt, wenn das Board gestartet wird<br><strong>main.py: <\/strong>Dies ist das Hauptskript, das den Anwendungscode enth\u00e4lt. Es wird unmittelbar nach boot.py ausgef\u00fchrt.<\/p>\n\n\n\n<p>Der SD-Ordner ist f\u00fcr den Zugriff auf Dateien vorgesehen, die auf SD-Karten gespeichert sind. Dieser ist nur auf Boards mit einem SD-Kartensteckplatz verf\u00fcgbar. In der uPy_lib werden die integrierten IDE-Bibliotheksdateien angezeigt.<\/p>\n\n\n\n<p>Schlie\u00dflich ist unter \u201eworkSpace&#8220; ein Verzeichnis zum Speichern von Anwendungsdateien vorhanden. Diese Dateien werden auf dem Computer in einem vom Anwender festgelegten Verzeichnis gespeichert. Hier k\u00f6nnen alle aktiven Dateien griffbereit abgelegt werden. Wenn \u00b5PyCraft zum ersten Mal verwendet wird, empfiehlt es sich daher, ein geeignetes Arbeitsverzeichnis zu erstellen.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">\u2461 Editor-Bereich<\/h3>\n\n\n\n<p>Hier wird der Code f\u00fcr die .py-Anwendungsprogramme erstellt. Der Editor \u00f6ffnet f\u00fcr jede Datei eine neue Registerkarte.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">\u2462 MicroPython Shell\/Terminal<\/h3>\n\n\n\n<p>Die in der MicroPython-Shell eingegebenen Befehle werden sofort vom ESP-Board ausgef\u00fchrt. Das Terminal liefert auch Informationen \u00fcber den Status eines laufenden Programms. Hier erscheinen zudem eventuelle Syntaxfehler im aktuellen Programm oder Fehlermeldungen beim Hochladen usw.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">\u2463 Werkzeuge<\/h3>\n\n\n\n<p>Mit den Symbolen ganz rechts k\u00f6nnen Aufgaben schnell und direkt ausgef\u00fchrt werden. Die Schaltfl\u00e4chen haben die folgenden Funktionen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>New File:<\/strong> Erstellt eine neue Datei im Editor<\/li>\n\n\n\n<li><strong>Open File:<\/strong> \u00d6ffnet eine Datei auf dem Computer<\/li>\n\n\n\n<li><strong>Save File:<\/strong> Speichert eine Datei<\/li>\n\n\n\n<li><strong>Download and run:<\/strong> Code auf das ESP-Board hochladen und ausf\u00fchren<\/li>\n\n\n\n<li><strong>Stop: <\/strong>Beenden der Code-Ausf\u00fchrung. Dies entspricht der Eingabe von STRG + C in der Shell<\/li>\n\n\n\n<li><strong>Connect\/Disconnect:<\/strong> Verbinden oder Trennen der seriellen Schnittstelle. Der serielle Anschluss kann unter Extras \u2192 Serial ausgew\u00e4hlt werden<\/li>\n\n\n\n<li><strong>Undo:<\/strong> Macht die letzte \u00c4nderung im Code-Editor r\u00fcckg\u00e4ngig<\/li>\n\n\n\n<li><strong>Redo:<\/strong> Letzte \u00c4nderung im Code-Editor wiederholen<\/li>\n\n\n\n<li><strong>Syntaxcheck:<\/strong> \u00dcberpr\u00fcft die Syntax des aktuellen Codes<\/li>\n\n\n\n<li><strong>Clear:<\/strong> L\u00f6scht die Shell\/Terminal-Fenstermeldungen<\/li>\n<\/ul>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Starten des ersten Python-Programms<\/h2>\n\n\n\n<p>Um mit dem Erstellen eines Programms und dem Ausf\u00fchren von Codes auf dem ESP32 vertraut zu werden, soll im Folgenden ein kurzes Python-Programm entwickelt und ausgef\u00fchrt werden, welches eine LED blinken l\u00e4sst. Zun\u00e4chst muss dazu die Kommunikation mit dem ESP-Board hergestellt werden:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u00dcber Tools \u2192 Board das aktuelle Board ausw\u00e4hlen<\/li>\n\n\n\n<li>In Tools \u2192 Port den COM-Port ausw\u00e4hlen, mit dem das ESP-Board verbunden ist<\/li>\n\n\n\n<li>Die Connect-Taste stellt dann die serielle Kommunikation mit dem ESP32-Modul her<\/li>\n\n\n\n<li>Nach einer erfolgreichen Verbindung mit dem Board wird \u201e&gt;&gt;&gt;\u201c im Shell-Fenster angezeigt. Nun kann ein Print-Befehl eingeben werden, um zu testen, ob die Kommunikation korrekt funktioniert:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>&gt;&gt;&gt; print (\u201eTest\u201c)<\/code><\/pre>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Darauf hin sollte die Antwort<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>Test\n&gt;&gt;&gt;<\/code><\/pre>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>im Terminal-Fenster erscheinen.<\/p>\n\n\n\n<p>Wenn die Meldung ausgegeben wird, ist alles in Ordnung. Andernfalls muss gepr\u00fcft werden, ob die serielle Kommunikation mit dem Board hergestellt ist und ob die MicroPython-Firmware erfolgreich auf das Board geflasht wurde. <br><br>Nun kann eine main.py-Datei auf dem Board erstellt werden:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Auf die Schaltfl\u00e4che \u201eNew File\u201c klicken, um eine neue Datei zu erstellen<\/li>\n\n\n\n<li>Die neue Datei wird in main.py umbenannt (Schaltfl\u00e4che Save) und auf dem Computer im vorher festgelegten Workspace gespeichert<\/li>\n\n\n\n<li>Nun wird in der uPyCraft-IDE ein neuer Eintrag mit der Datei main.py angezeigt.<\/li>\n<\/ol>\n\n\n\n<p><br>Jetzt kann das Blink-LED-Skript hochgeladen werden. Dazu wird<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>der Code aus der ersten Seite des Artikels in den Editor in der Datei main.py geschrieben<\/li>\n\n\n\n<li>dann wird durch anklicken der Schaltfl\u00e4che \u201eStop\u201c ein eventuell noch laufendes Skript angehalten<\/li>\n\n\n\n<li>Mit einem Klick auf die Schaltfl\u00e4che \u201eDownloadAndRun\u201c wird das Skript auf den Controller geschrieben<\/li>\n\n\n\n<li>Im Shell-Fenster sollte nun die Meldung \u201edownload ok\u201c angezeigt werden<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>&gt;&gt;&gt;\nReady to download this file,please wait!\ndownload ok\nexec(open('boot.py').read(),globals())<\/code><\/pre>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>und die integrierte LED des ESP32-Boards sollte im Sekundentakt blinken. Damit wurde das erste Python-Programm erfolgreich auf den Controller \u00fcbertragen und unverz\u00fcglich ausgef\u00fchrt.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Fehlerbehandlung<\/h2>\n\n\n\n<p>Insbesondere wenn man neu in die Arbeit mit \u00b5P einsteigt, k\u00f6nnen immer wieder Probleme und Fehlermeldungen auftauchen.<\/p>\n\n\n\n<p>In vielen F\u00e4llen behebt ein Neustart des ESP-Controllers \u00fcber die Tasten EN\/RST (enable\/reset) das Problem. Alternativ kann in der \u00b5PyCraft-IDE die Schaltfl\u00e4che \u201eStop\u201c angeklickt und die gew\u00fcnschte Aktion wiederholt werden.<\/p>\n\n\n\n<p>Falls dies nicht weiterhilft, liegt eventuell einer der folgenden Fehler vor.<\/p>\n\n\n\n<p>Die Meldungen:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>&gt;&gt;&gt;\nSelect Serial Port could not open port,COM2':\nFileNotFoundError(2,,The system cannot find the\nfile specified.', None, 2)<\/code><\/pre>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>oder<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>&gt;&gt;&gt;\ncould not open port,COM2': PermissionError(13,,A\ndevice attached to the system is not functioning.',\nNone, 31)<\/code><\/pre>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>deuten auf ein Problem mit der Kommunikationsschnittstelle hin. In diesem Fall sollte das ESP-Board kurz vom USB-Anschluss getrennt und anschlie\u00dfend wieder verbunden werden. Zudem sollte \u00fcberpr\u00fcft werden, ob im Men\u00fc Extras \u2192 Serial der richtige serielle Anschluss ausgew\u00e4hlt ist. \u00dcber \u201eVerbinden\/Trennen\u201c, kann die serielle Kommunikation neu gestartet werden.<\/p>\n\n\n\n<p>Dieser Fehler kann auch bedeuten, dass der serielle Anschluss zum ESP in einem anderen Programm (wie z. B. einem seriellen Terminal oder der Arduino-IDE) verwendet wird. Daher sollten alle Programme geschlossen werden, die eventuell eine serielle Kommunikation zum ESP32 aufbauen.<\/p>\n\n\n\n<p>Falls beim Laden eines neuen Skripts die Meldung<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>&gt;&gt;&gt; already in download model, please wait.<\/code><\/pre>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>erscheint, sollte in der uPyCraft-IDE die Schaltfl\u00e4che \u201eStop\u201c angeklickt werden. Damit wird der aktuell ausgef\u00fchrte Code angehalten. Anschlie\u00dfend nochmals auf die Schaltfl\u00e4che \u201eDownloadAndRun\u201c klicken, um das neue Skript auf den ESP32 zu laden.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Wenn nach dem Hochladen eines neuen Skripts die Meldung<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>&gt;&gt;&gt;\nReady to download this file,please wait!\n...\ndownload ok\nos.listdir(,.')\nTraceback (most recent call last):\nFile \", line 1, in \nNameError: name,os' isn't defined<\/code><\/pre>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>oder<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>&gt;&gt;&gt;\nReady to download this file,please wait!\n...\ndownload ok\nos.listdir(,.')\nOSError: &#91;Errno 98]<\/code><\/pre>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>angezeigt wird, bedeutet dies, dass die neue Datei zwar erfolgreich auf das Board hochgeladen wurde, allerdings wurde das Programm nicht automatisch gestartet. In diesem Fall muss der Downloadmodus des angeschlossenen Boards durch Dr\u00fccken der Taste EN (enable) oder RST (reset) manuell aktiviert werden.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Erscheint beim Neustart des ESP-Controllers, beim Ausf\u00fchren eines neuen Skripts oder beim \u00d6ffnen der seriellen Schnittstelle die Meldung:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>&gt;&gt;&gt; Brownout detector was triggered<\/code><\/pre>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>deutet dies auf ein Problem mit der Spannungsversorgung hin. Dies kann folgende Ursachen haben:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>USB-Kabel minderer Qualit\u00e4t haben oft einen zu hohen Kabel- oder Kontaktwiderstand<\/li>\n\n\n\n<li>Das USB-Kabel ist zu lang<\/li>\n\n\n\n<li>Auf der ESP32-Platine sind Defekte wie etwa schlechte L\u00f6tstellen vorhanden<\/li>\n\n\n\n<li>Der USB-Anschluss des verwendeten Computers oder Laptops ist fehlerhaft oder liefert zu wenig Strom. Insbesondere Laptops sind oft nicht in der Lage, ausreichend Strom f\u00fcr die zuverl\u00e4ssige Versorgung des ESP32-Boards zu liefern<\/li>\n<\/ul>\n\n\n\n<p>Die Verwendung von m\u00f6glichst kurzen USB-Kabeln hoher Qualit\u00e4t behebt hier oftmals das Problem. Auch ein hochwertiger USB-Hub mit einem externen Netzteil kann weiterhelfen. Probeweise sollte man das Board auch an einem anderen Rechner betreiben, um sicherzustellen, dass die Ursache nicht der USB-Port des Computers ist.<\/p>\n\n\n\n<p>Es kommt immer wieder vor, dass beim Aufbau einer seriellen Kommunikation zwischen PC und ESP32 das Fenster \u201eUpdate Firmware\u201c angezeigt wird. In diesem Fall wird eventuell ein Skript ausgef\u00fchrt, das den Kommunikationsaufbau aufgrund hoher Prozessorauslastung verhindert. Hier kann es sinnvoll sein, zu versuchen den COM-Port mehrmals zu \u00f6ffnen oder den ESP neu zu starten.<\/p>\n\n\n\n<p>Insbesondere wenn eine Wi-Fi-Verbindung aktiv ist, ein Energiesparmodus verwendet wird oder mehrere Tasks parallel ausgef\u00fchrt werden, empfiehlt es sich, den Verbindungsaufbau probeweise mehrfach zu starten. Falls alle Versuche fehlschlagen, kann es hilfreich sein, die neueste MicroPython-Firmware auf den Controller zu laden.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Ausblick<\/h2>\n\n\n\n<p>Nachdem in diesem Artikel erl\u00e4utert wurde, wie man den ESP32-Controller mit MicroPython programmieren kann, soll im n\u00e4chsten Beitrag auf verschiedene Anwendungen eingegangen werden. Dabei soll zun\u00e4chst die Erfassung und Auswertung von Sensordaten im Vordergrund stehen. Der ESP32-Chip verf\u00fcgt \u00fcber zwei unabh\u00e4ngige Analog-Digital-Wandler (ADC), die \u00fcber Multiplexer bis zu 18 verschiedene Analogsignale simultan erfassen k\u00f6nnen. Aber auch Sensoren mit digitalen Ausg\u00e4ngen k\u00f6nnen \u00fcber unterschiedliche Bussysteme wie I2C oder One-Wire ausgewertet werden. Kommt noch ein einfaches Display hinzu, entsteht schnell und ohne gro\u00dfen Aufwand ein universell einsetzbares Messsystem, das in der Elektronik-Werkstatt oder in der Hausautomatisierung verschiedene Aufgaben \u00fcbernehmen kann.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-gray-lightest-100-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><strong>\u00dcber den Autor<br><\/strong>Dr. G\u00fcnter Spanner ist als Autor zu den Themen Elektronik, Sensortechnik und Mikrocontroller einem weiten Fachpublikum bekannt. Schwerpunkt seiner hauptberuflichen T\u00e4tigkeit f\u00fcr verschiedene Gro\u00dfkonzerne wie Siemens und ABB ist die Projektleitung im Bereich Entwicklung und Technologie-Management. Der Dozent fu\u0308r Physik und Elektrotechnik hat zudem zahlreiche Fachartikel und Bu\u0308cher vero\u0308ffentlicht sowie Kurse und Lernpakete erstellt.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>MicroPython macht den ESP32 extrem einsteigerfreundlich: Interpreter flashen, uPyCraft\/Thonny einrichten, REPL nutzen und die erste LED blinken lassen. Der Guide f\u00fchrt Sie Schritt f\u00fcr Schritt durchs Setup \u2013 inkl. Port-\/Treiberwahl, typischer Fehlermeldungen und praxisnaher Tipps.<\/p>\n","protected":false},"author":30,"featured_media":8004,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[34],"tags":[1239,1234,1237,1235,1232,1233,1236,1238],"post-author":[137],"class_list":["post-4337","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python-micropython","tag-fehlermeldung-brownout","tag-firmware-flashen-esp32","tag-gpio-micropython","tag-led-blink","tag-repl","tag-thonny","tag-upycraft","tag-usb-treiber-cp210x","post-author-dr-guenter-spanner"],"acf":[],"info":{"thumbnail":{"url":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/header_python_esp32.jpg","alt":""},"teaserImage":{"ID":8005,"id":8005,"title":"liste-beitrag_python_esp32_neu","filename":"Liste-Beitrag_python_esp32_neu.jpg","filesize":49322,"url":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_esp32_neu.jpg","link":"https:\/\/de.elv.com\/elvjournal\/esp32-einstieg-micropython\/liste-beitrag_python_esp32_neu\/","alt":"","author":"5","description":"","caption":"","name":"liste-beitrag_python_esp32_neu","status":"inherit","uploaded_to":4337,"date":"2025-11-11 10:51:51","modified":"2025-11-11 10:57:49","menu_order":0,"mime_type":"image\/jpeg","type":"image","subtype":"jpeg","icon":"https:\/\/elvjournal.elv.com\/wp-includes\/images\/media\/default.png","width":433,"height":274,"sizes":{"thumbnail":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_esp32_neu-250x250.jpg","thumbnail-width":250,"thumbnail-height":250,"medium":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_esp32_neu-300x190.jpg","medium-width":300,"medium-height":190,"medium_large":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_esp32_neu.jpg","medium_large-width":433,"medium_large-height":274,"large":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_esp32_neu.jpg","large-width":433,"large-height":274,"1536x1536":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_esp32_neu.jpg","1536x1536-width":433,"1536x1536-height":274,"2048x2048":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_esp32_neu.jpg","2048x2048-width":433,"2048x2048-height":274,"gform-image-choice-sm":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_esp32_neu.jpg","gform-image-choice-sm-width":300,"gform-image-choice-sm-height":190,"gform-image-choice-md":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_esp32_neu.jpg","gform-image-choice-md-width":400,"gform-image-choice-md-height":253,"gform-image-choice-lg":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_esp32_neu.jpg","gform-image-choice-lg-width":433,"gform-image-choice-lg-height":274}},"categories":[{"id":34,"name":"Python &amp; MicroPython","slug":"python-micropython"}],"authors":[{"id":137,"name":"Dr. G\u00fcnter Spanner","slug":"dr-guenter-spanner"}],"document":false,"epaper":"","date":"1. September 2025","excerpt":"MicroPython macht den ESP32 extrem einsteigerfreundlich: Interpreter flashen, uPyCraft\/Thonny einrichten, REPL nutzen und die erste LED blinken lassen. Der Guide f\u00fchrt Sie Schritt f\u00fcr Schritt durchs Setup \u2013 inkl. Port-\/Treiberwahl, typischer Fehlermeldungen und praxisnaher Tipps."},"_links":{"self":[{"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/posts\/4337","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/users\/30"}],"replies":[{"embeddable":true,"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/comments?post=4337"}],"version-history":[{"count":9,"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/posts\/4337\/revisions"}],"predecessor-version":[{"id":13281,"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/posts\/4337\/revisions\/13281"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/media\/8004"}],"wp:attachment":[{"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/media?parent=4337"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/categories?post=4337"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/tags?post=4337"},{"taxonomy":"post-author","embeddable":true,"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/post-author?post=4337"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}