Hai mai finito di finire un progetto e poi si è scoperto molto più tardi, che potrebbe essere un errore nel programma o che potrebbe essere completato?
Allora si dice che tutto deve essere riesaminato, collegare gli adattatori di programmazione, programmare, riassemblare e sperare di aver programmato senza errori questa volta, o la nuova funzione funziona senza problemi.
I programmatori degli Findige hanno scritto un programma che possiamo usare per i moduli ESP (ESP8266 e ESP32) e con cui possiamo utilizzare l'interfaccia WLAN integrata per programmare. Il programma si chiama ArduinoOTA.
Per utilizzare la funzione OTA, è necessario prima federare una libreria, fare in modo che coinvolgiamo nella gestione delle librerie sotto Sketch > Gestione della libreria. Gestione delle librerie
Nell'amministrazione della biblioteca, stiamo scegliendo "OTA" come termine di ricerca, scegliendo nell'elenco ArduinoOTA e installiamo il pacchetto. Dopo un breve lasso di tempo, l'INSTALLED sembra funzionare quando tutto funziona.
Come passo successivo, abbiamo bisogno di un po' di pitone per la programmazione. In questo caso OTA scrive la versione 2.7. In caso contrario, i 3.x non funzionano, almeno in questo momento, non lo sono.
Il Python può essere scaricato su python.org. Questo è il link per:
https://www.python.org/downloads/
Il software è disponibile anche per MAC e Linux.
Quando si scarica, installiamo il software. Ci stiamo facendo fare clic sul software e dobbiamo essere molto importanti per il Costomize Python. "Add python.exe to Path" abilitarlo per l'installazione di.
Successivamente, il computer deve essere riavviato perché altrimenti si verifica un errore nel software Arduino (Python non è stato trovato).
Ora che tutto questo e' pronto, possiamo usare un ESP8266-01S con l'OTA e usarlo.
Stiamo avviando la Arduino IDE e andremo al file > Esempi > ArduinoOTA > BasicOTA
All'inizio dobbiamo iscarci le nostre informazioni sul WLAN:
const char* ssid = ".........."; const char* password = "..........";
Questo è il codice che dobbiamo inserire nel nostro programma in futuro, e molto importante è la riga ArduinoOTA.handle (); non remoto. Se ciò dovesse accadere, il prossimo programmatore deve essere riprodotto con il programma attraverso l'interfaccia seriale.
void loop() { ArduinoOTA.handle(); }
E' anche possibile dare un nome al dispositivo:
ArduinoOTA.setHostname("myesp8266");
Oppure inserire una password:
ArduinoOTA.password("admin");
Queste due righe sono commentate in void setup.
Ora, se la programmazione è stata completata e l'ESP8266 è collegato al WLAN, nel software Arduino ci sarà una nuova voce (evtl.). è necessario riavviare il software Arduino:
Il gruppo di menu "Interfacce di rete" è un ESP8266-ac96ae at 192.168.31.117. Il nome kryptico "ac96ae" è un indirizzo MAC del modulo. Questo è il modulo che abbiamo scelto.
Ora, il software Arduino può essere utilizzato proprio come ha fatto finora, ma solo che la programmazione non si fa più sull'interfaccia seriale COM, ma direttamente sulla rete. Ma ciò significa anche che, per errore, possiamo programmare un modulo sbagliato. Per questo motivo, è necessario avere nomi univoci sotto il nome host e evtl. Utilizzare una password sicura.
Vorremmo che la programmazione si realizzi e si riesca a portare a buon lavoro i vostri progetti.
21 commenti
Wolfgang M.
Hallo,
da ArduinoOTA als veraltet angemeckert wird, verwende ich den OTA WebUpdater.
Hat jemand Erfahrung damit, wenn z.Bsp.
WiFiServer server(8080);
WebServer OTAserver(80);
const char* host = “esp32”;
benötigt wird. Dann startet OTA nicht. Wenn im Programm der WiFi Server nicht benötigt wird, dann funktioniert alles perfekt.
Vielleicht kann jemand dazu was sagen.
Danke und Gruß
Thomas
Hallo,
definitiv interessantes Feature!
Ich habe jetzt aber wo gelesen, dass wenn es “Delay()”-Anweisungen im Loop-Teil gibt, die OTA-Funktion nicht mehr funktionieren soll. Stimmt das?
Hermann
Hallo,
mein OTA-Problem scheint gelöst:
die IDE merkt sich wohl keine Schnittstellen,
die ESPs müssen ‘laufen’, wenn die IDE erst dann gestartet wird, werden die Ports auch angezeigt.
Grüße
(Gibt es einen “solved”-Button?)
Hermann
Hallo,
mein Problem: OTA mit zwei Boards NodeMCU 1.0 (ESP-12E Module)
Nach einem Neustart der IDE ist bei Werkzeuge – Port in der Liste der Netzwerk-Schnittstellen nur noch die IP des ersten Boards zu sehen (mit dem wurde OTA auch zum ersten Mal probiert).
Erst nach der erneuten USB-Verbindung des zweiten Boards ist auch dessen IP in der Liste und kann ausgewählt werden; bis zum Neustart der IDE.
Ist dieser Fehler oder dessen Lösung bekannt?
Vielen Dank im Voraus!
Andreas Wolter
@R: Wenn Sie als Board einen AVR gewählt haben, erscheinen andere Beispielsketches. Wenn ein ESP32 Dev Board gewählt wird, erscheinen zwei Beispiele. Eins davon ist BasicOTA. Testen Sie das bitte einmal. Vielleicht ist das schon die Lösung.
Grüße,
Andreas Wolter
AZ-Delivery Blog
R
In meinen Beispielen gibt’s kein BasicOTA…
Andreas Wolter
@Manfred Köhler: Sie könnten es damit mal probieren:
https://github.com/husarnet/esp32-internet-ota
Grüße,
Andreas Wolter
AZ-Delivery Blog
Manfred Köhler
Hallo und besten Dank für die gute Beschreibung!
Ich habe jedoch das Problem, dass ich auf unserem Modellflugplatz eine Wetterstation mit ESP32 betreibe, der sich per kleinem, lokalem WLAN mit einem Mini-Router verbindet, der die Daten via D-Netz (Dyn-DDNS) überträgt. Ich habe auf den Router und den ESP32 Zugriff auf das jeweilige Webinterface.
Gibt es auch hier eventuell die Möglichkeit, die Firmware des ESP32 aus der Ferne (ca. 20 km) über das D-Netz zu aktualisieren?
Beste Grüße
Manfred Köhler
Norbert
Hallo!
OTA funktioniert bei mir auch super. Vielen Dank!
Ein kleiner Tipp:
Genauso wie viele unten schon angemerkt haben, hatte ich auch das Problem, dass der “virtuelle” COM Port nach dem Neustart der IDE wieder weg war. Somit irgendwie blöd, wenn man das Gerät von Hand immer neu starten muss. Ich habe dazu 2 Lösungsalternativen für euch:
1.) Man baut eine Funktion ein, welche den Controller regelmäßig neu startet:
ESP.restart();
Allerdings finde ich das nicht gut. Die besser Lösung ist das:
2.) Man baut folgendes im Loop() ein:
void loop() {
ArduinoOTA.begin();
ArduinoOTA.handle();
(…)
Durch das ArduinoOTA.begin(); wird dieser COM Port regelmäßig an die IDE geschickt.
Damit der Traffic etwas reduziert wird, könnte man sich jetzt noch überlegen, dass man dieses Senden nur alle x Sekunden ausführt.
Viel Spaß damit!
Viele Grüße,
Norbert
Solazola
Funktioniert super!
MFG
josef
mir wird der netzwerkport nicht angezeigt
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
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
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
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
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
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
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
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
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
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.