Programmierung ESP32 mit Arduino-Style und FreeRTOS

Elbrathil

Lieutenant
Registriert
Okt. 2009
Beiträge
974
Hallo,
vor einigen Jahren habe ich ein wenig mit ESP8266 und ESP32 herumgespielt und kleinere Projekte umgesetzt, u.a. IoT-Kleinprojekte. Damals habe ich VS 2017 CE und Visual Micro verwendet. Damit konnte man im Arduino-Style programmieren und FreeRTOS als OS nutzen für Parallelisierung, Threading und grundlegende Systemaufgaben. Das hat mir ganz gut gefallen. Mittlerweile sind ein paar Jahre vergangen, in denen ich insbesondere vergessen habe, wie ich das Ganze aufgesetzt habe. Leider habe ich die Infoquellen nicht mehr...
Mittlerweile scheint es auch mit VS Code und PlatformIO eine ganz nette Toolchain zu geben.

Ich wollte daher einmal fragen, wie ihr vorgeht, ob Erfahrungen mit verschiedenen Tools vorhanden sind und ob ihr gute Info-Quellen kennt, die Programmierumgebung aufzusetzen, sodass eben wieder im Arduino-Style programmiert werden kann und dabei FreeRTOS genutzt werden kann.
Über Erfahrungsberichte und nützliche Links würde ich mich deshalb sehr freuen!
 
ich mache nur "kleineren Spielkram" für ESP8266 mit VS Code und PlatformIO auf Macs (Mac Book Pro, Air und Mac Mini)
was willst du denn jetzt wissen? Das ist doch ein out of the box Selbstläufer. Wenn ich das richtig in Erinnerung habe, dann reicht es das Platformio Package in VS auszuwählen, das StandAlone Paket brauchst du gar nicht.
das größte Problem ist das passnde Serial2USB Geraffel zu finden und ans Laufen zu bekommen (bzw. die Treiber dem paranoiden MacOS unter zu jubeln).
 
Hi Mickey, danke für deine Rückmeldung. Dass PlatformIO über den Plugin-Store von VS Code geladen werden kann, wusste ich nicht. Auch deshalb die Frage, ob jemand gute Leitfäden kennt, bei denen ich nicht lange überlegen muss,
  • ob ich noch etwas vergessen habe,
  • ob ich überhaupt das richtige Paket, etc. installiere,
  • am Ende die Lösung völlig daneben ist, weil ich damit eben nicht im Arduino-Style mit FreeRTOS programmieren kann.
Wenn du das kannst, ist das schonmal ein guter Hinweis in die Richtung PlatformIO. Den Serial2USB-Treiber habe ich bei meiner Lösung mit VS 2017 und Visual Micro damals glaube ich mit der Arduino IDE installiert, die dabei auch eingebunden werden musste (gerade wegen der Anbindung der Treiber, ich glaube die ESP-Treiber wurden in der Arduino IDE geladen und in Visual Micro dann die Arduino IDE).
Ansonsten bin ich über gute Info-Quellen allgemein zum Thema dankbar, damit ich etwas darin schmökern kann. (Ich habe natürlich schon danach gesucht und einiges gelesen, aber es gibt so viele irrelevante Suchergebnisse, dass ich ein wenig frustriert war. Daher dieser Thread ;))
 
kommt drauf an was du machen willst.
Ich bin für meinen ESP Kram mittlerweile bei ESPHome als Grundlage hängen geblieben und programmiere nur noch selten direkt. Wenn ESPHome etwas nicht nativ bringt, wird es in C gebastelt.
Doku ist grottig, aber mal soll auch selbst denken.

Hauptanwendung für ESP ist bei mir Smarthome / Smartgarden.

FreeRTOS reizt mich, aber es fehlt die Zeit. Vielleicht wenn es das mal für RiscV gibt :)
 
Hi Xammu, du meinst du benutzt nur fertigen Code, den du auf deine Geräte lädst?
Ich finde den Bereich Smarthome recht interessant, das ist ein guter Hinweis den ich mir in der Zukunft mal ansehen werde.
Momentan möchte ich aber selbst programmieren und dann Elektronik (in einem nicht zu großen Umfang, also Schaltungen mit MOSFETS etc. v.a. um die Signale des µC zu nutzen, sind voll ok, aber sehr viel weiter dann auch nicht) und die Software dazu entwickeln. Bastelprojekte, bspw. habe ich mal einen Lichtwecker entwickelt mit DCF77 Empfänger und morgendlichem Farbverlauf zum Aufwachen. IoT-Kleinprojekte zur (nicht sonderlich) vernetzten Steuerung und Sensorik rund ums Haus.
 
