OTA - ESP8266 "Over the Air" flashen
Der ESP8266 macht extrem viel Spaß, zumal es mitlerweile mehrere Möglichkeiten gib, den kleinen Burschen über WIFI zu flashen.
Weil wireless, wird keine physische Verbindung mit dem ESP mehr benötigt, auch das Setzen des BootModes entfällt.
Grundvoraussetzung für diese Möglichkeit ist, dass alte Firmware und neue Firmware zusammen in den Flashspeicher passen.
Da zur Laufzeit des alten Sketches der neue Sketch in den Speicher kopiert werden muss. Erst nach dem Hochladen des gesamten neuen Sketches wird der alte überschieben.
Stabil läuft OTA ab Arduino V1.6.7 und esp8266 V2.1.0-rc2
Um die aktuelle "staging" - Version im Boardmanager zu finden ist folgende URL anzugeben.
http://arduino.esp8266.com/staging/package_esp8266com_index.json
Eine ausführliche Beschreibung der Funktionen ist hier zu finden:
https://github.com/esp8266/Arduino/blob/master/doc/ota_updates/ota_updates.md
Erste Schritte sind hier zu finden:
Folgende Möglichkeiten können zum Flashen einer neuen Firmware "Over the Air" genutz werden.
- Arduino OTA
Hier wird neben der Arduino IDE auch noch eine Python Installation in der Version 2.7 benötigt.
Das Flashen erfolgt dann analog zum Flashen über die serielle Schnittstelle. - WEB-Interface OTA
Hier stellt die alte Software einen HTTP-Server zur Verfügung über den ein fertig kompilierter *.bin File hochgeladen werden kann.
Besonders interessant weil keine zusätzliche Software (Arduino / Python) mehr benötigt wird. - HTTP-Server OTA
Hier erfolgt das Flashen der neuen Firmware aus dem laufenden Code heraus. Im Code wird der Pfad zum *.bin File hinterlegt, der ESP kann sich somit selber Flashen!
Interessant ist diese Option für automatische Firmwareupdates. Tagsüber mal schnell was am Code geändert, diesen einmal zentral bereitgestellt und die Firmware Flasht sich nacht selber.
Arduino OTA
Vor der Nutzung muss noch die Python-Version V2.7 für die entsprechende Plattform (WIN, Linux, MAC) installiert werden.
https://www.python.org/downloads/
Wichtig ist es beim Installationspunkt "Customize Python 2.7.x" den Auswahlpunkt "Add python.exe to Path" mit anzugeben.
Sonst wird die Python.exe nicht von der Arduino IDE gefunden.
Beispielsketch: ArduinoOTS/BasicOTA laden und die Zugangsdaten (SSID/Passwort) ändern und wie gewohnt den ESP seriell flashen.
Nach dem Reboot besitzt der ESP einen "WIFI-Bootloader".
In der Arduino IDE kann jetzt unter Werkzeuge/Upload Using: von seriel auf OTA umgestellt werden.
Das wars! Bein nächsten Hochladen wird der Sketch über Python und WIFI auf den ESP geladen.
Ganz ohne das lästige Drücken der BootMode-Buttons und schneller geht es auch noch (als 115200).
WEB-Interface OTA
Beispielsketch: ESP8266HTTPUpdateServer/WebUpdater laden und die Zugangsdaten (SSID/Passwort) ändern und wie gewohnt den ESP seriell flashen.
Nach dem Reboot besitzt der ESP einen "WEB-Interface-Bootloader".
Das WEB-Interface ist im Browser unter der IP des ESP zu erreichen.
192.168.1.43/update
oder http://esp8266-webupdate.local/update
Der hochzuladende *.bin File ist nach dem kompilieren ein wenig tricky zu finden.
Standartmäßig liegen die kompilierten Files unter:
C:\Users\MyName\AppData\Local\Temp\build.........tmp\WebUpdater.ino.bin
Einfach mal auf das Datum des Verzeichnises schauen.
File auswählen und ab geht die wilde Fahrt.....
HTTP-Server OTA
ToDo
Links
https://github.com/esp8266/Arduino/blob/master/doc/ota_updates/ota_updates.md
http://esp8266.github.io/Arduino/versions/2.1.0-rc2/doc/ota_updates/ota_updates.html
Kommentare (4)
Da die Fehlermeldung auf phyton.exe verwies habe ich Phyton deinstalliert und noch einmal neu installiert. Bei der zweiten Installation sah ich im Bereich "Customize Python 2.7.x", nach dem ich den sichtbaren Bildausschnitt in diesem Fenster nach unten geschoben habe, auch den zu ändernden Eintrag unter "Add python.exe to Path".
Du hast diesen deinen Beitrag am 07.02.2016 veröffentlich. Ich beschäftige mich jetzt (01.12.2018) mit diesem Thema erstmalig und habe die Arduino IDE Version 1.8.5.
Nach deinen Vorgaben habe ich die Python-Version V2.7.15 installiert. Was mir bei der Installation nicht möglich war: ich bekam keine Eingabemöglichkeit am Installationspunkt "Customize Python 2.7.x" den Auswahlpunkt "Add python.exe to Path" anzugeben!
Da ich nach dem Neustart in der IDE unter Datei/Beispiele/ArduinoOTA/BasicOTA den Sketch BasicOTA.ino fand denke ich mir, dass Python wohl richtig gestartet wurde. Über die USB Kopplung habe ich nach Eintragung meiner SSID und meinem Passwort den Sketch BasicOTA.ino auf einen WeMos D1 mini geflasht. Hat alles ohne Fehlermeldung funktioniert.
Das zweite Beispiel in dem Verzeichnis OTALeds.ino habe ich entsprechend meinen Daten angepasst. Als ich dann unter Werkzeuge/Port auch noch den esp8266-14610 at 192.xxx.xxx.xxx fand, war ich höchst zufrieden. Deine Vorgabe unter Werkzeuge/Upload Using: von seriel auf OTA umzustellen habe ich aufgrund der aktuelleren IDE-Version als hinfällig angesehen - zumal ich diesen Punkt auch nicht finden konnte.
Nur: Bei Hochladen des Sketches ist ein Fehler aufgetreten!!!
Folgender weiterer Text:
java.io.IOException: Cannot run program "python.exe": CreateProcess error=2, Das System kann die angegebene Datei nicht finden
at java.lang.Proc........
...
Kannst du oder sonst wer mir da einen Rat geben?
Siehe
http://1st.bitbumper.de/ota-firmware-update-tool-for-esp8266/