Nach einiger Zeit in Deinem ESP8266 Projekt wirst Du bemerken, dass die serielle Schnittstelle zeitens Mühsam und langsam und fehleranfällig ist. Zum Glück gibt’s dafür eine Lösung. Das Schlüsselwort heist OTA oder ausgeschrieben Over-The-Air. OTA bezeichnet ganze generell eine Luftschnittstelle. In der Praxis werden Updates an Dein Endgerät geschickt und das Endgerät kann sich dann selber Updaten. Du kennst das, wenn Du z.B. ein Android Telefon hast. Der Handy-Hersteller macht Dich darauf aufmerksam, dass es ein neues Update gibt, welches Du dann übers Internet herunterladen und installieren kannst. In unseren Fall wird dem ESP8266 das neue Programm zugeschickt, und dieses ersetzt das Alte durch das Neue. Das ist so vorgesehen und es gibt dazu eine Library für Arduino IDE, https://github.com/esp8266/Arduino/tree/master/libraries/ArduinoOTA. Wie genau das OTA bei ESP8266 funktioniert kannst Du hier lernen. Das ganze hat den Vorteil, dass es
- ca. doppelt so schnell geht und auch weniger Fehleranfällig ist. Gerade beim Arbeiten mit ESP-01, welches du über ein Adapter mit dem Computer verbinden musst, ersparst Du so auch einen zusätzlichen Schritt,
- Projekt, welches fix installiert ist und nicht mehr an einen Computer gehängt werden kann. Zum Beispiel eine Wetterstation draussen, eine Unterputzsteuerung für den Rollladen oder eine Überwachungskamera.
Was Du für dieses Tutorial brauchts:
- ESP8266, gibt’s hier
- Arduino IDE
- Ein WLAN Netzwerk
Folgende Schritte musst Du tun, um OTA zum Laufen zu bringen.
Lauffähige Arduino IDE
Arduino IDE ist installiert und läuft. Du kannst eine Verbindung mit Deinem ESP8266 herstellen und Programme via serielle Schnittstelle hochladen. Du musst ein minimales Programm haben, welches Du auf Deiner ESP8266 ausführen möchtest. Ein Minimalprogramm welches OTA implementiert hat findest Du auf der Beispielseite der Library. Natürlich kannst Du aber OTA auch nachträglich in Dein Programm einfügen. Ein ESP8266 kannst Du jederzeit hier bestellen.
WLAN Verbindung
Dein Programm muss eine Verbindung mit dem WLAN herstellen können. via #include <ESP8266WiFi.h>. Ein Einfaches beispiel findest Du hier. Wichtig ist auch zu bemerken, dass Dein ESP8266 und Dein Entwicklungscomputer im gleichen Netzwerk sein müssen.
Einbinden der OTA Library
Nun musst Du die OTA Library #include <ArduinoOTA.h> am Anfang des Projektes. einbinden. In der Start-Funktion void setup() erstellst Du nun das OTA Programm. Dort fügst Du den folgenden Code ein:
Innerhalb von void loop() verarbeitest Du die OTA Anfragen
void loop() {
ArduinoOTA.handle();
// hier kommen Deine anderen Programmteile
}
Installieren von OTA auf Deinem Gerät
Nun musst Du das Programm über die IDE wie gewohnt via serieller Schnittstelle hochladen. Nachdem alles hochgeladen wurde und das Programm erfolgreich und ohne Fehler gestartet hat, solltest Du nun in der IDE unter Tools/Werkzeuge>Port einen neue Schnittstelle unter Network Ports haben. Solltest Du diese nicht haben, dann starte die Arduino IDE neu, danach sollte es drin sein.
Nun musst Du noch Dein ESP8266 reseten (z.B. via RST-Button). Nun kannst Du Dein Programm kompilieren und hochladen.
Achtung! Fehler in Deinem Programm die hochgeladen werden, können die OTA Funktion zerstören und Du musst zum erneuten Hochladen Dein ESP8266 wieder über die serielle Schnittstelle anhängen. Gerade bei Projekten, wo dieser Schritt nicht mehr vorgesehen ist (ESP8266 ist irgendwo eingebaut) musst Du also das Programm immer zuerst auf einem Testgerät testen.
Alternative Methoden
Die Arduino Library ESP-WebOTA verspricht den ganzen Vorgang auf eine Zeile Code zu vereinfachen und die Library ist speziell für ESP gemacht. Versuche es doch mal mit dieser und berichte uns in den Kommentaren, wie es funktioniert hat!
Ein Kommentar