Prof. J. Walter - Informationstechnik, Mikrocomputertechnik, Digitale Medien Quellcode
Hochschule Karlsruhe Logo Informationstechnik
MalRob-EVA-ESP32
Wintersemester 2019/2020
Maximilian Melch
Carsten Artischewski

Quellcode

VerwendeteArduino IDE-Version: 1.8.10
Notwendige Bibliotheken: WiFi.h, ESPmDNS.h, WiFiUdp.h, ArduinoOTA.h
Zusätzlicher Boardverwalter für das ESP32-DevKit V4: https://dl.espressif.com/dl/package_esp32_index.json


Nachfolgend ist der Quellcode eines Testprogrammes für das Übertragen des Arduino Codes via WLAN auf das ESP-32-DevKit V4 angefügt.
OTA steht im nachfolgenden für "Over The Air".

Als Aktion wird testweise eine LED zum blinken gebracht.
Die WLAN-Verbindung wird dabei über die Fritz-Box im Raum LI041 hergestellt.
Dies ermöglicht, im gegensatz zur "alten Methode" den gleichzeitigen Zugang auf das Internet und die Übertragung auf den MalRob-FG ohne Ändern der Verbindung.
Als Restriktion gilt hier, dass ein Zugang zum WLAN ohne Anmeldeseite möglich ist (Nutzung des KA-WLAN ist daher nicht möglich).

Diese Programm muss einmalig per USB auf das ESP-32-DevKit V4 übertragen werden, bei jeder nachflogenden OTA-Übertragung ist dieser Code einzufügen.


//einbinden der Bibliotheken
#include <WiFi.h>
#include <ESPmDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>


//WLAN Einstellungen
const char* ssid = "*************";                                    //SSID des Routers eintragen
const char* password = "******************";                //Passwort des Routers eintragen


//Setup Code
void setup()
{

    Serial.begin(115200);
    Serial.println("Booting");
    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid, password);
    while (WiFi.waitForConnectResult() != WL_CONNECTED)
    {
        Serial.println("Connection Failed! Rebooting...");
        delay(5000);
        ESP.restart();
    }


    ArduinoOTA
        .onStart([]() {
        String type;
        if (ArduinoOTA.getCommand() == U_FLASH)
            type = "sketch";
        else // U_SPIFFS
            type = "filesystem";

        // NOTE: if updating SPIFFS this would be the place to unmount SPIFFS using SPIFFS.end()
        Serial.println("Start updating " + type);
    })
    .onEnd([]() {
    Serial.println("\nEnd");
    })
    .onProgress([](unsigned int progress, unsigned int total) {
    Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
    })
    .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");
    Serial.print("IP address: ");
    Serial.println(WiFi.localIP());

    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    //setup hier


    pinMode(15, OUTPUT);         //Pin 15 fuer LED


}    //end setup


//Main loop
void loop()
{
    ArduinoOTA.handle();        //aufrufen der OTA Funktion

    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    //loop hier


    digitalWrite(15, HIGH);        //LED ein
    delay(500);                           //Wartezeit 500 ms
    digitalWrite(15, LOW);        //LED aus
    delay(500);                           //Wartezeit 500 ms

}    //end loop

  Mit Unterstützung von Prof. J. Walter Wintersemester 2019/2020