Herramientas de usuario

Herramientas del sitio


proyectos:jardin_delicias:tecnologicos:esp8266_ota

¡Esta es una revisión vieja del documento!


OTA (over the air) firmware upload for ESP8266

Ejemplo de arduino

El ejemplo de github está desactualizado y no funciona, tomado desde el IDE de arduino si funciona. https://github.com/esp8266/Arduino/blob/master/libraries/ArduinoOTA/examples/BasicOTA/BasicOTA.ino

Se fusiona el código de OTA con la librería WifiManager para administrar la configuración a la red.

Con este programa y la modificación que se explica abajo en el archivo platformio.ini la actualizaciones siguientes del firmware del esp se harán a través de wifi

/*
* El código de los ejemplos de github es diferente al de el IDE de arduino. El de github no funcionó
*/
 
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
#include <WiFiManager.h>         // https://github.com/tzapu/WiFiManager
 
void setup() {
  Serial.begin(115200);
  Serial.println("Booting");
 
  //WiFiManager
  //Local intialization. Once its business is done, there is no need to keep it around
  WiFiManager wifiManager;
  //reset saved settings
  //wifiManager.resetSettings();
 
  //set custom ip for portal
  //wifiManager.setAPConfig(IPAddress(10,0,1,1), IPAddress(10,0,1,1), IPAddress(255,255,255,0));
 
  //fetches ssid and pass from eeprom and tries to connect
  //if it does not connect it starts an access point with the specified name
  //here  "AutoConnectAP"
  //and goes into a blocking loop awaiting configuration
  wifiManager.autoConnect("AutoConnectAP");
  //or use this for auto generated name ESP + ChipID
  //wifiManager.autoConnect();
 
 
  //if you get here you have connected to the WiFi
  Serial.println("connected...yeey :)");
 
 
  // 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 after OTA desconectado del pc");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
}
 
void loop() {
  ArduinoOTA.handle();
}

También hay que editar el archivo platformio.ini donde se agrega la línea

upload_port = 192.168.1.71 ; La ip que le entregó el router de mi casa

Funciona con platformio no se con arduino cómo sería pero se que también se puede upload_port = 192.168.1.71 ## La ip que le entregó el router de mi casa

proyectos/jardin_delicias/tecnologicos/esp8266_ota.1475786781.txt.gz · Última modificación: 2016/10/06 20:46 por brolin