¡Las placas ESP8266 que tienen al menos 1 MB de flash (para el ESP-01, generalmente indicado por una PCB negra) admiten actualizaciones por aire, que son compatibles de forma nativa con el IDE de Arduino! El ejemplo en Arduino OTA > BasicOTA tiene el siguiente código básico:
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
const char* ssid = "..........";
const char* password = "..........";
void setup() {
Serial.begin(115200);
Serial.println("Booting");
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.println("Connection Failed! Rebooting...");
delay(5000);
ESP.restart();
}
// Port defaults to 8266
// ArduinoOTA.setPort(8266);
// Hostname defaults to esp8266-[ChipID]
// ArduinoOTA.setHostname("myesp8266");
// No authentication by default
// ArduinoOTA.setPassword((const char *)"123");
ArduinoOTA.onStart([]() {
Serial.println("Start");
});
ArduinoOTA.onEnd([]() {
Serial.println("\nEnd");
});
ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
});
ArduinoOTA.onError([](ota_error_t error) {
Serial.printf("Error[%u]: ", error);
if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed");
else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed");
else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed");
else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed");
else if (error == OTA_END_ERROR) Serial.println("End Failed");
});
ArduinoOTA.begin();
Serial.println("Ready");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
ArduinoOTA.handle();
}
Al cambiar el código comentado // ArduinoOTA.setPassword((const char *)"123");
, puede establecer una contraseña. Si combina este código con su código existente, en lugar de seleccionar el puerto serie del ESP8266 al programar, su ESP8266 aparecerá en el menú "Puertos". Se le pedirá una contraseña si establece una. Luego, simplemente haga clic en "Cargar" como de costumbre. Una vez que se complete la carga, el ESP8266 se reiniciará automáticamente y ejecutará su nuevo código. No conectas GPIO 0 a un modo especial al programar, simplemente déjalo en su posición normal.