NodeMCU / ESP8266 Wifi LED

Als kleines Beispiel zum Einstieg in die Programmierung des ESP8266 eine LED welche sich über Wlan Steuern lässt.

Was wird benötigt?

Webserver auf dem NodeMCU

Ihr solltet die Arduino IDE wie beschrieben eingerichtet haben.

Das folgende Sketch zeigt einen simplen Webserver. Kopiert es in die Arduino IDE und ersetzt die Punkte bei ssid und password durch Eure Wlan-Zugangsdaten.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

const char* ssid = "........";
const char* password = "........";

ESP8266WebServer server(80);

const int led = LED_BUILTIN;

void handleRoot() {
  server.send(200, "text/plain", "hello from esp8266!");
}

void ledOn() {
  digitalWrite(led, 0);
  server.send(200, "text/plain", "LED on");
}

void ledOff() {
  digitalWrite(led, 1);
  server.send(200, "text/plain", "LED off");
}

void handleNotFound(){
  digitalWrite(led, 1);
  String message = "File Not Found\n\n";
  message += "URI: ";
  message += server.uri();
  message += "\nMethod: ";
  message += (server.method() == HTTP_GET)?"GET":"POST";
  message += "\nArguments: ";
  message += server.args();
  message += "\n";
  for (uint8_t i=0; i<server.args(); i++){
    message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
  }
  server.send(404, "text/plain", message);
  digitalWrite(led, 0);
}

void setup(void){
  pinMode(led, OUTPUT);
  digitalWrite(led, 0);
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  Serial.println("");

  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  if (MDNS.begin("esp8266")) {
    Serial.println("MDNS responder started");
  }

  server.on("/", handleRoot);
  server.on("/on", ledOn);
  server.on("/off", ledOff);

  server.onNotFound(handleNotFound);

  server.begin();
  Serial.println("HTTP server started");
}

void loop(void){
  server.handleClient();
}

Öffnet den Seriellen Monitor der Arduino IDE über Werkzeuge -> Serieller Monitor Ihr solltet folgende Ausgabe sehen:

Hier findet Ihr auch die IP-Adresse welche von Eurem Router an den ESP8266 zugewiesen wurde. In meinem Fall 192.168.1.150.

Für den Webserver werden Drei Hauptfunktionen festgelegt: handleRoot, ledOn, ledOff.

Diese können über den Browser (bzw. HTTP) angesprochen werden.

handleRoot kann über http://192.168.1.150 aufgerufen werden. ledOn kann über http://192.168.1.150/on aufgerufen werden und ledOff über http://192.168.1.150/off. Ihr müsst beim Aufruf jeweils eure IP-Adresse einsetzten.

Im Code wird jeweils definiert was bei dem jeweiligen Aufruf passiert. handleRoot sendet nur einen Text an den Browser. ledOn bzw. ledOff schaltet zusätzlich noch die eingebaute LED ein bzw. aus.

 

Ein Antwort

  1. Warum denn mit einem Webserver auf dem NodeMCU und nicht über MQTT? Dann kann man den ESP8266 auch mit Lua programmieren 🙂

Schreibe einen Kommentar

Home Allgemein NodeMCU / ESP8266 Wifi LED
© sweet pi - sweet home
Top