NodeMCU – „Einer für (fast) Alles!“

nodemcu_small
nodemcu_small

Der Microcontroller NodeMCU kommt mit allem daher was man für ein ersten Start benötigt.
Er ist mit einem WIFI Chip ausgestattet (ESP8266) und besitzt für einen Arduino Typisch die Analogen und Digitalen Aus-/ Eingänge (siehe Technische Daten).

 

NodeMCU Microcontroller
NodeMCU Microcontroller

Technische Daten

  • Architektur: 32Bit
  • Spannungseingang: 5V bis max. 10V
  • Abmaße: 49mm x 24.5mm x 13 mm (LxBxH)

Benötigter Treiber

Es wird der Treiber CP2102 benötigt. Dieser Treiber kann von der Seite https://www.silabs.com für die Betriebssysteme Microsoft Windows & Linux geladen werden.

Aufbau

NodeMCU Übersicht
NodeMCU Übersicht

Vorwort

Die folgenden Beispiele sollen aufzeigen was alles mit dem NodeMCU möglich ist, ich werde die einfachen Beispiele wie

  • blinken einer LED,
  • Soundausgabe auf einem Buzzer, oder
  • darstellen von Texten auf einer LCD Anzeige

überspringen, denn dieses ist ja auch mit jedem „normalen“ Arduino möglich.

Ich werde stattdessen zeigen wie der NodeMCU als Webserver im Heimnetzwerk betrieben werden kann und was alles so möglich ist.

Was ist ein Webserver?

Ein Webserver oder meist kurz als Server benannt ist gemäß der Übersetzung ein Diener und mehr als das tut er auch nicht. Der Webserver dient zum bereitstellen von Informationen und aktionen d.h. wir können Werte ablesen (z.bsp. auf einer HTML Seite) oder aber auch Aktionen ausführen.

Einrichten der Arduino IDE

Meine erste Wahl zum entwicklen von Sketchen für den Arduino ist die Arduino IDE welche unter http://arduino.cc/software bezogen werden kann. Für den NodeMCU muss noch die passende Bibliothek geladen werden.

Schritt 1 – Einrichten einer zusätzlichen Adresse zum herunterladen von Bibliotheken

Als erstes muss eine zusätzliche Adresse eingerichtet werden, dazu wird über das Menü zu den „Voreinstellungen“ navigiert („Datei“ -> „Voreinstellungen“ oder die Tastenkombination Strg + Komma).

Arduino IDE einbinden einer zusätzlichen Adresse
Arduino IDE einbinden einer zusätzlichen Adresse

Im neu geöffneten Fenster „Voreinstellungen“ wird nun die Adresse http://arduino.esp8266.com/stable/package_esp8266com_index.json in das Feld „zusätzliche Boardverwalter-URLs“ (in der Grafik rot markiert) eingeben.

Arduino IDE, Voreinstellungen Boardverwalter URL hinzufügen
Arduino IDE, Voreinstellungen Boardverwalter URL hinzufügen

Nun kann die Bibliothek für die NodeMCU Hinzugefügt werden.

Schritt 2 – Bibliothek für den NodeMCU installieren

Im ersten Schritt haben wir die vorarbeit geleistet um nun die Bibliothek über das Menü „Werkzeuge“ -> „Board: „xyz“ “ -> „Boardverwalter…“ hinzuzufügen.

NodeMCI Bibliothek einbinden Schritt 1
NodeMCI Bibliothek einbinden Schritt 2

Im nun geöffneten Fenster können Sie über das Eingabefeld „1“ die Liste mit der Eingabe „esp“ einschränken.

NodeMCU installieren der Bibliothek
NodeMCU installieren der Bibliothek

Es wird nun der Eintrag „esp8266 by ESP8266 Community“ gewählt „2“. Nun noch die Schaltfläche „installieren“ betätigen „3“ und nach dem der installationsvorgang beendet wurde. Kann das Fenster über die Schaltfläche „Schließen“ „4“ geschlossen werden.

Evtl. muss eine bestimmte Version gewählt werden. Ich hatte zuert mit der Version 2.3.0 probiert und keinen Erfolgt gehabt. Nach einem wechsel auf 2.2.0 funktionierte das Gerät zuverlässig.

Nun ist die Bibliothek eingebunden es kann fast losgehen. Als erstes muss man das korrekte Board auswählen.
Für das mir vorliegende Modell wähle ich

NodeMCU Daten aus der Arduino IDE
NodeMCU Daten aus der Arduino IDE

Nun kann auch das erste Beispiel hochgeladen werden.
Mit dem Treiber für das Board werden auch diverse Beispiele mitgeliefert.
Eines davon wollen wir als erstes konfigurieren und Hochladen.

Ein einfacher HTTP Webserver

Unter dem Menüpunkt „Datei“ -> „Beispiele“ -> „ESP8266WebServer“ findet man das Beispiel „HelloServer“ welches wir nun laden und für das Netzwerk konfigurieren möchten.

NodeMCU Beispiel HelloServer
NodeMCU Beispiel HelloServer

In dem nun geöffneten Beispiel setzen wir die Werte für die SSID und den WLAN Netzwerkschlüssel

Die Daten für SSID & WPA2 Schlüssel findet Ihr in eurem Router.
In der Fritzbox findet Ihr die SSID unter dem Menüpunkt „WLAN“ -> „Funktnetz“ , den WLAN Netzwerkschlüssel wiederum findet Ihr unter „WLAN“ -> „Sicherheit“.

Nachdem nun die beiden Werte gesetzt sind kann der Sketch hochgeladen werden.

NodeMCU Upload des Beispiels HelloServer
NodeMCU Upload des Beispiels HelloServer

In der Grafik erkennt man die Konfiguration (grüner Kasten), wieviel Speicher der Sketch belegt (pinker Kasten) und den Fortschritt des Uploads (blauer Kasten).

Nachdem der Upload beendet wurde kann man im Seriellen Monitor folgende Ausgabe sehen:

NodeMCU Ausgabe des Beispiels HelloServer im Seriellen Monitor
NodeMCU Ausgabe des Beispiels HelloServer im Seriellen Monitor

Die Sonderzeichen in der ersten Zeile sollen eigentlich die Informationen aus dem Bootloader des NodeMCU anzeigen. Jedoch sendet dieser mit 9600 Baud und wechselt im Sketch auf 11500 Baud somit funktioniert das wegen der Übertragungsgeschwindigkeit nicht korrekt.

Es wird die IP Adresse des NodeMCU sowie der Status ausgegeben. Wenn wir nun die IP-Adresse „192.168.178.50“ im Browser eingeben. Erhalten wir folgende Ausgabe:

NodeMCU Beispiel HelloServer, Ausgabe im Browser
NodeMCU Beispiel HelloServer, Ausgabe im Browser

Damit haben wir einen kleinen Server welchen wir im Heimnetzwerk betreiben können.

Anmelden des NodeMCU am Netzwerk

Da die Anmeldung am Netzwerk relativ lange dauert und das Gerät später zuverlässig über eine bestimmte IP Adresse angesprochen werden soll, habe ich dem NodeMCU in der FritzBox eine feste IP Adresse vergeben.

Jetzt geht’s los

Als nächstes wollen wir dieses Beispiel modifizieren und eine kleine HTML Seite mit Informationen bereitstellen.

HTML Seite darstellen

Um eine HTML Seite darzustellen gibt es mehrere Möglichkeiten.

Die wohl einfachste Möglichkeit ist es, den gesamten HTML Code in eine Variable zu schreiben:

Zusätzlich muss noch der HTML Content Type angepasst werden, denn sonst wird der HTML Text mit den Tags ausgegeben.

NodeMCU - Contenttype "text/plain"
NodeMCU – Contenttype „text/plain“

Nachdem nun auch der Contenttype angepasst wurde wird die Seite korrekt dargestellt.

NodeMCU - Contenttype - "text/html"
NodeMCU – Contenttype – „text/html“

Dieses ist für diesen Einzeiler wohl geeignet, wenn jedoch die Seite komplexer wird stößt man dann schon an die grenze des Lesbaren (Obwohl der NodeMCU genug speicher hat.).
Mit einem Data logging Shield kann man bequem auf eine Datei auf der SD Karte zugreifen und diese auch auslesen. Zum Data logging Shield habe ich bereits ein Tutorial für den Arduino UNO geschrieben, für den NodeMCU ändert sich hier einiges welches in einem separaten Tutorial erläutert wird.

 

ESPlorer

Das Programm „ESPLorer“ dient wie auch die Arduino IDE zum Entwicklen des Microcontrollers NodeMCU. Jedoch wird hier in der Sprache LUA entwickelt. Das Programm selbst ist ein Oracle Java FatClient und benötigt die Version 7 oder höher. Ein Blick auf das Programm lohnt sich und kann kostenfrei auf der Seite https://esp8266.ru/esplorer/ heruntergeladen werden.

Programm "ESPlorer"
Programm „ESPlorer“

Trouleshooting

Neue Firmware aufspielen

Wenn man eine neue Firmware auf den NodeMCU aufspielen möchte so wird dieses mit dem
Tool „NodeMCU FIRMWARE PROGRAMMER“  zuverlässig und schnell erledigt. Dieses Tool kann vom GitHub Repository https://github.com/nodemcu/nodemcu-flasher in den Versionen 32Bit sowie 64Bit heruntergeladen werden.

Flasher Tool für das Gerät "NodeMCU"
Flasher Tool für das Gerät „NodeMCU“

Was nun noch fehlt ist ein Binary welches die Firmware mit den gewünschten Einstellungen enthält.
Das Binary kann man sich je nach Projekt & Gerät selber zusammenstellen, dazu wird auf der Seite https://nodemcu-build.com/ die E-Mail Adresse eingegeben und die Pakete angeklickt, per default sind schon einige wichtige / sinnvolle gesetzt.

Nun noch die Schaltfläche „Start your build“ betätigen und der Buildvorgang mit den gewünschten Einstellungen wird gestartet. Wenn der Buildvorgang beendet ist wird man per E-Mail benachrichtigt und kann das Binary herunterladen.

E-Mail Benachrichtigung über die Fertigstellung des Buildsvogangs.
E-Mail Benachrichtigung über die Fertigstellung des Buildsvogangs.

Langsame Compilierung & Upload

Wenn die Compilierung des Sketches ungewöhnlich lange dauert so kann dieses am aktiven Virenscanner liegen. Eine Lösung wäre dieses auszuschalten („garnicht gut!“) eine deutlich bessere Lösung ist den Pfad zur Arduino IDE als Ausnahme im Virenscanner hinzuzufügen.

 

1 Trackback / Pingback

  1. Arduino: Sensordaten Twittern - Technik Blog

Antworten

Deine E-Mail-Adresse wird nicht veröffentlicht.


*