OTA – Over The Air

Um die Programmierung von IoT-Devices auch ohne Leitungsverbindung zu ermöglichen, kann der WMOS Mikrocontroller mit kleiner Anstrenung auch over the air (WIFI) programmiert werden.

Zur Realisierung der OTA-Programmierung muss das Programm einmalig mit Code ergänzt werden, der im laufenden Betrieb die Programmierung über die WIFI-Verbindung ermöglicht.

#include <ESP8266WiFi.h>
#include <ArduinoOTA.h>
#include <PubSubClient.h>
#include <DHT.h>

[...]

void setupWifi() {
  [...]
  // default port is 8266
  // ArduinoOTA.setPort(8266);

  //default hostname is esp8266-[ChipID]
  ArduinoOTA.setHostname(HOST_NAME.c_str());

  // add password for authentication
  // ArduinoOTA.setPassword((const char *)"123");

  ArduinoOTA.onStart([]() {
    Serial.println("Start");
  });
  ArduinoOTA.onEnd([]() {
    Serial.println("End");
  });
  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();
} // initWIFI

void loop() {
 ArduinoOTA.handle();
 [...]
}

Nach der Programmierung des Mikrocontrollers über die USB-Leitung  mit oben angeführten Programm, wird in der Arduino-Entwicklungsumgebung automatisch ein Netzwerk-Programmierport angeboten.

Die folgende Programmierung kann dann bereits OTA erfolgen.

Schreibe einen Kommentar