Wichtige Info

Die Inhalte, die du hier siehst stelle ich dir ohne Werbeanzeigen und ohne Tracking deiner Daten zur Verfügung. Trotzdem muss ich die Server bezahlen sowie Zeit in Recherche, Umsetzung sowie Mail Support stecken.
Um dies leisten zu können, verlinke ich in einigen Artikeln auf die Plattform Amazon. Alle diese Links nennen sich Afiliate Links. Wenn du dir mit diesem Link etwas kaufst, dann erhalte ich eine kleine Provision. Dies ändert jedoch NICHT den Preis, den du bezahlst!
Falls du mich also unterstützen möchtest, kannst du auf den Link zum Produkt klicken und hilfst mir dabei, dieses Hobby weiter zu betreiben.
Da ich Keine Werbung schalte und keine Spenden sammle, ist dies die einzige Möglichkeit, meine Systeme und mich zu finanzieren. Ich hoffe du kannst das verstehen :)



ESP32- ESP IDF als SDK verwenden


Einleitung

Seit Jahren begeistere ich mich für Smarthome und alles run um die kleinsten Helfer im Leben, welche durch digitale Vernetzung ein vielfaches ihres eigentlichen Nutzen bringen können. Das aufkommen vom ESP hat dieses Interesse nur noch weiter bestärkt, da diese kleinen Mikrocontroller bereits die wichtigsten Schnittstellen wie I2C, Serial uvm. mitbrachten, aber auch in Sachen Konnektivität punkten konnten, durch zum Beispiel WLAN und Bluetooth.

Bis dato hatte ich mich immer auf den ESP8266 gestützt, da dieser sehr günstig ist und WiFi integriert hat, damit habe ich viele Projekte umgesetzt, welche auch bis heute ohne Probleme funktionieren und ich habe irgendwann die Idee bekommen eine Art Wrapper Betriebssystem zu bauen, welches die Standards, wie ein Captive Portal, Konfigurationshandling, OTA und einiges mehr für mich abdeckt. Dies habe ich auch getan inkl. einer zentralen Verwaltungsschnittstelle um Versionen und Firmware verteilung komfortabel steuern zu können.

Ein Problem hat der ESP8266 jedoch welches mir seit jeher stark zugesetzt hat und mich auch davon abhielt meine Projekte zu monetarisieren. Dieses Problem war die Verschlüsselung auf Hardwareebene und die Anfälligkeit gegenüber physikalischen Attacken.

Ein weiteres, aber eher kleines Problem ist die Konnektivität. Anders als der ESP32, hat der ESP8266 kein Bluetooth sondern "nur" WiFi, was mir auf Dauer nicht klug erschien, da es doch einiges an Energie verbraucht. Aus diesem Grund habe ich Jahrelang auf einen passenden Nachfolger gewartet, welchen ich nun seit ca. 6 Monaten auch habe. Der ESP32-C6.

Aber auch dieser stellt mich vor neue Herausforderungen, mit der ersten beschäftige ich mich heute in diesem Beitrag - der Programmierung an sich.

Hauptteil

Was zeichnet den ESP32-C6 aus?

Der relativ junge ESP32 C6 unterscheidet sich in hauptsächlich einem Merkmal sehr stark von seinen Vorgängern, denn er unterstützt ZigBee, Thread und Matter was ihn direkt zu einem Multitool im Smarthome macht.

Insgesamt kann der ESP durch WiFi 6, ZigBee (802.15.4) und Bluetooth 5 LE kommunizieren. Weiterhin bietet der ESP für den 802.15.4 Standard inkl. Bluetooth den Matter Standard an, welcher langsam aber recht sicher in der Smarthome Welt ankommen wird. All dies macht den C6 für mich, zu dem Pendant, was der ESP8266 damals für den Arduino war.
Auch Bastler können ab jetzt Cutting Edge Kommunikationstechnologie für die privaten Projekte nutzen.

Abschließend muss ebenfalls noch hinzugefügt werden, dass der C6 neben Secure Boot ebenfalls 256 Bit AES flash Verschlüsselung unterstützt, was physikalische Angriffe nun deutlich anspruchsvoller macht.

Was ist das Problem mit dem ESP32 C6?

Meine gesamten Projekte sind bisher immer auf Basis des Arduino Framework entstanden, da dieses die Entwicklung sehr einfach und Intuitiv gestaltet. Solange man nicht die neusten Features und den gesamten C/C++ Standard benötigt, war das auch kein Problem. Ich warte nun bereits 6 Monate und bisher gibt es gerade so ein erstes Draft um den ESP32 C6 offiziell im Arduino Framework zu unterstützen. Aus diesem Grund werde ich nun wahrscheinlich ESP-IDF verwenden müssen, da dieses im Normalfall immer die neusten Chips sofort unterstützt.

Was ist ESP-IDF?

ESP-IDF ist das "offizielle" Entwickler Framework für den ESP, bereitgestellt durch Espressif (dem Hersteller von ESP).

ESP-IDF ist eine Sammlung von unterschiedlichen Tools und Dokumentationen um den ESP zu programmieren. Auch das Arduino Framework setzt am Ende des Tages auf ESP IDF um den ESP zu programmieren und bildet einen wrapper.

ESP IDF in VSCode installieren

Ich nutze seit je her immer VSCode, da ich alle meine Anwendungsfälle direkt im Programm abbilden kann. Aus diesem Grund möchte ich ESP-IDF ebenfalls in Verbindung mit VSCode nutzen.

Glücklicherweise gibt es eine Extension für VSCode, welche die gesamten Vorarbeiten übernehmen kann.

Um diese zu installieren muss im Extensions Editor einfach nach "Espressif" gesucht werden. Sobald die Extension installiert ist, wird auf der linken Seite das neue Icon (Siehe im Bild bei mir unter dem Extension Zeichen) angewählt und du wirst mit der Installationsoberfläche begrüßt. Hier kann dann einfach die "Express Installation" ausgewählt werden und die Extension kümmert sich um den Rest.

Das erste Programm... Hello World :)

ESP-IDF funktoniert durchaus ein wenig anders, als das Arduino Framework. Aus diesem Grund schaue ich mir im folgenden noch ein wenig die Struktur der Projekte an und was man in diesen alles finden und konfigurieren kann.

Die wichtigste Datei ist denke ich der Programmcode selbst. Dieser befindet sich im Ordner "main" und dort im File "hello_world_main.c". Der Aufbau dieser Datei sieht bereits anders aus, als bei Arduino. Die "Start Funktion" hier heißt z.B. "app_main(void)" und bildet den Einstieg bei Systemstart.

Der Code ist leider nicht sonderlich gut kommentiert, ist aber durchaus verständlich. Wenn du schonmal mit C gearbeitet hast, sollte es kein Problem sein, den Code zu verstehen.

Interessant sind auch die anderen Dateien.


Back…