NodeMCU Blink + HTTP

Zo simpel en eigenlijk toch best wel gaaf!

Een NodeMCU verbonden aan je wifi en via de browser een led aan/uit zetten. Het mooie is, het kan allemaal standaard al.

Benodigdheden

  • LED, kleur naar keuze

Sketch

Neem onderstaande sketch over. Ik zal je voor dit simpele voorbeeld niet ophouden met uitleg van de inhoudelijke code, wel van belang is de pin. De LED zit op GPIO13, op de Node MCU is dat D7.

Vergeet niet je wifinaam en wachtwoord aan te passen op regel 3 en 4 (hoofdletter gevoelig).

#include <ESP8266WiFi.h>
 
const char* ssid = "NetwerkNaam";
const char* password = "Wachtwoord";
 
int ledPin = 13; // GPIO13 (idem aan D7)
WiFiServer server(80);
 
void setup() {
  Serial.begin(115200);
  delay(10);
 
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
 
  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
 
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
 
  // Start the server
  server.begin();
  Serial.println("Server started");
 
  // Print the IP address
  Serial.print("Use this URL to connect: ");
  Serial.print("http://");
  Serial.print(WiFi.localIP());
  Serial.println("/");
 
}
 
void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
 
  // Wait until the client sends some data
  Serial.println("new client");
  while(!client.available()){
    delay(1);
  }
 
  // Read the first line of the request
  String request = client.readStringUntil('\r');
  Serial.println(request);
  client.flush();
 
  // Match the request
 
  int value = LOW;
  if (request.indexOf("/LED=ON") != -1)  {
    digitalWrite(ledPin, HIGH);
    value = HIGH;
  }
  if (request.indexOf("/LED=OFF") != -1)  {
    digitalWrite(ledPin, LOW);
    value = LOW;
  }
 
// Set ledPin according to the request
//digitalWrite(ledPin, value);
 
  // Return the response
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); //  do not forget this one
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
 
  client.print("Led pin is now: ");
 
  if(value == HIGH) {
    client.print("On");
  } else {
    client.print("Off");
  }
  client.println("<br><br>");
  client.println("<a href=\"/LED=ON\"\"><button>Turn On </button></a>");
  client.println("<a href=\"/LED=OFF\"\"><button>Turn Off </button></a><br />");  
  client.println("</html>");
 
  delay(1);
  Serial.println("Client disonnected");
  Serial.println("");
 
}

Upload de sketch (kan even duren – zie ook de voortgang in het rood) en open direct hierna de Seriële Monitor.

Hier kan je zien of de NodeMCU verbonden is, welk ip-adres hij heeft gekregen en wat de status van je LED is.

Open de URL in je browser om de LED te beïnvloeden, cool hè!?