{"id":17845,"date":"2024-11-11T09:30:57","date_gmt":"2024-11-11T08:30:57","guid":{"rendered":"https:\/\/polluxlabs.net\/?p=17845"},"modified":"2024-11-11T09:59:45","modified_gmt":"2024-11-11T08:59:45","slug":"ota-updates-fuer-den-esp32","status":"publish","type":"post","link":"https:\/\/polluxlabs.net\/arduino-tutorials\/ota-updates-fuer-den-esp32\/","title":{"rendered":"OTA Updates f\u00fcr den ESP32 \u2013 Aktualisierungen aus der Ferne"},"content":{"rendered":"\n
Der ESP32 unterst\u00fctzt OTA (Over-the-Air), mit dem du den Sketches drahtlos aktualisieren kannst. OTA ist besonders hilfreich, wenn der Mikrocontroller schwer zug\u00e4nglich ist oder du \u00c4nderungen ohne physische Verbindung \u00fcbertragen m\u00f6chtest. In diesem Tutorial erf\u00e4hrst du, wie du OTA einrichtest und lernst Schritt f\u00fcr Schritt ein Beispielprojekt kennen: Eine blinkende LED, deren Blinkfrequenz per OTA-Update ver\u00e4ndert wird.<\/strong><\/p>\n\n\n\n Falls du die ESP32-Boards \u00fcber den Boardverwalter der Arduino-IDE hinzugef\u00fcgt hast, ist die Bibliothek ArduinoOTA<\/strong> normalerweise schon dabei. Die Bibliothek erm\u00f6glicht dir eine unkomplizierte Integration der OTA-Funktionalit\u00e4t.<\/p>\n\n\n\n Sollte die Bibliothek dennoch fehlen, kannst du sie \u00fcber den Bibliotheksverwalter<\/strong> installieren. Gehe dazu in der Arduino-IDE zu Sketch > Bibliothek einbinden > Bibliotheken verwalten<\/strong> und suche nach „ArduinoOTA“. Stelle sicher, dass die neueste Version installiert ist, damit du alle aktuellen Features und Sicherheitsverbesserungen nutzen kannst.<\/p>\n\n\n\n Du startest mit einem einfachen Sketch, der eine LED am ESP32 im Sekundentakt blinken l\u00e4sst. Die LED ist dabei \u00fcber einen passenden Vorwiderstand an den GPIO-Pin 2 des ESP32 angeschlossen.<\/strong> Dieser Sketch dient als Grundlage f\u00fcr das OTA-Update.<\/p>\n\n\n\n Nun nimmst du eine \u00c4nderung am Code vor, um die Blinkfrequenz der LED auf 500 ms zu reduzieren. Diese \u00c4nderung \u00fcbertr\u00e4gst du drahtlos per OTA auf den ESP32.<\/p>\n\n\n\n \u00c4ndere im obigen Sketch den Wert des Intervalls von Nun folgt der Upload des aktualisierten Sketchs. Sofern dein ESP32 mit deinem WLAN-Netzwerk verbunden ist, sollte er in der Arduino-IDE als Netzwerkport sichtbar sein. Gehe hierf\u00fcr zu Werkzeuge > Port<\/strong> und w\u00e4hle den ESP32 ( OTA-Update hochladen<\/strong>: Lade den neuen Sketch (mit 500 ms Blinkintervall) \u00fcber den Netzwerkport hoch. Klicke hierf\u00fcr einfach wie gewohnt auf den Upload-Button \u2013 so wie du es auch machst, wenn dein ESP32 \u00fcber ein USB-Kabel verbunden ist. Achte darauf, dass in deinem Update wieder die WLAN-Zugangsdaten und dein Passwort hinterlegt sind.<\/strong><\/p>\n\n\n\n Die Arduino-IDE fordert dich auf, das OTA-Passwort einzugeben. Gib das definierte Passwort („Mein_OTA_Passwort“) ein und das Update wird drahtlos \u00fcbertragen. <\/p>\n\n\n\n Hinweis: <\/strong>Solltest du Updates mit verschiedenen Passw\u00f6rtern machen, kann es sein, dass die Arduino IDE ein falsches Passwort automatisch verwenden m\u00f6chte. Schlie\u00dfe in diesem Fall die IDE und \u00f6ffne sie erneut \u2013 dann wirst du wieder nach dem Passwort f\u00fcr deinen ESP32 gefragt.<\/p>\n\n\n\n Nachdem das Update drahtlos auf deinen ESP32 \u00fcbertragen wurde, sollte die LED nun im neuen Halbsekundentakt aufleuchten. Und das war es auch schon \u2013\u00a0du kennst nun eine M\u00f6glichkeit, Programme zu aktualisieren, ohne den Microcontroller irgendwo ausbauen und an deinen Computer anschlie\u00dfen zu m\u00fcssen. Weitere Informationen zum Thema findest du bei Espressif<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":" Der ESP32 unterst\u00fctzt OTA (Over-the-Air), mit dem du den Sketches drahtlos aktualisieren kannst. OTA ist besonders hilfreich, wenn der Mikrocontroller schwer zug\u00e4nglich ist oder du \u00c4nderungen ohne physische Verbindung \u00fcbertragen m\u00f6chtest. In diesem Tutorial erf\u00e4hrst du, wie du OTA einrichtest und lernst Schritt f\u00fcr Schritt ein Beispielprojekt kennen: Eine blinkende LED, deren Blinkfrequenz per OTA-Update …<\/p>\nDie Bibliothek ArduinoOTA<\/h2>\n\n\n\n
<\/figure>\n\n\n\n
Schritt 1: Der erste Sketch f\u00fcr eine blinkende LED<\/h2>\n\n\n\n
#include <WiFi.h>\n#include <ArduinoOTA.h>\n\nconst char* ssid = \"Dein_WLAN-NETZWERK\"; \/\/ Ersetze durch deinen WLAN-Namen\nconst char* password = \"Dein_WLAN_Passwort\"; \/\/ Ersetze durch dein WLAN-Passwort\n\n#define LED_PIN 2 \/\/ GPIO-Pin der LED\n\nunsigned long previousMillis = 0;\nconst long interval = 1000; \/\/ Blinkintervall in Millisekunden (1 Sekunde)\n\nvoid setup() {\n Serial.begin(115200);\n pinMode(LED_PIN, OUTPUT);\n\n \/\/ WLAN-Verbindung herstellen\n WiFi.begin(ssid, password);\n while (WiFi.status() != WL_CONNECTED) {\n delay(500);\n Serial.print(\".\");\n }\n Serial.println(\"\\nVerbunden mit WiFi\");\n\n \/\/ OTA-Setup\n ArduinoOTA.setHostname(\"esp32_led_ota\");\n ArduinoOTA.setPassword(\"Dein_Sicheres_Passwort\"); \/\/ Setze hier ein starkes Passwort f\u00fcr OTA-Updates, um unbefugten Zugriff zu verhindern\n ArduinoOTA.begin();\n}\n\nvoid loop() {\n ArduinoOTA.handle(); \/\/ Nach OTA-Updates suchen\n\n unsigned long currentMillis = millis();\n if (currentMillis - previousMillis >= interval) {\n previousMillis = currentMillis;\n digitalWrite(LED_PIN, !digitalRead(LED_PIN)); \/\/ Zustand der LED umschalten\n }\n}<\/code><\/pre>\n\n\n\n
So funktioniert der Sketch<\/h3>\n\n\n\n
\n
WiFi.h<\/code> und
ArduinoOTA.h<\/code>. Erstere erm\u00f6glicht die Verbindung des ESP32 mit einem WLAN-Netzwerk, w\u00e4hrend
ArduinoOTA.h<\/code> die OTA-Funktionalit\u00e4t bereitstellt. Diese Bibliotheken sind notwendig, um die gew\u00fcnschten Netzwerk- und Update-Funktionen auf dem ESP32 zu implementieren.<\/li>\n\n\n\n
ssid<\/code> und
password<\/code> speichern die Zugangsdaten f\u00fcr dein WLAN. Diese werden verwendet, um den ESP32 mit deinem Netzwerk zu verbinden.<\/li>\n\n\n\n
#define LED_PIN 2<\/code> definiert den Pin, an den die LED angeschlossen ist. In diesem Fall nutzt du den GPIO-Pin 2 des ESP32.<\/li>\n\n\n\n
setup()<\/code>-Teil des Codes wird die Verbindung zum WLAN hergestellt. Mit
WiFi.begin(ssid, password)<\/code> verbindet sich der ESP32 mit dem Netzwerk. Die Schleife
while (WiFi.status() != WL_CONNECTED)<\/code> sorgt daf\u00fcr, dass das Programm wartet, bis die Verbindung hergestellt ist.<\/li>\n\n\n\n
setup()<\/code>-Teil wird auch die OTA-Funktionalit\u00e4t initialisiert. Mit
ArduinoOTA.setHostname(\"esp32_led_ota\")<\/code> wird der Name des ESP32 im Netzwerk festgelegt. Dieser Name erleichtert es, das Ger\u00e4t im Netzwerk zu identifizieren, besonders wenn du mehrere ESP32-Ger\u00e4te verwendest. Ein (m\u00f6glichst sicheres) Passwort hinterlegst du mit Hilfe der Funktion
ArduinoOTA.setPassword(\"Mein_OTA_Passwort\")<\/code>, damit nur du Updates durchf\u00fchren kannst.
ArduinoOTA.begin()<\/code> startet den OTA-Service, damit der ESP32 auf eingehende Updates wartet.<\/li>\n\n\n\n
loop()<\/code> enth\u00e4lt den Code, der die LED im Sekundentakt blinken l\u00e4sst. Mit der Funktion
millis()<\/code> wird \u00fcberpr\u00fcft, ob der festgelegte Intervall (1000 Millisekunden) vergangen ist. Wenn dies der Fall ist, wird der Zustand der LED umgeschaltet mit
digitalWrite(LED_PIN, !digitalRead(LED_PIN))<\/code>.<\/li>\n\n\n\n
loop()<\/code>-Funktion wird
ArduinoOTA.handle()<\/code> aufgerufen, um kontinuierlich nach OTA-Updates zu suchen. Dies erm\u00f6glicht es, jederzeit ein Update zu empfangen, w\u00e4hrend das Hauptprogramm weiterl\u00e4uft.<\/li>\n<\/ol>\n\n\n\n
Schritt 2: OTA-Update zur \u00c4nderung des intervalls<\/h2>\n\n\n\n
1000<\/code> auf
500<\/code>:<\/p>\n\n\n\n
const long interval = 500; \/\/ Blinkintervall in Millisekunden (500 ms)<\/code><\/pre>\n\n\n\n
Update via OTA durchf\u00fchren<\/h3>\n\n\n\n
esp32_led_ota<\/code>) aus.<\/p>\n\n\n\n
<\/figure>\n\n\n\n
<\/figure>\n\n\n\n