Im Regelfall wird für das Hochladen des Programms ein USB-Anschluss verwendet. Bei den Mikrocontrollern mit einem WiFi-Modul besteht die Möglichkeit, das Programm über die drahtlose Verbindung hochzuladen. Wenn die Mikroontroller mit einem externen Netzteil betrieben werden, können Programm auch ohne Computer und USB-Anschluss hochgeladen werden.
Installiere zunächst die benötigte Bibliothek:
Das Basisprogramm für die Nutzung von Over The Air (OTA):
// ESP8266
// #include "ESP8266WiFi.h"
// #include "ArduinoOTA.h"
// ESP32
#include "WiFi.h"
#include "ArduinoOTA.h"
// Name des Router/Passwort
char Router[] = "Router_SSID";
char Passwort[] = "xxxxxxxx";
void setup()
{
Serial.begin(9600);
delay(1000);
Serial.println("Starte ...");
// Verbindung aufbauen
WiFi.begin(Router, Passwort);
while (WiFi.waitForConnectResult() != WL_CONNECTED)
{
Serial.println("Keine Verbindung, neuer Versuch...");
delay(2000);
ESP.restart();
}
// OTA starten
ArduinoOTA.begin();
// Rechnername setzen
ArduinoOTA.setHostname("ESP");
// Passwort zum Hochladen setzen
// Passwortabfrage vor dem Hochladen entfällt
ArduinoOTA.setPassword("xxxxxxxx");
Serial.println("Verbindung erfolgreich hergestellt!");
Serial.print("IP Adresse: ");
Serial.println(WiFi.localIP());
}
void loop()
{
// Updates über OTA ermöglichen
ArduinoOTA.handle();
}
Im Seriellen Monitor siehst du die IP-Adresse mit der die Verbindung hergestellt wurde.
Nach dem Hochladen siehst du neben dem bisher verwendeten USB-Port den hinzugefügten Netzwerkport.
Nach der Eingabe eines beliebigen Passworts wird das Hochladen gestartet. Wenn du ein Passwort gesetzt hast (ArduinoOTA.setPassword("xxxxxxxx") entfällt dieser Schritt.
Am Beispiel des Blink-Programms soll die Verwendung von OTA erläutert werden.
// ESP8266
// #include "ESP8266WiFi.h"
// #include "ArduinoOTA.h"
// ESP32
#include "WiFi.h"
#include "ArduinoOTA.h"
char Router[] = "Router_SSID";
char Passwort[] = "xxxxxxxx";
/*
interne LEDs
Arduino Nano ESP32 -> D13
Wemos D1 Mini D4
ESP32-Wroom -> 2
*/
int LED = D13;
void setup()
{
Serial.begin(9600);
delay(1000);
Serial.println("Starte ...");
WiFi.begin(Router, Passwort);
while (WiFi.waitForConnectResult() != WL_CONNECTED)
{
Serial.println("Keine Verbindung, neuer Versuch...");
delay(2000);
ESP.restart();
}
ArduinoOTA.begin();
ArduinoOTA.setHostname("ESP");
ArduinoOTA.setPassword("xxxxxxxx");
Serial.println("Verbindung erfolgreich hergestellt!");
Serial.print("IP Adresse: ");
Serial.println(WiFi.localIP());
pinMode(LED, OUTPUT);
}
void loop()
{
ArduinoOTA.handle();
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
delay(1000);
}