ESP8266: Usar OTA para subir proyectos desde Arduino IDE

Arduino, STM32 (Maple), ESP8266, ESP32, etc
Avatar de Usuario
Naguissa
Administrador del Sitio
Mensajes: 484
Registrado: 04 Jul 2016, 11:17
Agradecido: 102 veces
Agradecimiento recibido: 134 veces

ESP8266: Usar OTA para subir proyectos desde Arduino IDE

Mensaje sin leer por Naguissa »

Los microcontroladores ESP8266 tienen la capacidad de programarse usando OTA directamente desde el IDE Arduino. Para ello el programa que tiene actualmente funcionando debe estar preparado para aceptar OTA.

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).
Ahora necesitaremos que los programas subidos sean compatibles con OTA. Para ello deberemos añadir en nuestros programas la siguiente estructura básica:

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:
Estos usuarios agradecieron al autor Naguissa por el mensaje:
Daniel
Valoración: 33%

Tags:
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje