Los requisitos para ello son:
- IDE Arduino
- Soporte para ESP8266 en el IDE Arduino.
- Necesitamos instalar Python 2.7: https://www.python.org/downloads/ . Descargad la última versión, pero de la rama 2.7. Al instalarlo en Windows debemos seleccionar "Add python.exe to Path".
- El tamaño total del programa ha de ser inferior al 50% del espacio de nuestro ESP (escoged la mejor opción disponible en el selector de placas, por ejemplo tenemos 1Mb programa/3Mb SPIFFS y 3Mb programa/1Mb SPIFFS para el ESP12E de 4Mb).
Código: Seleccionar todo
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
void setupWiFi() {
// ...
// Tu setup de la wifi
MDNS.begin("Nombre"); // Nombre del host
MDNS.addService("http", "tcp", 80);
// ...
}
void setupOTA() {
// ArduinoOTA.setPort(8266); // Puerto, por defecto el 8266
ArduinoOTA.setHostname((const char *) "Nombre"); // Nombre del host
// No authentication by default
// ArduinoOTA.setPassword((const char *)"123");
// DEBUG, can be omitted
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) {
W_DEBUG("Error[");
W_DEBUG(error);
W_DEBUG("]: ");
switch (error) {
case OTA_AUTH_ERROR:
// Auth Failed
break;
case OTA_BEGIN_ERROR:
// Begin Failed
break;
case OTA_CONNECT_ERROR:
// Connect Failed
break;
case OTA_RECEIVE_ERROR:
// Receive Failed
break;
case OTA_END_ERROR:
// End Failed
break;
default:
// Unknown error
}
});
ArduinoOTA.begin();
}
void setup(void) {
setupWiFi();
setupOTA();
}
void loop(void) {
ArduinoOTA.handle();
}
Con ésto añadido a los programas que subas podrás programar tu ESP8266 sencillamente escogiendo como puerto el nuevo que aparecerá, llamado "Nombre-ota at <IP actual del dispositivo> (Generic ESP8266 Module)".
Sólo comentar que no he conseguido que me aparezca en Linux, pero es debido a que tengo una versión de Python no compatible y es bastante engorroso cambiarlo en mi ordenador (Gentoo Linux). Sin embargo me funciona perfectamente en Windows.
Fuentes: