c't 18/2018
S. 180
Praxis
ESP32-Programmierung
Aufmacherbild

Schlankheitskur

Den ESP32 ohne Arduino-IDE programmieren

Auf den ersten Blick scheinen die Arduino-Welt und der ESP32 ein perfektes Paar. Wenn man aber ganz nah an die Hardware ran muss, um sie möglichst effizient zu nutzen, kommt man nicht um das IoT Development Framework herum.

Mit zwei Prozessorkernen, 240 MHz Takt, 512 KByte RAM, Bluetooth und WLAN ist der ESP32 so leistungsfähig und vielseitig, dass man fast schon nicht mehr von einem Mikrocontroller sprechen möchte. Mit ESP32 Core für Arduino kann man den Kraftprotz in gewohnter Arduino-Manier programmieren. Dabei liegen jedoch viele seiner Features und Möglichkeiten brach. ESP32 Core für Arduino kapselt lediglich die Entwicklungsumgebung IoT Development Framework (IDF) des ESP32-Herstellers Espressif. Das IDF kann man aber auch eigenständig nutzen. Das bringt einen näher an die Hardware, da sämtliche Arduino-Abstraktionsebenen wegfallen. Darüber hinaus spart man noch einiges an Speicherplatz, wobei der Flashspeicher des ESP typischerweise üppig bemessen ist.

Dank des IDF bekommt man weit filigranere Kontrollmöglichkeiten darüber, was auf dem ESP32 passiert und welche Funktionen überhaupt in der Firmware landen. Die Basis des IDF bildet das Open-Source-Echtzeitbetriebssystem FreeRTOS. Es kümmert sich im Hintergrund um Threads, Fehlermeldungen, Hardwareabstraktion und den Start des Programmcodes. FreeRTOS ist ein System für Microcontroller und daher sehr klein. Es unterscheidet sich stark von Desktop-Betriebssystemen; Dinge wie eine Shell, nachladbarer Code oder ein Paketmanagement sind nicht vorgesehen. Der Programmcode und FreeRTOS werden beim Kompilieren zu einem monolithischen Codeblock vereint, den der ESP32 dann ausführt.

Ergänzungen & Berichtigungen

Bug im WLAN-Scanner

Aufgrund eines Bugs im Beispiel-Code fanden einige ESPs keine WLAN-Netze. Das Beispiel wurde aktualisiert und sollte nun mit allen ESPs funktionieren.