Podemos actualizar Arduino o esp8266 desde nuestra red local con la librería ArduinoOTA, por Bluetooth y con este pequeño tutorial también via Internet desde cualquier parte fuera de nuestra LAN.
Esto se logra muy fácilmente con la librería WebOTA. Para mostrarlo voy a actualizar un esp8266 con mi teléfono conectado via datos, sin la wifi. Advertir que el primer sketch con la librería hay que hacerlo conectado a nuestro ordenador del modo habitual en el IDE del Arduino.
Los sketch que se envíen tienen que estar compilados en el IDE->Programa->Exportar binarios compilados. Esto nos dará un fichero así: WebOTA.ino.nodemcu.bin Al menos en mi caso, este fichero .bin se genera en la misma carpeta del ino.
La librería proporciona al esp8266 una IP por DHCP. Si se desea una IP fija hay que modificar el fichero WebOTA.cpp. Es muy fácil, hay que buscar la función init_wifi y añadir las líneas señaladas con la ip que queramos.
A la izquierda, el schetch que cargué con IDE y a la derecha el enviado via Internet, o sea, el típico Blink. Se recomienda el uso de la función webota.delay() en vez del delay().
Una vez con el sketch compilado con el IDE, nos queda un detalle importante para acceder a su programación remota y es la configuración de los puertos de nuestro router para que apunten a la IP del esp8266/ESP32. La sintaxis desde nuestra LAN sería en este caso: 192.168.1.140:8080/webota Pero desde Internet hay que redirigir los puertos así:
Designamos un puerto externo que queramos (91), el puerto interno del WebOTA (8080) y la IP de esp8266. La sintaxis desde Internet (en este caso desde un teléfono) sería: http://IP_externa:91/webota
De una u otra forma, seleccionamos el archivo compilado (xxxxxxx.ino.nodemcu.bin) y pulsamos update y nuestro esp8266 quedará actualizado.
Yo tengo IP fija, en caso contrario habría que recurrir a servicios DDNS o con esto.