Arduino OTA ESP32

Buenas noches.
Estoy probando el ejemplo de OTA para arduino.
Lo he compilado y subido a un ESP32,
he accedido a la web y subido un binario precompilado.
Hasta ahi todo bien.
Resulta que que el binario tiene una parte que hace de servidor web.
Entonces cuando quiero volver a subir el binario compilado de nuevo no puedo acceder a la web que dispone OTA para cargarlos.
He probado a cambiar el puerto al 100 en vez del 80 para OTA pero no funciona.

¿Como se puede solucionar esto?.

Gracias.
Javier

Creo que el posible problema esta (ya que no pusiste el código y es norma hacerlo) en qué instalas el servidor antes que OTA.
Revisa eso, revisa la prioridad de uno y otro.
Y siempre postea el código completo aunque creas que no es relevante.

Gracias.
Entonces creo que estoy haciendolo mal pues entendi que
Arduino OTA era como un programa aparte que se quedaba
en el ESP32 junto con el binario que enviaba, es decir dos
binarios en la misma maquina.
¿Es posible lo que digo?.

Un saludo.
javier

OTA (Over The Air) sirve para que tu programa se pueda actualizar sin necesidad de conectar físicamente por USB.
Para ello has de incluir en tu programa ciertas características para que esté "mirando" si intentas hacer una subida de versión.
Cuando tu programa (si tiene las librerias OTA y está bien programado) recibe el comando de que hay una nueva versión, éste se prepara para recibirla, la copia a la memoria flash y plancha sobre la que tú tienes. Por ello NO puedes tener 2 binarios diferentes.
La nueva versión de tu programa deberá estar preparada también con las librerías OTA etc etc para que pueda volver a hacer una subida de versión. Si la nueva versión NO está preparada para subida OTA, tendrás que actualizarla por el USB.
Hay que tener en cuenta que la memoria flash queda reducida drásticamente si usamos OTA. Para ello hay unos ajustes en Arduino IDE y dependerá del arduino que tengas y versión del mismo (por ejemplo hay ESP8266 con flash de 4mb, 8mb,...)
Saludos.

Para aclarar más técnicamente lo que hace "OTA" es que en tu programa incluyes las librerías de OTA, lo inicializas y OTA está escuchando el puerto udp 8266 por defecto (creo recordar).
En el "loop(){}" de tu programa se invoca el manejador OTA para que mire si hay que actualizar. En ese caso la librería OTA toma el mando y para la ejecución del programa para activar las rutinas OTA.
Recibe desde el Arduino IDE el binario (nuevo sketch ya compilado que mandas) que lo copia a la flash y al finalizar la comunicación plancha el binario existente en la "rom" con el nuevo binario de la flash.
Con lo cual la respuesta es que no es posible, a priori, tener 2 binarios.
Para ello tendrías que montar 2 binarios en la flash y los programas estuvieran preparados para ejecutar ("flashear") uno u otro. Personalmente esto lo veo súmamente complicado dado que tendrías que hacer mucho desarrollo, de poca utilidad y de poca estabilidad (cortes de luz cuando está cambiando de binario, por ejemplo).
Saludos.

Muchas gracias por toda la explicacion, me ha quedado claro.
Entendido.
Tendrè que buscar us ESP32 con mas memoria flash.
¿Que modificaciones hay que hacer en el IDE?
Tengo la version 1.8.19 del IDE

Un saludo,
Javier

Tu puedes cambiar la configuración de la flash

image

de este modo.

image

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.