Aus Raspberry Pi Geek 05/2025

Den ESP32 mit PictoBlox programmieren

© Serhii Radachynskyi / 123rf.com

Eckige Software

Martin Mohr

Programmierung mit Blöcken ist mittlerweile ein alter Hut. Einen Mikrocontroller mit Blöcken zu programmieren erweist sich dagegen als durchaus spannende Angelegenheit.

Sie laden die Entwicklungsumgebung PictoBlox frei von der Homepage [1] des Herstellers in unterschiedlichen Varianten für alle gängigen Betriebssysteme herunter. Da die aktuelle Version 7.1.0 unter Ubuntu keine Programme für den ESP32 kompilieren wollte, nutzen wir für unseren Test die etwas ältere Version 6.2.0. Nachdem Sie das passende Installationspaket bezogen haben, installieren Sie es mit dem folgenden Aufruf auf Ihrem Rechner.

$ sudo dpkg -i PictoBlox6.2.0amdx64linux.deb

Mit dem Befehl pictoblox starten Sie die IDE über die Kommandozeile. Im ersten Schritt wählen Sie daraufhin die Programmiersprache (Abbildung 1) für Ihr Projekt aus – in unserem Fall die Blockcodierung.

Abbildung 1: Zu Beginn müssen Sie sich entscheiden, welche Programmiersprache Sie für Ihr Projekt verwenden möchten.

Abbildung 1: Zu Beginn müssen Sie sich entscheiden, welche Programmiersprache Sie für Ihr Projekt verwenden möchten.

Bevor Sie mit der Programmierung des Mikrocontrollers beginnen, braucht es einige vorbereitende Konfigurationen. Unter dem Menüpunkt Vorstand stellen Sie zunächst den ESP32 ein. Wie es zu dieser eigenartigen Übersetzung gekommen ist, ist ein Rätsel. Danach legen Sie unter Verbinden den Port fest, an dem der ESP32 angeschlossen ist. Schließlich wählen Sie rechts oben Hochladen aus. Danach findet sich unter den Blöcken wenn ESP32 hochfährt.

Abbildung 2 zeigt ein einfaches Programm, das eine LED am GPIO-Port 17 zum Blinken bringt. Interessant dabei ist, dass Sie im rechten Bereich den C/C++-Code sehen, den die Blöcke in der Mitte repräsentieren. Sie können den Code sogar editieren, wenn Sie auf das Bleistiftsymbol (Bearbeitungsmodus) klicken. Doch Achtung: Sobald Sie etwas an den Blocks ändern, wird Ihr modifizierter C/C++-Code ohne Warnung überschrieben. Um das Programm in den ESP32 zu laden, betätigen Sie den Schalter Code hochladen.

Abbildung 2: Das Blink-Beispielprogramm für den Einstieg lässt eine LED am GPIO-Port 17 aufleuchten.

Abbildung 2: Das Blink-Beispielprogramm für den Einstieg lässt eine LED am GPIO-Port 17 aufleuchten.

Testaufbau

Unser Testaufbau soll an einem einfachen Beispiel veranschaulichen, was sich mit einer blockbasierten Programmiersprache umsetzen lässt. Die Idee ist einen analogen Wert einzulesen und einen Servomotor mit diesem Wert in eine Position zu fahren. Gleichzeitig soll zudem die LED blinken. Den Testaufbau entnehmen Sie bitte Abbildung 3.

Das Potentiometer haben wir mit dem Schleifer an Pin 32 des ESP32 angeschlossen. Die beiden anderen Anschlüsse haben wir einmal mit 3,3V und einmal GND (Masse) verbunden. Den Signaleingang des Servomotors haben wir auf den Pin 14 gelegt. Bitte beachten Sie, dass Sie den Servomotor mit der für Ihr Modell passenden Spannung versorgen müssen.

Nun fehlt noch die LED an PIN 17. Sie benötigt für den Betrieb einen Vorwiderstand. Dabei wählen wir für gewöhnlich einen Wert von 1 Kiloohm, wodurch die LED nicht unangenehm hell wirkt. Damit haben Sie auch schon alles Nötige für einen Testaufbau zusammen.

