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
setPasswordchiunque 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.