
NodeMCU ESP8266 Einführungstutorial
10.01.2017
Vor ein paar Wochen habe ich mir einen NodeMCU ESP8266 bestellt, der nun endlich angekommen ist. Da sich dieses Entwicklungsboard aufgrund seines WLAN-Chips bestens für IoT- und Smarthome-Projekte eignet und es deswegen zukünftig öfter bei Projekten auf smarthome-blogger.de verwende wird, möchte ich dir im heutigen Artikel eine kurze Einführung zur Programmierung des ESP8266 mit der Arduino IDE geben. Du kannst den ESP 8266 auch mit der Programmiersprache LUA programmieren - wir beschränken uns jedoch auf C++. In diesem NodeMCU ESP8266 Tutorial erwartet dich folgendes: Zuerst wird eine LED in einer Endlosschleife eingeschaltet, nach einer Sekunde wieder ausgeschaltet und eine Sekunde gewartet. Im zweiten Skript wird die LED über ein Webinterface geschaltet.
Benötigte Komponenten für das Tutorial
- NodeMCU ESP8266
- LED's (Affiliatelink)
- Female-Female Jumper-Kabel (Affiliatelink)
- microUSB-Kabel (Affiliatelink)
- optional: aktiver USB-Hub (Affiliatelink)
NodeMCU ESP8266 Einführung als Video
Schaltung des NodeMCU ESP8266
Bevor mit der Programmierung des NodeMCU ESP8266 begonnen wird, muss zuerst noch die Testschaltung aufgebaut werden. Dabei wird der Pin "D7" mit der Anode der LED verbunden (das längere Bein) und der Pin "GND" wird mit der Kathode - also dem kürzeren Bein - der LED verbunden. Je nach der verwendeten LED solltest du eventuell noch einen Widerstand zwischen den Pin "D7" und die Anode der LED schalten, um Schäden an der LED zu vermeiden. Um den ESP8266 mit Software zu beschreiben, verbindest du ihn mit einem microUSB-Kabel mit deinem PC. Ein aktiver USB-Hub kann hier eine große Hilfe sein, falls die Stromversorgung allein über den USB-Port deines Computers nicht genug ist.
Arduino IDE
Um den NodeMCU zu programmieren, wird eine Entwicklungsumgebung benötigt. Dazu kannst du dir die Arduino IDE von arduino.cc herunterladen. Nach dem Download wird die Arduino IDE noch installiert.
Wenn die Arduino IDE fertig installiert ist, kannst du sie starten. Als erstes muss der ESP8266 als Gerät hinzugefügt werden. Dazu klickst du links oben auf "Datei" und dort auf "Voreinstellungen". Im Feld "Zusätzliche Bordverwalter-URLs" trägst du nun "http://arduino.esp8266.com/stable/package_esp8266com_index.json" ein und klickst auf "OK". Um den NodeMCU ESP8266 nun endgültig hinzuzufügen, klickst du unter "Werkzeuge" -> "Board" auf Bordverwalter und suchst dort nach "ESP8266". Klicke bei "ESP8266" auf installieren. Als letzten Schritt gibst du noch das Gerät an, auf das das Programm später geschrieben werden soll. Dazu klickst du auf "Werkzeuge" und wählst beim Punkt "Board" deinen ESP8266 aus. In meinem Fall war das "NodeMCU 0.9 (ESP-12 Module)". Die Version steht meistens irgendwo auf dem Board selbst. CPU-Frequenz und Flash-Größe habe ich nicht verändert, die Upload-Geschwindigkeit habe ich jedoch von 9600 auf 115200 erhöht. Jetzt, da die Einrichtung der IDE erledigt ist, kann mit der Programmierung begonnen werden.Das erste Skript: Blinken in Dauerschleife
Jetzt kannst du den NodeMCU ESP8266 programmieren. Ein Arduino Programm besteht grundsätzlich aus den zwei Methoden setup() und loop(). Die setup-Methode wird beim Programmstart einmal aufgerufen und die loop-Methode wie der Name schon sagt, in einer Dauerschleife abgelaufen. In diesem ersten Skript wird in der setup-Methode der Modus des Pins gesetzt und in der loop-Methode damit eine LED eingeschaltet, nach einer Sekunde ausgeschaltet und eine Sekunde gewartet. Die Zeit die gewartet werden soll kannst du ganz einfach variieren, indem du in Zeile 9 und/oder Zeile 11 die Zahl 1000 änderst. Die Zahl gibt an, wie viele Millisekunden gewartet werden soll, bis die nächste Zeile ausgeführt wird. Trage diesen Code in den Editor der Arduino IDE ein.
void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); }
Um den Code nun auf den NodeMCU ESP8266 zu schreiben, klickst du in der Leiste oben bei "Sketch" auf "Hochladen". Nun wird der Code kompiliert und anschließend auf das Board geschrieben, soweit esbei der Kompilierung keine Fehler gab. Während des Uploads wird der Fortschritt im Arduino IDE-Fenster rot angezeigt und die blaue LED auf deinem ESP8266 sollte schnell blinken.
Du kannst dein Board nun von deinem PC trennen und mit einem microUSB-Netzteil verbinden. Die angeschlossene LED sollte kurz darauf im Sekundentakt blinken.
Fortgeschrittenes Skript: LED per Internet schalten
Das forgeschrittene Skript besitzt die zwei Konstanten "SSID" und "PSK", wobei "SSID" der Name des Netzwerks ist, mit dem sich der ESP8266 verbinden soll und "PSK" das Passwort des jeweiligen Netzwerks. In der setup-Methode wird lediglich der Modus des Pins 13 auf "Output" gesetzt und die Methode "initWiFi()" aufgerufen. Diese Methode verbindet sich mit dem angegebenen Netzwerk und startet den Server zur Schaltung der LED, sobald die Verbindung besteht. In der loop-Methode wird zuerst geprüft, ob sich jemand mit dem Server verbunden hat. Ist das nicht der Fall, so wird dieser Methodendurchlauf abgebrochen. Anschließend wird geprüft, ob die Netzverbindung immernoch besteht und gegebenenfalls erneut die Methode "initWiFi()" aufgerufen. Wenn die Verbindung hergestellt ist und jemand auf den Server zugreift, wird der HTTP-Request gelesen und der Durchlauf abgebrochen, falls er leer ist. Andernfalls wird geprüft, ob er ein Schlüsselwort zum Ein- bzw. Ausschalten der LED enthält und die LED entsprechend ein- bzw. ausgeschaltet. Anschließend wird ein HTML-Dokument erstellt und ausgegeben. Dieses HTML-Dokument besteht aus dem Text "LED schalten" und 2 Buttons, die bei einem Klick den HTTP-Request an den Server senden, der die LED ein- bzw. ausschaltet.
#include const char* SSID = "NETZWERKNAME"; const char* PSK = "PASSWORT"; WiFiServer server(80); void setup() { pinMode(13, OUTPUT); initWiFi(); } void loop() { WiFiClient client = server.available(); if(!client){ return; } if(WiFi.status() != WL_CONNECTED){ initWiFi(); } String request = client.readStringUntil('\r'); client.flush(); if(request==""){ client.stop(); return; } //GPIOS schalten if(request.indexOf("mode=1")>=0){ digitalWrite(13, 1); } else if(request.indexOf("mode=0")>=0){ digitalWrite(13, 0); } //Ausgabe erzeugen String output; output += "http/1.x 200 OK\n"; output += "Content-Type: text/html; charset=UTF-8\n\n"; output += "
"; output += ""; output += "
LED schalten
"; output += "
"; output += ""; client.print(output); client.stop(); } void initWiFi(){ WiFi.begin(SSID, PSK); while(WiFi.status() != WL_CONNECTED){ delay(500); } server.begin(); }
Dieses Programm flasht du genau so wie das erste auf den ESP8266. Wenn es vollständig hochgeladen ist, rufst du mit einem Browser die IP-Adresse des NodeMCU auf und solltest anschließend die folgende Ausgabe erhalten:
Wenn nun einer dieser Buttons geklickt wird, wird die LED auf den entsprechenden Zustand geschaltet. Mit dem ESP8266 lassen sich aufgrund des günstigen Preises und der geringen Maße einige Projekt im "Internet of Things"-Bereich umsetzen. Auch hier auf smarthome-blogger.de wird der ESP8266 zukünftig für einige "Internet of Things"-Projekte, wie beispielsweise selbstgebaute Sensoren, Schalter oder ähnliches genutzt. Die Anleitungen dazu findet du unter der Kategorie "ESP8266".
Weitere Projekte mit dem NodeMCU ESP8266
Der ESP 8266 ermöglicht viele weitere spannende Projekte im Smarthome Bereich. Man kann zum Beispiel einen Temperatur Sensor bauen oder Daten per MQTT an einen Raspberry Pi senden.
Dieser Beitrag hat dir gefallen?
Dann abonniere doch unseren Newsletter!