Außerdem erwähnenswert ist der Kondensator zwischen dem analogen Ausgang (EN) und GND. Er sorgt dafür, dass wir sicher immer neuen Code in den ESP32 hochladen können. Ohne den Kondensator kommt es manchmal vor, dass Sie den ESP32 manuell zum richtigen Zeitpunkt in den richtigen Modus versetzen müssen. Auf Dauer erweist sich das als nervige Angelegenheit.

Abbildung 3: Im Testaufbau fährt ein Servermotor an eine Position, die von einem analogen Wert vorgegeben wird. Gleichzeitig blinkt eine LED.

Abbildung 3: Im Testaufbau fährt ein Servermotor an eine Position, die von einem analogen Wert vorgegeben wird. Gleichzeitig blinkt eine LED.

Programm

Obwohl das Programm aus Abbildung 4 auf den ersten Blick durchaus selbsterklärend zu sein scheint, braucht es trotzdem Verständnis dafür, was konkret passiert. Nach dem Start initialisieren Sie zunächst die serielle Konsole, um beobachten zu können, was das Programm im Moment macht. Mitunter neigt die Konsole dazu abzustürzen, sodass sie keine Ausgaben mehr anzeigt. In einem solchen Fall müssen Sie den ESP32 kurz trennen und neu per USB verbinden.

Abbildung 4: Im ersten Moment scheint das Programm zur Servomotoransteuerung leicht verständlich zu sein.

Abbildung 4: Im ersten Moment scheint das Programm zur Servomotoransteuerung leicht verständlich zu sein.

Der Block wiederhole fortlaufend erweist sich tatsächlich als selbsterklärend. Die nächsten Blöcke hingegen sind schon nicht mehr so einfach zu verstehen. Daher müssen wir hier etwas ausholen: Der ESP32 verfügt über einen 12-Bit-Analog-digital-Wandler (AD-Wandler) und mithin um einen Vorrat von 4096 digitalen Werten. Diese muss man nun in analoge Winkelwerte von 0 bis 180 Grad übersetzen, die der Servomotor benötigt, um die gewünschte Position anzufahren. Diese Aufgabe übernimmt der Block mappe. Wir geben ihm den umzurechnenden Wert mit den passenden Intervallen (von, auf). Daraufhin erhalten wir ausschließlich Werte im richtigen Bereich zurück. Zur Kontrolle geben wir die Werte zusätzlich auf der Konsole aus. Der nächste Block schickt ebendiese Werte an den Servo. Und siehe da, der Servo fährt an die durch das Potentiometer vorgegebene Position.

Der sich anschließende Codeblock lässt sich leicht erläutern: Wenn die LED aus ist, schaltet sie ein. Leuchtet sie bereits, erlischt sie. Hinter diesem Block steckt prinzipiell nichts anderes als eine komplizierte NICHT-Verknüpfung. Sie ist nötig, weil wir dem digitalen Ausgang keine Variable mitgeben können. Ganz am Ende des Blocks wiederhole fortlaufend findet sich außerdem eine kleine Wartezeit – aus mehreren Gründen: Zum Einem gibt die Zeit die Frequenz für die LED vor. Zum Anderen bremst sie die generelle Ausführung des Programms. Dadurch verringert sich die Anzahl der Ausgaben auf der Konsole. Dementsprechend hat sie weniger Gelegenheiten, sich aufzuhängen. Zudem bekommt der Servoantrieb nicht so oft neue Werte, die er anfahren muss. Die Ausgaben des AD-Wandlers neigen dazu etwas zu schwingen, was die vielen unterschiedlichen Werte erklärt.

Fazit

PictoBlox eignet sich hervorragend für Einsteiger in Sachen Mikrocontrollerprogrammierung. Das Setup mit dem ESP32 ist vergleichsweise preiswert und die Software kostenfrei. Bei Projekten mit ihnen lassen sich Elektronik- und Programmiergrundlagen gut miteinander verbinden. Besonders hervorzuheben dabei: Sie sehen stets, welcher C/C++-Code erzeugt wird. Dementsprechend fällt das Umsteigen auf eine IDE wie Arduino [2] oder ESP-IDF [3] später deutlich leichter.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 3 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