OTA - Over the Air - ESP programming via WLAN

Have you ever completed a project and only discovered much later that there is a bug in the program or that a function could be added?

Then it says: disassemble everything, connect programming adapters, program, reassemble and hope to have programmed this time without errors or the new function runs without problems.

Ingenious programmers have written a program for such a case, which we can use for the ESP modules (ESP8266 and ESP32) and with which we can use the integrated WLAN interface for programming. The program is called ArduinoOTA.

In order to use the OTA function, we first need to include a library, we go to the library management under Sketch > Include library > Manage libraries

In library management, we enter "OTA" as the search term in the upper right corner, select ArduinoOTA from the list, and install the package. After a short time, INSTALLED appears when everything has worked.

 

The next step is to use Python for programming. IN this case, OTA requires version 2.7. Do not use the 3.x, this does not work, at least for the time being.

Python can be downloaded from python.org. Here is the link:

https://www.python.org/downloads/

The software is also available for MAC and Linux.

After downloading we install the software. We click through the software and, most importantly, we need to get to Costomize Python "Add python.exe to Path" so that this is also installed with .

Then the computer has to be restarted, otherwise there will be errors in the Arduino software (Python not found).

Now that everything is ready, we can flash and use an ESP8266-01S with OTA.

We launch the Arduino IDE and go to File > Examples > ArduinoOTA > BasicOTA

Right at the beginning, we need to enter our Wi-Fi information:

Const Char* Ssid = "..........";
Const Char* Password = "..........";

In the future, we will have to include all this code in our program and, most importantly, the arduinoOTA line.handle(); do not remotely. If this has happened, the next programming process must be done again with programmer via the serial interface.

Void Loop() {   ArduinoOTA.Handle();
}

Optionally, we can also give the device a name:

  ArduinoOTA.setHostname("myesp8266");

Or set a password:

  ArduinoOTA.setPassword("admin");

These two lines are commented out under void setup.

 

Now that programming is done via the old way and the ESP8266 is connected to the WLAN, we see a new entry in the Arduino software under Ports (possibly a restart of the Arduino software is necessary):

 

An ESP8266-ac96ae at 192.168.31.117 can be found under the Menu group Network Interfaces. The cryptic name "ac96ae" is a part MAC address of the module. We now select this module.

Now the Arduino software can be used exactly as before, only that the programming is no longer done via the serial COM interface, but directly over the network. But this also means that we can now accidentally program a wrong module remotely! Therefore, you should use unique names under the host name and possibly a secure password.

We wish you a lot of fun with programming and good success with your projects.

 

Grundlagen software

12 comments

Solazola

Solazola

Funktioniert super!
MFG

josef

josef

mir wird der netzwerkport nicht angezeigt

Deepthroat

Deepthroat

Danke – Perfekte Anleitung – Hat alles inkl. PW funktioniert! Ich brauchte nur 5 Minuten um zu kapieren, das ich keine Verbindung bekomme weil die Stromversorgung übers USB-Kabel und nicht WLAN kommt :-)
Wenn ich das jetzt in meine restliche SW integriert bekomme fehlt mir nur noch eins: Ich möchte die IP-Adressen der CPUs an Hand der MAC-Adressen fest setzen – Und solange der Speicherplatz reicht auch die Funktionen der SW. Dann habe ich nur einen Quelltext für ca. 10 CPUs…

Dilly

Dilly

Hi, klappt super, aaber:
1.
Die IDE bekommt das Gerät nur angezeigt, wenn es neu gestartet wird WÄHREND die IDE läuft.
Anders gesagt, ein bereits laufendes Gerät muss resettet werden während die IDE gestartet ist.
OK, nervig, aber damit kann ich leben.
2.
ich habe hier viele Geräte am Start und in der IDE wird immer nur EIN Gerät angezeigt.
Um ein anderes zu bekommen müsste ich alle Geräte außer dem gewünschten Gerät abschalten!
Das geht nicht wirklich, da ich die Hausautomation damit steuere und im ganzen Haus Dutzende verteilt sind.
Mache ich was falsch? Oder ist das ein Bug? Oder ein Feature?

Devid

Devid

Danke für die Verständliche Anleitung. Hat auf Anhieb funktioniert :)
Ich finde der Upload ist sogar um einiges schneller als über USB Kabel.

Thomas

Thomas

Danke für die leicht verständlich Anleitung. Hat gut funktioniert.

Es scheint aber so, dass die Netzwerk-Schnittstelle nach dem Neustart der Arduino IDE “vergessen” wird bzw. der Sketch sich nicht mehr korrekt zu erkennen gibt. D.h. spätere Änderungen sind nur möglich, wenn man die Hardware neu startet.

wuppi

wuppi

Hi,
bei mir läuft das ganze jetzt stabil.
Ich habe folgendes benutzt:
1. Arduino SW 1.8.5, bei den neueren Versionen scheint es Probleme zu geben.
2. Python 2.7.15
3. ESP Boardverwalter 2.6.3
4. Flash Frequency 26MHz (default sind 40MHz; damit kam es zu unkontrollierten Aussetzern beim WLan und Abstürzen des OTA)

Karsten

Karsten

Jaaa, wirklich sehr interessant. Bei mir erscheint leider noch nicht einmal der Port. Habe schon (fast) alles versucht, neueste Arduino IDE 1.8.10, anderer Laptop, andere Windows-Version, anderen ESP. Bin leicht am Verzweifeln. Und nein, es ist nicht Python 3 installiert, damit soll es ja auch nicht funktionieren. PC und ESP zigmal neu gestartet. Jemand noch einen Tipp ?? Danke !

Reinhard

Reinhard

Leider funktioniert das bei mir nur soweit, dass der Port unter den Werkzeugen erscheint, die Nodemcu ist im WLAN Netz angemeldet, aber beim Versuch neu zu flshen kommt immer nur (in der IDE) : No response from device.

Bekommt man hier vllt. doch mal Hilfe???

Andreas

Andreas

Hallo,
das mit dem Netzwerkport funktioniert jetzt, warum auch immer.
Jetzt muss ja der Serielle Monitor noch über Telnet abgeholt werden. Mit Putty oder Kitty bekommen ich keine Verbindung zustande. Irgendie ist kein Port am ESP geöffnet. Wofür ist im Sketch der “ArduinoOTA.setPort(8266)” ?
Sehe keine Auswirkung auf dessen Änderung der Ports. Hochladen geht auch ohne und für Telnet ist anscheinend kein Port geöffnet. Hab auch mit einem Portscanner durchsucht ohne Erfolg. Der Standardport für Telnet, 23 , klappt auch nicht.
In Putty wir ja nur Telnet, IP Adresse und Port vorgegeben, klappt trotzdem nicht. Muss das Passwort noch irgendwo hin?
Wer kann da helfen?

Andreas

Andreas

Hi, kein Tip?
bekomme im Monitor nur die Meldung
“still running since xxx seconds” alle 5s.
Was muss ich tun um den Netzwerkport zu sehen?

Andreas

Andreas

Hi, sehr interressanter Sketch.
Bei mir fehlt aber unter “Port” der Netzwerkport. Sehe nur COMx
Woran kann es liegen? Der ESP ist im Wlan angemeldet.
Als Python habe ich das Modul Windows x86 MSI installer 2.7.15 gewählt.
Hab Win7 64b.
Muss ich mit Python noch was machen? Arduino SW 1.8.5 &Rechner ist neugestartet.

Leave a comment

All comments are moderated before being published