Aggiornamenti OTA (Over-The-Air) su ESP32

Published on 02/05/2026 ESP32

Perché l'OTA

Quando un ESP32 è murato dentro una scatola di derivazione o appeso al soffitto, raggiungerlo con un cavo USB è scomodo. L'OTA (Over-The-Air) permette di caricare nuovi sketch via WiFi direttamente dall'Arduino IDE.

Sketch base con ArduinoOTA

#include <WiFi.h>
#include <ArduinoOTA.h>

const char* ssid = "TUA_RETE";
const char* pass = "TUA_PASSWORD";

void setup() {
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, pass);
  while (WiFi.status() != WL_CONNECTED) delay(500);

  ArduinoOTA.setHostname("esp32-soggiorno");
  ArduinoOTA.setPassword("ota_secret_2026");
  ArduinoOTA.begin();
  Serial.println("OTA pronto su " + WiFi.localIP().toString());
}

void loop() {
  ArduinoOTA.handle();
  // ... il tuo codice ...
}

Caricare via WiFi dall'IDE

Dopo il primo upload via USB, in Strumenti → Porta apparirà una nuova voce esp32-soggiorno at 192.168.x.x (ESP32). Selezionala, premi Upload e l'IDE chiederà la password OTA.

Best practice

  • Sempre password: senza setPassword chiunque sulla rete può flashare un firmware ostile.
  • Watchdog: se il loop principale si blocca, OTA non risponde. Lascia ArduinoOTA.handle() chiamato spesso.
  • Spazio flash: l'OTA richiede una partizione doppia, quindi lo sketch può occupare al massimo metà della flash. Verifica la dimensione in compilazione.
  • Fallback: in caso di OTA corrotto, mantieni un pulsante GPIO che forza il bootloader USB.

Alternativa: server HTTP

Per parchi di centinaia di dispositivi conviene usare la libreria HTTPUpdate: il firmware viene scaricato da un URL e l'aggiornamento è centralizzato lato server.