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:
- IDE starten und unter Datei > Voreinstellungen anwählen.
- 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.
- 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("");
}
(Sketch getestet mit der Arduino IDE 1.8.12 und der ESP8266 Community Version 2.6.0)
- 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 kann hier heruntergeladen werden.