WLAN-Server

NodeMCU

Um ein lokales WLAN-Netz zur Datenübertragung nutzen zu können, empfiehlt sich die Verwendung einer „NodeMCU“.

Dieses Board basiert auf einem 32-Bit-Mikrocontroller mit integriertem WLAN. Die Verbindung zum Computer wird über ein handelsübliches Micro-USB-Kabel hergestellt und kann mithilfe der Arduino-IDE programmiert werden.

Damit das gelingt, wird eine IDE-Version 1.6.4 oder höher benötigt, an der einige Anpassungen vorgenommen werden müssen:

  1. IDE starten und unter Datei > Voreinstellungen anwählen.
  2. In dem sich öffnenden Fenster unten hinter „Zusätzliche Boardverwalter-URLs“ die Adresse „http://arduino.esp8266.com/stable/package_esp8266com_index.json“eingegeben und mit OK bestätigen.  
  3. Danach über → Werkzeuge Board Boardverwalter zum Paket „esp8266 by ESP8266 Community“ navigieren und die Software installieren.

Nach einem Neustart der IDE kann nun über → Werkzeuge → Board das „NodeMCU 1.0“ ausgewählt werden. Die voreingestellten Werte (CPU Frequency, Flash Size, Upload Speed) werden wie vorgegeben belassen.

Schließlich muss für die Programmierung unter → Werkzeuge → Port der passende COM-Port ausgewählt werden. Das ist schon alles. 

WLAN-Server

Die Funktionstüchtigkeit der NodeMCU kann mit Hilfe des nachfolgenden Programms überprüft werden, das

  • die NodeMCU ins WLAN-Netz bringt,
  • die IP-Adresse ermittelt und über den seriellen Monitor ausgibt
  • und einen Dialog startet, über den das Ein- und Ausschalten der LED von jedem Browser möglich ist, der auf dieses WLAN-Netz Zugriff hat – einerlei ob Handy, Tablet, Notebook oder PC. 

Und so ist vorzugehen: 

  • Arduino-IDE starten und die oben beschriebenen Einstellungen vornehmen
  • Programm unten kopieren und in die IDE einfügen 
#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("");
}  
  • SSID und Passwort eintippen, den seriellen Monitor starten (Shift+Strg+M) und das Programm auf die NodeMCU übertragen. 
  • Wird der serielle Monitor nach dem Hochladen gestartet, muss die NodeMCU resettet werden, um die IP-Adresse angezeigt zu bekommen.
  • Zahlencode (htp://192.168.178. xx) in die Adresszeile eines beliebigen Browsers mit Zugriff auf das WLAN-Netz eintippen und über die Eingabetaste bestätigen.

Im Browserfenster wird daraufhin folgendes angezeigt: 

Durch Anklicken der Links kann die auf der NodeMCU verbaute LED an- und ausgeschaltet werden.


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


Die NodeMCU kann hier preisgünstig erworben werden. Die im Sketch verwendete Library kan hier heruntergeladen werden.