NodeMCU
# NodeMCU

NodeMCU ist ein freies Betriebssystem unter MIT-Lizenz für den preisgünstigen 32-Bit-Mikrocontroller ESP8266 der chinesischen Firma espressif zum Aufbau von WLAN-basierenden Netzwerken. Die Anwendungsprogramme werden in der Skriptsprache Lua geschrieben und erlauben einen vergleichsweise einfachen Zugriff auf die Hardware des Mikrocontrollers. Die Anfänge von NodeMCU gehen auf Entwicklungsarbeiten eines GitHub-Nutzers namens Hong aus dem Oktober 2014 zurück. Das Evaluierungsboard wird auch NodeMCU genannt. Es erlaubt neben Programmierung in Lua auch Programmierung in C++ und Arduino IDE.

## Aufbau

Der Betriebssystemkern von NodeMCU besteht aus verschiedenen Modulen, welche im Rahmen der Kernelerstellung individuell kombiniert werden und den eigentlichen Betriebssystemkern bilden. Beispielsweise stehen Module wie spiffs, ein Dateisystem mit Wear-Leveling, Module für die Unterstützung der digitalen Ein- und Ausgabe und einer analogen Schnittstelle, der Timer und UART-Schnittstelle zur Verfügung. Die im ESP8266 integrierte WLAN-Schnittstelle und darauf aufbauend das Transmission Control Protocol/Internet Protocol (TCP/IP) wird durch eigene Module unterstützt, welche die Netzwerkintegration erlauben. Weiter stehen auch höhere Protokolle wie Network Time Protocol (NTP) zur Synchronisierung der Uhrzeit oder das Protokoll MQTT für die Abfrage von Sensordaten bzw. das Übertragen von Steuerdaten für Aktuatoren im Rahmen von NodeMCU zur Verfügung. Es können von NodeMCU verschiedene Sensoren wie Temperatur- oder Luftfeuchtigkeitssensoren als Modul integriert werden. Der Betriebssystemkern samt individuellen Modulen kann auch über Web-Services erstellt werden.
Durch die Verwendung der Programmiersprache Lua ist für die Entwicklung von eigenen Anwendungsprogrammen keine integrierte Entwicklungsumgebung (IDE) nötig. Für das Erstellen von Lua-Skripts reicht im Prinzip ein einfacher Texteditor, die so erstellten Textdateien werden direkt im Dateisystem von NodeMCU abgelegt und von dort ausgeführt. Durch den hohen Abstraktionsgrad lassen sich typische Aufgaben, wie das Verbinden mit einem Wireless Access Point, mit einigen Zeilen Programmcode in Lua realisieren. Darüber hinaus können Programme auch mit Hilfe anderer Programmierumgebungen wie z. B. der Arduino-IDE erstellt werden.
Für die Evaluierung und als Entwicklungsplattform für NodeMCU sind einfache Hardwaremodule, basierend auf dem Hardware-Modul ESP-12 mit integrierter USB-Schnittstelle, als Open Hardware verfügbar.