Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Über mich
  • Deutsch
  • English
Menu

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

Posted on 28. Dezember 20172. Mai 2023 by Stefan Draeger

Der Mikrocontroller 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
    • Benötigter Treiber
  • Aufbau
    • Vorwort
    • Was ist ein Webserver?
    • Einrichten der Arduino IDE
      • Schritt 1 – Einrichten einer zusätzlichen Adresse zum herunterladen von Bibliotheken
      • Schritt 2 – Bibliothek für den NodeMCU installieren
    • Ein einfacher HTTP Webserver
    • Anmelden des NodeMCU am Netzwerk
  • Jetzt geht’s los
    • HTML Seite darstellen
  • ESPlorer
  • Trouleshooting
    • Neue Firmware aufspielen
    • Langsame Compilierung & Upload

Technische Daten

  • Architektur: 32Bit
  • Spannungseingang: 5V bis max. 10V
  • Abmaße: 49 mm x 24.5 mm 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 Entwickeln 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

const char* ssid = "xxxx";
const char* password = "xxxx";

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 Fritz!Box 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:

String htmlCode = "<html><body><h1>Hello World!</h1></body></html>";

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 Mikrocontrollers 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.

3 thoughts on “NodeMCU – „Einer für (fast) Alles!“”

  1. Paul Preuß sagt:
    30. Juli 2018 um 11:33 Uhr

    Hallo Herr Draeger.
    Danke für Ihre Hilfe / für den letzten Hinweis!!!

    Ich bin ein Newbie, was Arduino IDE und auch NodeMCU angeht.
    Wenn ich mein Sketch aud das NodeMCU lade (was Fehler loss von statten geht,
    meldet sich das NodeMCU immer mit der der selben Bezeichnung (z.B. ESP_0516DF ). Wie ändere ich diese Bezeichnung, so das sie meinen Gegebenheiten entspricht??? Können Sie mir damit weiterhelfen???
    Freundlichst
    Paul Preuß

    Antworten
    1. Stefan Draeger sagt:
      31. Juli 2018 um 15:25 Uhr

      Hi,

      wenn du den Hostname des NodeMCU meinst diesen kannst du mit der Funktion Wifi.hostname(„HierStehtDerNeueName“); ändern.
      Ein Beispielsketch habe ich unter https://pastebin.com/ybrxhNpm abgelegt.

      Gruß,

      Stefan Draeger

      Antworten
  2. Michael Stellpflug sagt:
    16. Dezember 2020 um 17:42 Uhr

    Hallo Herr Dräger,

    Ich vesuche das D1 WiFi Board zum Laufen zu bringen. Der Sketch lief auf dem Arduino Uno fehlerfrei. Nun habe ich versucht alles so zu installieren, wie Sie es beschrieben haben, aber scheitere an dieser Anweisung:

    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.

    Eine solche Bibliothek wird mir nicht angezeigt. Deshalb komme ich nicht weiter. Habe schon versucht, die Platine und Wemos D1 R1 anzumelden. Es gab keine Fehlermeldung, aber der Sketch lief nicht.

    Gruß, M. Stellpflug (Physiklehrer)

    Antworten

Schreibe einen Kommentar Antworten abbrechen

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

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}