ESP-IDF Komponenten innerhalb des Arduino Core für ESP32 nutzen

Hintergrund

Bzgl. einer etwaigen Nutzungsmöglichkeit der vermutlich qualitativ besseren Maxim One Wire Bus driver for ESP32 fragt sich Clemens zu Recht

TLDR;

Unklar, aber vermutlich unkompliziert möglich sobald man weiß wie es geht.

Ausführlich

Das ESP-IDF gliedert sich neben dem Kern in weitere Komponenten, es ist also mittlerweile ein amtliches leichtgewichtiges Komponentenframework geworden.

Disclaimer: Vermutlich hat das ESP-IDF dieses Konzept ohnehin von FreeRTOS übernommen? An dieser Stelle bin ich leider nur unzureichend im Bilde.

Unter Build System — ESP-IDF Programming Guide v4.0-dev-141-g106dc0590 documentation wird mehr darüber erklärt, die unter esp-idf/components at master · espressif/esp-idf · GitHub gelisteten Komponenten kommen standardmäßig mit. Beispielsweise seien hier die Komponenten json und log herausgegriffen.

Bei Using Arduino Core as a component of ESP-IDF sowie arduino as a ESP-IDF component · Issue #1409 · espressif/arduino-esp32 · GitHub geht es darum, dass auch der Arduino Core als Komponente laufen kann. Das ist scheinbar ein alternativer Betriebsmodus ggü. der Vanilla Variante - sehr interessant.

Zurück zur Frage

Q: Du würdest vermutlich gern wissen, ob Du diese Routinen aus einer herkömmlichen Arduino Programmierumgebung heraus nutzen kannst, wie Du sie auf Deinem Rechner installiert hast?

A: Das würde mich ebenfalls sehr interessieren! Einerseits an dieser Stelle, aber genauso auch wegen der ESP-DSP: The official DSP library for the ESP32.

Grundsätzlich sollte die Nutzung absolut kein Problem sein, auf der Ebene des Linkers ist schließlich alles nur C++ Code. Man muss also vermutlich wirklich nur das infrastrukturelle Problem lösen, ein ESP-IDF mit nem herkömmlichen Arduino Core zu backen, das noch ein paar gewünschte Komponenten mehr an Bord hat.

Hier der perfekte Artikel zum Einstieg in die Thematik.

TLDR;

Just include the correct header. That’s it.

Einleitung

Der Autor beschreibt, wie er einen ESP32 als WiFi Sniffer programmiert. Dafür nutzt er aus der gewohnten Arduino Umgebung heraus Funktionen aus dem ESP-IDF SDK.

Fazit

Wir sollten also ebenfalls keinesfalls davor zurückschrecken, ebenfalls diesen Weg zu gehen, nicht zuletzt um uns endlich ein wenig aus dem Niveau der Arduino Bibliotheken zu emanizipieren.

Wir sehen ja, wie schnell Improving the canonical Arduino HX711 library for ESP32 and beyond ausarten kann. Wir sollten also wirklich tunlichst darauf schauen, dass wir solide erscheinende Komponenten aus dem ESP-IDF für unsere weiteren Vorhaben auf dem ESP32 nutzen, statt mit den althergebrachten Arduino Bibliotheken weiterzuarbeiten. Dass diese Komponentenbibliotheken eine höhere Qualität aufweisen und - logischerweise - von vornherein für den ESP32 ausgelegt sind, ist durchaus annehmbar.


P.S.: Natürlich muss man immer schauen. Die entsprechende MQTT Bibliothek mauserte sich gerade eben erst, siehe Arduino-kompatible MQTT-Bibliotheken mit QoS-Unterstützung. Nichtsdestotrotz könnte man in ähnliche Probleme u.U. genauso auch mit einer Arduino Bibliothek reinlaufen (s.o.).

miniDTN ist scheinbar ebenfalls in der hier genannten Art und Weise als Komponente für das ESP-IDF implementiert worden, siehe auch DTN for ESP32 and STM32.