Im nachfolgenden Artikel werde ich eine kleine Einführung zum Thema NodeMCU-Entwicklungsboard (basierend auf dem ESP8266) in Verwendung mit der NodeMCU-Firmware geben. Dabei gehe ich auf das Flashen der entsprechenden Firmware auf das Board ein und stelle eine (plattformübergreifende) Entwicklungsumgebung vor, um Lua-Scripte auf das Board laden und ausführen zu können. Das alles werde ich mit meinen eigenen Erfahrungen mit der entsprechenden Hard- und Software verknüpfen, um einen möglichst praxisnahen Überblick zu geben und euch einen frustfreien Einstieg zu ermöglichen.

 

1. NodeMCU – was ist das?

NodeMCU ist der Name einer Plattform (wie Arduino), die aus Hard- und Software besteht. Die Hardware bildet dabei das Entwicklungsboard gleichen Namens, welches wiederrum auf dem WLAN-SoC ESP8266 basiert. Vorteil des Boards ist der integrierte USB-Anschluss, sodass hier kein zusätzlicher USB-to-UART-Adapter wie bei anderen ESP8266 Modellen notwendig ist. Auch wurden auf das Board bereits Stiftleisten gelötet, durch die man es einfach auf ein Breadboard stecken kann und die digitalen und analogen Anschlusspins einfach nutzen kann.nodemcu

Das Board kann übrigens wie andere ESP8266 nicht nur mit der NodeMCU-Firmware verwendet werden, sondern auch z.B. über die Arduino-IDE mit selbstgeschriebenen Programmen versorgt werden. Mehr zum Thema ESP8266 findet ihr im Übrigen auch in diesem Artikel von mir. Dort habe ich auch eine Linkliste am Ende des Artikels erstellt.

Die Software der NodeMCU-Plattform ist die gleichnamige Firmware, die es ermöglicht den Microcontroller bequem über Lua zu programmieren. Das ist für Einsteiger oft simpler, als z.B. C. Eine in Java geschriebene und damit plattformunabhängige IDE zum Erstellen und Übertragen der Lua-Scripte ist unter dem Namen ESPlorer kostenlos erhältlich.esplorer_1

 

2. Herausfinden der vorinstallierten Firmware

Mein Entwicklungsboard kam statt mit der passenden NodeMCU-Firmware mit einer Software für AT-Kommandos (siehe hier). Um herauszufinden, mit welcher Firmware euer NodeMCU-Board geliefert wurde, geht ihr wie folgt vor:

Zuerst ladet ihr euch die Software ESPlorer herunter, welche unter Windows, Linux, Solaris und Mac OS X läuft (Java erforderlich!). Geht dazu auf diese Seite des russischen Entwicklers und klickt auf den Download-Button.

Schließt nun das NodeMCU-Entwicklungsboard an den PC an und schaut, welchen Namen die serielle Schnittstelle vom Rechner zugewiesen bekommt. Auf meinem Linux-System war das Board z.B. unter /dev/ttyUSB0 zu erreichen. Bei Windows-Systemen sollte die entsprechende Schnittstelle (COMx) im Gerätemanager ersichtlich sein. Merkt euch diese, da wir den Namen anschließend noch brauchen.


Hinweis für Mac-Nutzer (bzw. für Nutzer anderer Betriebssysteme, bei denen der Port nach Anschluss des NodeMCU-Boards nicht angezeigt wird): Unter OS X „El Capitan“ erhielt ich nach Anschluss des NodeMCU-Boards mit CP2102-Chip keinen neuen Port angezeigt. Es stellte sich heraus, dass der entsprechende Treiber des Herstellers noch installiert werden musste. Dieser ist für alle verfügbaren Betriebssysteme auf dieser Seite zu bekommen. Habt ihr bei eurem NodeMCU-Board also auch das Problem, dass kein Port angezeigt wird, müsst ihr vermutlich noch den Treiber installieren. Da dieser (je nach Betriebssystem) nur wenige Kilobyte bis Megabyte groß ist, geht das allerdings recht zügig.


Die heruntergeladene .zip-Datei entpackt ihr nun und startet ESPlorer.jar. Unter Windows sollte dazu ein Doppelklick auf die entsprechende Datei reichen, auf meinem Linux-Entwicklungs-PC habe ich sie über die Konsole via java -jar ESPlorer.jar geöffnet. Ihr werdet nun mit der Benutzeroberfläche der IDE begrüßt:esplorer_1

Wählt nun auf der rechten Seite oben in der Dropdown-Liste den seriellen Anschluss eures Boards aus (hier: /dev/ttyUSB0) und klickt dann auf den „Open“-Button.esplorer_2

Die Software versucht nun sich mit dem Board zu verbinden.esplorer_3

Da das Board schon läuft und aktuell keine Daten vom Bord über die serielle Schnittstelle an den PC übertragen werden, kommt hier natürlich nichts an. Also drückt den Reset-Knopf auf dem Board kurz, um einen Neustart dessen zu erzwingen.

Jetzt solltet ihr ein „Got answer“ erhalten und einen Wust an komischen Zeichen:esplorer_4