Im Prinzip ein Framework, also ja. Wird in YAML "programmiert", dann kompliert und auf die ESP8266 und 32 geschoben. Es werden viele Sensoren von Haus aus unterstützt, mit der Option eigene Sachen in C zu programmieren und einzubinden.

In ESPhome direkt werden auch Lambdas unterstützt.

Ich habe mir damals gesagt, warum soll ich das Rad neu erfinden. Dafür bringe ich mich per Github in die eigentliche Entwicklung ein.
Noch dazu harmoniert es gut mit Homeassistant.

Mir fällt auch spontan kein Fall mehr ein, in denen ich einen ESP direkt programmieren müsste.

Mein aktuelles Projekt lässt sich auch gut damit umsetzen.

Zum Lernen kann man direkt arbeiten. Aber sonst? Ich muss nicht mehr alles wissen, sofern ich die Grundlagen kenne, damit ich Fehler erkenne und beheben kann.
 
  • Gefällt mir
Reaktionen: Elbrathil
naja, einen ESP kann man ja auch für andere Dinge als nur "Sensor im SmartHome" einsetzen...

mal ein Beispiel aus meiner Bastelkiste:
da ist eine einfache Nebelmaschine auf der einen Seite und der anderen eine schon nicht mehr ganz kleine "DMX Anlage". Genau dazwischen passt ein ESP und da will man nicht auch noch eine HA Instanz dabei haben.

oder in meine 11-Kanal Endstufe habe ich einen ESP eingepflanzt, um nicht nur "manuell" sondern auch per Web-Interface zwischen RCA und XLR Eingängen umschalten zu können. Ok, das hätte man sogar mit ESPEasy machen können, aber es soll ja auch nach was aussehen ;)
 
Die Lüftersteuerung meines Serverschrankes läuft ebenfalls autark. Das ist das schöne an Esphome, es braucht weder Wifi noch einen Server. Es funktioniert auch ohne. Ich habe die Steuerung nur in HA eingebunden um die Temperaturen und die Drehzahlen zu sehen und ggf die Automatik übersteuern zu können.

Ausserdem stehe ich total auf Grafana ;)

Die Bewässerung meines Gewächshauses inklusive Relais, Wetterstation, Wasserständen und Co ebenfalls.

Das einzige was mit an Esphome missfällt, es gibt kein fancy Webinterface direkt aufm ESP, nur ein rudimentäres.
 
Dazu taugt sicher ein Raspberry. Da bin ich gerade dran einen NAS + Calibre-Server zu bauen ;) Wird wohl Nextcloud, das habe ich bereits erfolgreich getestet und gefiel mir besser als Open Media Vault (mal abgesehen davon dass die Festplatten nicht in den Standby gehen).
 
Naja, OpenMediaVault ist ein Betriebssystem und Nextcloud nur Software.

Das Problem mit den Festplatten ist bekannt, hatte ich auch. Aber seitdem ich die Docker Container auf der SSD speichere und die hdparm.conf bearbeitet habe, funktioniert das.
 
Ja, genau den Arduino-Core habe ich in meinen alten Projekten mit ESP8266 auch genutzt. Für ESP32 finde ich aber freeRTOS deutlich besser (zumindest wenn man mehrere Sachen auf einmal machen möchte, wozu man ja doch sehr schnell kommt): https://www.savjee.be/2020/01/multitasking-esp32-arduino-freertos/
Bzw. ich bin mir jetzt nicht sicher, ob das jetzt nicht der gleiche Core ist für den ESP32 und dieser freeRTOS unterstützt - habe gerade keine Docs zu diesem Arduino Core gefunden auf der Github-Seite...

Edit: Kann auch sein, dass ich da in meiner Erinnerung etwas durcheinandermische und freeRTOS doch komplett unabhängig von Arduino-Funktionen war. Ich meinte aber mich zuerinnern, dass ich mit freeRTOS doch ziemlich konsistent auch die Standardfunktionen aus der Arduino-Welt verwenden konnte. (Bis auf einige Ausnahmen, die der unterschiedlichen Hardware geschuldet waren.)
 
Zuletzt bearbeitet:
Elbrathil schrieb:
zumindest wenn man mehrere Sachen auf einmal machen möchte
Also ich verwende den oben verlinkten Core, um Strom- und Wasserverbrauch auf eine SD Karte zu loggen, auf einem E-Paper anzuzeigen und per WLAN zum Download bereitzustellen.
 
Zurück
Oben