MINT - Unterricht  mit  Arduino und anderen

In diesem Kapitel wird gezeigt, wie ein WLAN-Netz als Server genutzt werden kann, sodass vom Handy, Tablet oder PC über einen beliebigen Browser Steuerbefehle an die NodeMCU und damit verbundene Komponenten (hier eine LED) übermittelt werden können.

Mit Hilfe des nachfolgenden Programms wird die IP-Adresse der NodeMCU ermittelt und über den seriellen Monitor ausgegeben. Kopiert man sie in die Adresszeile eines Web-Browsers, startet ein Dialog, über den das Ein- und Ausschalten der LED möglich wird.

 



 

Hier der dazu passende Sketch: 

#include <ESP8266WiFi.h>

const char* ssid = "Routerkennung";

const char* password = "Passwort";

int ledPin = D0; // eingebaute LED

WiFiServer server(80);

void setup() {

  Serial.begin(115200);

  delay(10);

  pinMode(ledPin, OUTPUT);

  digitalWrite(ledPin, LOW);

  // Mit dem WLAN-Netzwerk verbinden

  Serial.println();

  Serial.println();

  Serial.print("Verbinde mit ");

  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {

    delay(500);

    Serial.print(".");

  }

  Serial.println("");

  Serial.println("Mit dem Router verbunden");

  Serial.println();

  // Server starten

  server.begin();

  Serial.println("Server gestartet");

  Serial.println();

  Serial.println();

  // IP-Addresse für den Aufruf des ESP-Servers

  Serial.print("Kopiere die nachstehende IP in die Adresszeile deines Browsers,");

  Serial.println();

  Serial.print("um die Verbindung herzustellen: ");

  Serial.print("http://");

  Serial.print(WiFi.localIP());

  Serial.println("/");

}
void loop() {

  // Verbindungsprüfung

  WiFiClient client = server.available();

  if (!client){

    return;

  }

  // Aktivitäten vom Server im Monitor anzeigen

  Serial.println("neue Aktivität ");

  while (!client.available()) {

    delay(100);

  }

  // Erste Zeile der Eingabe lesen

  String request = client.readStringUntil('\r');

  Serial.println(request);

  client.flush();

  // LED entsprechend der Eingabe an- oder ausschalten

  int value = HIGH;

  if (request.indexOf("/LED=ON") != -1) {

    digitalWrite(ledPin, LOW);

    value = LOW;

  }

  if (request.indexOf("/LED=OFF") != -1) {

    digitalWrite(ledPin, HIGH);

    value = HIGH;

  }

  // Auf die Eingabe reagieren

  client.println("HTTP/1.1 200 OK");

  client.println("Content-Type: text/html");

  client.println("");

  client.println("<!DOCTYPE HTML>");

  client.println("<html>");

  client.print("Die LED ist: ");

  if (value == HIGH) {

    client.print("AUS");

  } else {

    client.print("AN");

  }

  client.println("<br><br>");

  client.println("Klicke <a href=\"/LED=ON\"><b>hier</b></a> um die LED <b>an</b>zuschalten.<br><br>");

  client.println("Klicke <a href=\"/LED=OFF\"><b>hier</b></a> um die LED <b>aus</b>zuschalten.");

  client.println("</html>");

  delay(100);

  Serial.println("Verbindung getrennt");

  Serial.println("");

}

 

In Ergänzung zum obigen Beispiel gibt es hier eine Anleitung, wie man ein Robot-Fahrzeug über WLAN steuern kann Download.