Das liegt an der falsch eingestellten Baudrate, die die Geschwindigkeit der seriellen Schnittstelle beschreibt. Um die richtige zu wählen, wählt ihr in der Dropdownliste rechts oben, wo aktuell 9600 steht 115200 aus und betätigt auf eurem Board ggf. nochmals den Reset-Taster. Nun sollte im Klartext zu sehen sein, welche Firmware installiert ist (hier die AT-Firmware):esplorer_5

Steht bei euch etwas mit „NodeMCU xxx powered by Lua“ ist die NodeMCU-Firmware bereits vorinstalliert. Je nach Version könnt ihr den nächsten Schritt (Flashen der NodeMCU-Firmware) überspringen – bei alten Firmwareversionen (zum Zeitpunkt des Erstellens des Artikels <0.9.6) empfiehlt es sich, die neueste Firmware aufzuspielen, um eventuelle Bugs von Anfang an zu vermeiden.

 

3. Flashen der NodeMCU-Firmware

Das Flashen der Firmware geht auf verschiedene Weiße – per GUI oder per Kommandozeile. Da es die entsprechende GUI aber nicht für alle Betriebssysteme gibt, die Kommandozeilenvariante aber auf allen Betriebssystemen, auf denen Python installiert ist läuft, werde ich im Folgenden diese Variante beschreiben.

Ladet euch dazu das Tool „esptool“ hier herunter.


Achtung! Unter manchen Linux-Versionen scheint es in der aktuellen Version nicht zu funktionieren. Ein Fix wurde vom User „sguilly“ auf GitHub bereitgestellt. Solltet ihr trotz korrekter Vorgehensweise „Failed to connect“ als Fehlermeldung erhalten, so ladet euch den verlinkten Fix herunter – die weitere Vorgehensweise ist analog.


Zusätzlich müsst ihr euch noch die aktuelle NodeMCU-Firmware herunterladen, welche ihr hier findet. Diese gibt es in einer „float“- und einer „integer“-Version. Unterschied ist, dass die float-Version mit Fließkommazahlen umgehen kann im Gegensatz zur integer-Version, aber auch etwas größer ist. Ich persönlich habe mich für die float-Version entschieden. Ladet also die präferierte .bin-Datei herunter.

Um die Firmware nun auf euer NodeMCU-Board zu übertragen, wechselt ihr im Terminal in den esptool-Ordner und gebt einen Befehl mit folgendem Aufbau ein:

Den Pfad zur Firmware-Datei sowie den Port dabei entsprechend eurer Daten ändern. Die Firmware sollte nun übertragen werden (Achtung! Board dabei nicht vom PC trennen.):esptool

Um die Firmware zu überprüfen könnt ihr nun wieder den ESPlorer öffnen, dort den Port wählen, Baudrate auf 115200 setzen und auf „Open“ klicken. Betätigt ihr nun den Reset-Knopf auf dem Board, sollte es sich mit der eben geflashten Firmware melden:esplorer_6

Ihr könnt das Board nun mit Lua programmieren.

 

4. Hello-World-Server in Lua

Auf der Webseite von NodeMCU finden sich bereits ein paar einfache Beispiele für Programme (dazu einfach auf der Seite etwas nach unten scrollen). Daraus habe ich mal ein Beispielscript für einen Hello-World-Server erstellt:

Diesen Code fügt ihr in dem Textfeld auf der linken Seite im ESPlorer ein und ändert Name und Passwort zu den entsprechenden Daten eures WLAN-Netzwerkes. Klickt nun den Button links unten, um das Script zu speichern und auf das Board zu übertragen. Speichert es z.B. als init.lua und fahrt fort mit der Übertragung.esplorer_7

Schaut nun in eurem Router-Webinterface nach, welche IP-Adresse das NodeMCU-Board erhalten hat und gebt diese in eurem Browser ein. Alternativ dazu könnt ihr auch ein

nach den ersten 3 Zeilen im obigen Code einbauen, um die IP-Adresse über die serielle Schnittstelle auf eurem PC in der IDE zu sehen.

Die Webseite sollte etwa wie folgt aussehen:website_nodemcu

Damit habt ihr auf eurem Board die neueste NodeMCU-Firmware geflasht und könnt es nun bequem über Lua programmieren. Falls euch das doch nicht zusagt – kein Problem. Auch das NodeMCU-Board lässt sich über die Arduino-IDE programmieren (dazu auch in späteren Artikeln mehr). Beachtet: Wenn ihr über die Arduino-IDE einen Sketch auf das Board übertragt, müsst ihr, um es wieder mit Lua programmieren zu können die NodeMCU-Firmware erneut flashen.


Ich hoffe, ich konnte euch damit einen kurzen Überblick über die ersten Schritte mit dem NodeMCU-Entwicklungsboard geben und freue mich auch über weitere Anregungen bezüglich dieser Hardware in den Kommentaren.

Auch bei Problemen, Fragen oder sonstigen Dingen rund um den Artikel und das Board könnt ihr das unten stehende Kommentarfeld verwenden.