Ein Webserver mit dem NodeMCU

Veröffentlicht von

Der zweite Teil – ein Webserver mit dem NodeMCU

Um den Sketch für den Webserver auf den NodeMCU zu laden, muss dieser zu erst mit dem Computer verbunden und in der Arduino IDE eingerichtet werden.

Die Treiber für das Board installieren

Ich habe einen NodeMCU mit einem CP210x USB-Chip, den Treiber findet man hier. Einfach den Treiber herunterladen, installieren und das Board per Micro-USB Kabel mit dem Computer verbinden. Wenn alles erfolgreich war, findet man im Geräte Manager ein neues COM Device.

Die Arduino IDE einrichten

Zu erst müssen wir dem Borad Manager der Arduino IDE ein neues Package hinzufügen. Dazu geht man auf Datei -> Voreinstellungen und trägt unter Zusätzliche Boardverwater-URLs: folgenden Link ein http://arduino.esp8266.com/stable/package_esp8266com_index.json. Mit OK werden die Einstellungen übernommen.

Jetzt kann man unter  Werkzeuge -> Board das NodeMCU 1.0 (ESP-12E Moule) wählen. Wenn ihr das Board per USB verbunden habt, könnt ihr unter Werkzeuge -> Port noch das richtige Port wählen und dann kann es los gehen.

Der erste Sketch

So dann wollen wir mal… Das erste Programm soll den NodeMCU mit dem WiFi verbinden und dann einen Webserver bereitstellen. Eine LED zeigt an dass der Webserver läuft und sie blinkt wenn sich ein Client verbindet.

Die LED ist mit dem Pin D8 verbunden, laut dem NodeMCU Pinout ist der Pin auf GPIO15 gemapped.

Hier ist der erste Programmcode für den Sketch, ihr könnt ihn euch als .ino Datei herunterladen.

/*********
 * Project: Home automation using the ESP8266 NodeMCU board
 * Name: WiediMatic
 * 
 * Version: 0.01 / 17.07.2017
 * - Connecting to the WiFi network and start a webserver
 * 
 * For the complete project look at: http://www.robinw.de    
 *********/

#include <ESP8266WiFi.h>

// Network Settings
const char* ssid = " --ssid-- ";
const char* password = " --password-- ";
const char* deviceName = "WiediMatic";
IPAddress clientIP(192, 168, 178, 201); //the IP of the WiediMatic device
IPAddress gateway(192, 168, 178, 1); //the gateway
IPAddress subnet(255, 255, 255, 0); //the subnet mask
WiFiServer server(80);

// Pin Settings
int ledPin = 15; // GPIO15 (D8)
 
void setup() {
  Serial.begin(115200);
  delay(10);
 
  // Connect to WiFi network
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  // Connect to the WiFi network
  WiFi.hostname(deviceName);
  WiFi.config(clientIP, gateway, subnet);  
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");
 
  // Start the webserver
  server.begin();
  Serial.println("Server started");
   
  // Turn on the LED when the device is ready
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, HIGH);
}
 
void loop() {
  // Listening for new clients
  WiFiClient client = server.available();

  if (client) {
    Serial.println("New client");

    // Flash the LED when a client connects
    digitalWrite(ledPin, LOW);
    delay(500);
    digitalWrite(ledPin, HIGH);
    
    // Boolean to locate when the http request ends
    boolean blank_line = true;
    
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        
        if (c == '\n' && blank_line) {
            client.println("HTTP/1.1 200 OK");
            client.println("Content-Type: text/html");
            client.println("Connection: close");
            client.println();
            
            // Send some data to the webbrowser
            client.println("<!DOCTYPE HTML>");
            client.println("<html>");
            client.println("<head><META HTTP-EQUIV=\"refresh\" CONTENT=\"15\"></head>");
            client.println("<body><h1>Welcome to WiediMatic</h1>");
            client.println("<h2>It works!</h2>");
            client.println("</body></html>");  
            break;
        }
        
        if (c == '\n') {
          // when starts reading a new line
          blank_line = true;
        }
        else if (c != '\r') {
          // when finds a character on the current line
          blank_line = false;
        }
      }
    }
      
    // closing the client connection
    delay(1);
    client.stop();
    Serial.println("Client disconnected.");
  }
}
NodeMCU Webserver (29 Downloads)

In den Variablen ssid und password braucht ihr nur noch eure WLan-SSID und das WLan-Passwort eintragen. Der Sketch kann so direkt auf den NodeMCU hochgeladen werden.

Wie geht es weiter?

Im nächsten Teil möchte ich den Wettersensor BME280 ansteuern und auslesen, die Werte werden dann mit Hilfe des Webservers ausgegeben.

Der erste Teil meines Projektes                                                                                                                 Der erste Sensor

2 Kommentare

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.