Großer Bruder: Espressif ESP32

Seite 4: "Hello World" und System-Info

Inhaltsverzeichnis

Wenn man das Projekt esp32_hello_world öffnet, das standardmäßig nach der Installation vorhanden ist, hat man mehrere Unterpunkte wie Archives, Includes, build, firmware, include und user (linkes Fenster). Im Stammverzeichnis finden sich außerdem die Dateien Makefile und esp.conf. Die ganzen Inhalte sind prinzipiell auch in der Arduino IDE enthalten, bleiben aber aufgrund der Vereinfachung der Programmieroberfläche weitgehend vor dem Benutzer verborgen.

"Hello-World" Projekt in Eclipse

Wichtig sind für unser Beispiel nur die Datei user_main.c und esp.conf. Die erste Datei ist unser eigentlicher Quellcode und für spätere Projekte die Einstiegs-Datei für das Programm, das später auf unserem ESP32 laufen soll. Die Datei ist sehr überschaubar und bindet mit den beiden include-Zeilen wichtige header-Dateien ein, die den Unterbau des Programms darstellen und auf die APIs des Espressif SDKs zugreifen. Was genau in diesen Dateien passiert, steht in diesem Fall im Unterpunkt includes (./Espressif/ESP32_RTOS_SDK/include und ./Espressif/ESP32_RTOS_SDK/third_party/include/freertos).

Als nächstes wird die Stammfunktion geschrieben (void user_init(void)). Die Funktion bietet den Einstiegspunkt nach dem Start des ESP32. Hier wird festgelegt, dass per API system_get_sdk_version neben vielen anderen Systeminfos die derzeitig verwendete SDK-Version des zuletzt kompilierten Projekts angezeigt wird. Zum anderen wird in einem Terminal-Programm mit Hilfe eines printf-Befehls später ein "Hello World" angezeigt werden.

In der Datei esp.conf muss nun noch der verwendete serielle Port angepasst werden (ESP_PORT) und unter Umständen je nach verwendetem Modul die SPI-Eigenschaften (Speichergröße, Art der Anbindung) des Flash-Bausteins. In dem rechten Fenster unter dem Reiter Make Target kompiliert man nun das Projekt testweise mit clean und dann rebuild.

"Hello World"-Ausgabe im seriellen Monitor, hier jener der Arduino-IDE

Klappt alles, so muss der ESP32 jetzt in den Boot-Modus versetzt werden. Der Vorgang unterscheidet sich zum ESP8266, denn der ESP32 hat keinen Reset-Pin (RST), sondern nur einen Enable-Pin (EN). Den Bootmodus löst man durch Verbinden des GPIO 0 mit Masse und einem Neustart aus (Enable Pin kurz auf Masse legen, dabei GPIO 0 verbunden lassen). Dann kann man mit flash_all das Programm auf den ESP32 übertragen. Danach müsste sich der ESP32 mit der vorher programmierten Systeminfo und dem "Hello World" in einem Terminal-Programm (115,2 kbits/s) melden.

Das Developer-Modul im Breadboard-Aufbau: oben eine LED (inklusive integriertem Vorwiderstand) an GPIO4, der obere Taster ist an GPIO 0 (Boot-Modus) der untere mit einem Pull-Up-Widerstand am ENable-Pin angeschlossen. Oben rechts der USB-Seriell-Wandler und unten rechts die Stromversorgung.

(Bild: Markus Ulsaß)

Kleiner Tipp: Auch in Eclipse lässt sich ein Terminal-Programm integrieren, das dann wie der Reiter Console einfach angewählt beziehungsweise konfiguriert werden kann.