Bauteile · 9 Min. Lesezeit

NodeMCU ESP8266: Pinbelegung, Arduino IDE und WLAN-Webserver

Was ist der NodeMCU ESP8266? D1–D8 und GPIO-Zuordnung, Arduino-IDE-Einrichtung, WLAN, Webserver zum Schalten einer LED, 3,3-V-Grenze und Unterschiede zum ESP32.

Der NodeMCU ist ein günstiges Entwicklungsboard, das den WLAN-fähigen ESP8266-Chip mit USB-Anschluss, 3,3-V-Spannungsregler und steckbrettfreundlichen Pins kombiniert. Du programmierst ihn mit denselben Befehlen, die du aus der Arduino IDE kennst, und er kann sich ganz allein in dein Heimnetz einwählen und eine Webseite bereitstellen, die du auf dem Handy öffnest. Wenn du einen Temperatursensor ins Internet bringen, ein Relais per Handy schalten oder einen LED-Streifen zu Hause steuern möchtest, ist der NodeMCU ESP8266 einer der günstigsten Einstiege.

In dieser Anleitung gehst du Schritt für Schritt durch die technischen Daten des NodeMCU, die verwirrende Zuordnung D1–D8 zu GPIO, die Pins, die den Bootvorgang beeinflussen, die Einrichtung in der Arduino IDE, die WLAN-Verbindung und einen Webserver, der eine LED per Handy schaltet. In den letzten Abschnitten findest du die Unterschiede zwischen ESP8266 und ESP32 sowie Lösungen für die häufigsten Fehler.

NodeMCU V3 ESP8266 Entwicklungsboard
NodeMCU V3 (LoLin): Im metallgeschirmten ESP-12E-Modul stecken der ESP8266-Chip und 4 MB Flash-Speicher; auf dem Board sitzen ein CH340-USB-Seriell-Wandler, ein 3,3-V-Regler sowie die Tasten RST und FLASH.

Was sind ESP8266 und NodeMCU?

Der ESP8266 ist ein 32-Bit-Mikrocontroller mit integriertem WLAN, den Espressif 2014 auf den Markt brachte. Dank seines sehr niedrigen Preises hat er WLAN-Projekte in der Maker-Szene populär gemacht. Der Name NodeMCU bezeichnete ursprünglich eine Lua-basierte Firmware für diesen Chip und das dazugehörige Open-Source-Entwicklungsboard; heute steht er allgemein für Boards mit dem ESP-12E-Modul. In Lua programmierst du ihn aber kaum noch; die meisten nutzen die Arduino IDE oder MicroPython.

EigenschaftWert
ChipESP8266EX, Tensilica L106, 32 Bit
Taktfrequenz80 MHz (auf 160 MHz erhöhbar)
RAMEtwa 80 KB Benutzer-RAM (bei aktivem WLAN bleiben 40–50 KB für deinen Sketch)
Flash-Speicher4 MB (ESP-12E-Modul)
WLAN802.11 b/g/n, nur 2,4 GHz; Station, Access Point oder beides
BluetoothNicht vorhanden
Nutzbare GPIOsEtwa 11 (D0–D8, RX, TX)
Analogeingang1 Kanal (A0), 10 Bit, auf dem Board etwa 0–3,2 V
PWMSoftwarebasiert, standardmäßig 1 kHz, Bereich 0–255
Betriebsspannung3,3 V (Versorgung mit 5 V über USB oder VIN)
StromaufnahmeIm WLAN durchschnittlich 70–80 mA, beim Senden bis 170 mA

Auf dem Markt gibt es zwei verbreitete NodeMCU-Versionen. Die V2 (Amica) ist schmal, nutzt einen CP2102-USB-Seriell-Wandler und lässt auf dem Steckbrett auf jeder Seite eine Reihe Löcher frei. Die V3 (LoLin) ist breiter, nutzt einen CH340G und bedeckt ein normales Steckbrett fast vollständig; mit zwei nebeneinander gestellten Steckbrettern arbeitest du mit der V3 deshalb viel bequemer. Beide Versionen haben dieselbe Pinbelegung und laufen mit demselben Code. Wenn du ein kleineres Board willst: Der Wemos D1 Mini trägt denselben Chip und läuft mit denselben Sketches.

NodeMCU-Pinbelegung: D1–D8 und GPIO-Zuordnung

Das Verwirrendste am NodeMCU ist, dass die auf dem Board aufgedruckten D-Bezeichnungen nicht den echten GPIO-Nummern des Chips entsprechen. Der Pin mit der Aufschrift D1 ist zum Beispiel in Wirklichkeit GPIO 5. Wählst du in der Arduino IDE das NodeMCU-Board aus, kannst du im Code D1 schreiben, und der Compiler macht automatisch 5 daraus; schreibst du aber digitalWrite(1, HIGH), steuerst du GPIO 1, also den TX-Pin der seriellen Schnittstelle. In MicroPython verwendest du immer die GPIO-Nummer.

AufdruckGPIOZusatzfunktionHinweis
D0GPIO 16Aufwachen aus dem Deep SleepKeine Interrupts; für Deep Sleep mit RST verbinden
D1GPIO 5I2C SCLSicher, allgemein nutzbar
D2GPIO 4I2C SDASicher, allgemein nutzbar
D3GPIO 0FLASH-TasteIst er beim Booten LOW, geht das Board in den Programmiermodus
D4GPIO 2Onboard-LED (invertiert), TX1Muss beim Booten HIGH sein
D5GPIO 14SPI SCKSicher, allgemein nutzbar
D6GPIO 12SPI MISOSicher, allgemein nutzbar
D7GPIO 13SPI MOSISicher, allgemein nutzbar
D8GPIO 15SPI CSMuss beim Booten LOW sein; das Board hat einen Pull-down-Widerstand
RXGPIO 3UART RXBei Nutzung des seriellen Monitors frei lassen
TXGPIO 1UART TXSendet beim Start die Bootmeldungen
A0ADC0AnalogeingangNur analoges Lesen, etwa 0–3,2 V
SD2, SD3GPIO 9, 10Mit dem Flash-Speicher verbundenNicht verwenden

Laut dieser Tabelle kannst du in deinen ersten Projekten bedenkenlos die Pins D1, D2, D5, D6 und D7 nutzen. D3, D4 und D8 bestimmen dagegen den Bootmodus: Beim Einschalten prüft der ESP8266 die Pegel von GPIO 0, GPIO 2 und GPIO 15 und erwartet für einen normalen Start GPIO 0 und GPIO 2 auf HIGH sowie GPIO 15 auf LOW. Verändert ein Taster, Relais oder Sensor an diesen Pins den Pegel beim Start, bootet das Board statt deines Programms in den Upload-Modus oder gar nicht. Für Taster kannst du D3 und D4 trotzdem nutzen, weil ein Taster beim Booten nicht gedrückt ist; Module, deren Ausgang auf LOW liegt, gehören aber nicht an diese Pins.

Die Pins des ESP8266 arbeiten mit 3,3 V und sind offiziell nicht 5-V-tolerant; pro Pin solltest du höchstens etwa 12 mA ziehen. Schließe einen Sensor mit 5-V-Ausgang (zum Beispiel den ECHO-Pin des HC-SR04) nicht direkt an, sondern setze einen Spannungsteiler oder Pegelwandler dazwischen. Gib niemals 5 V auf den 3V3-Pin; versorge das Board mit 5 V über USB oder den VIN-Pin.

Auch der Pin A0 ist ein Sonderfall: Der Analogeingang des ESP8266-Chips misst nur 0–1 V, dank des Spannungsteilers aus 220 kΩ und 100 kΩ auf dem NodeMCU-Board kannst du an A0 aber etwa 0–3,2 V anlegen, und analogRead(A0) gibt diesen Bereich als 0–1023 zurück. Da es nur einen Analogeingang gibt, brauchst du für mehrere analoge Sensoren einen I2C-ADC wie den ADS1115. Die Pins D1 und D2 sind der Standard-I2C-Bus; die Grundlagen von I2C findest du in Was ist I2C?.

ESP8266 in der Arduino IDE einrichten

  1. Öffne in der Arduino IDE Datei > Einstellungen und trage https://arduino.esp8266.com/stable/package_esp8266com_index.json im Feld „Zusätzliche Boardverwalter-URLs“ ein.
  2. Öffne Werkzeuge > Board > Boardverwalter, suche nach esp8266 und installiere das Paket von ESP8266 Community.
  3. Wähle im Menü Werkzeuge > Board den Eintrag NodeMCU 1.0 (ESP-12E Module). Für einen Wemos D1 Mini nimmst du stattdessen LOLIN(WEMOS) D1 R2 & mini.
  4. Schließe das Board mit einem Datenkabel an und wähle den Port unter Werkzeuge > Port. Erscheint kein Port, installiere den CH340-Treiber für V3-Boards oder den CP2102-Treiber für V2-Boards.
  5. Lass Upload Speed auf 115200; wenn das Hochladen zuverlässig klappt, kannst du auf 921600 erhöhen und schneller hochladen.

Erster Sketch: die Onboard-LED blinken lassen

Auf dem NodeMCU sitzt auf dem ESP-12E-Modul eine blaue LED an GPIO 2 (D4); V2-Boards (Amica) haben eine zweite LED an D0. Diese LEDs arbeiten mit invertierter Logik: Sie leuchten, wenn der Pin LOW ist, und gehen bei HIGH aus. Im Arduino-Core ist die Konstante LED_BUILTIN bereits als 2 definiert:

Arduino (C++)
1// NodeMCU dahili LED'i: GPIO2 (D4), ters mantık / onboard LED: GPIO2 (D4), inverted logic
2
3void setup() {
4  pinMode(LED_BUILTIN, OUTPUT);
5}
6
7void loop() {
8  digitalWrite(LED_BUILTIN, LOW);    // LOW = yanar / LOW = on
9  delay(500);
10  digitalWrite(LED_BUILTIN, HIGH);   // HIGH = söner / HIGH = off
11  delay(500);
12}
Wirre Zeichen im seriellen Monitor nach dem Hochladen sind normal: Der ESP8266 sendet seine Bootmeldungen mit 74880 Baud. Stellst du den seriellen Monitor auf 74880, kannst du Reset-Ursache und Bootmodus lesen; deine eigenen Meldungen erscheinen in der Geschwindigkeit, die du im Code gewählt hast (zum Beispiel 115200).

Mit dem WLAN verbinden

Die eigentliche Stärke des ESP8266 ist das WLAN. Der folgende Sketch verbindet das Board im Station-Modus mit deinem Heimnetz und gibt die vom Router vergebene IP-Adresse sowie die Signalstärke im seriellen Monitor aus. Klappt die Verbindung nicht innerhalb von 20 Sekunden, hört er auf zu warten und gibt eine Warnung aus. Ersetze Netzwerkname und Passwort durch deine eigenen Daten und öffne den seriellen Monitor mit 115200 Baud:

Arduino (C++)
1#include <ESP8266WiFi.h>
2
3const char* ssid = "AgAdi";          // Wi-Fi adın / your Wi-Fi name
4const char* password = "Sifre123";   // Wi-Fi şifren / your Wi-Fi password
5
6void setup() {
7  Serial.begin(115200);
8  Serial.println();
9  WiFi.mode(WIFI_STA);               // istemci modu / station mode
10  WiFi.begin(ssid, password);
11  Serial.print("Baglaniyor / connecting");
12  unsigned long start = millis();
13  while (WiFi.status() != WL_CONNECTED) {
14    delay(500);
15    Serial.print('.');
16    if (millis() - start > 20000) {  // 20 sn'de bağlanamazsa / give up after 20 s
17      Serial.println("\nBaglanamadi, ag adini ve sifreyi kontrol et / failed, check SSID and password");
18      return;
19    }
20  }
21  Serial.println();
22  Serial.print("IP: ");
23  Serial.println(WiFi.localIP());    // modemin verdiği adres / address given by the router
24  Serial.print("Sinyal / RSSI: ");
25  Serial.print(WiFi.RSSI());         // -50 iyi, -80 zayıf / -50 good, -80 weak
26  Serial.println(" dBm");
27}
28
29void loop() {
30}
RSSI-WertSignalqualitätWas du erwarten kannst
-30 bis -50 dBmSehr gutStabile, schnelle Verbindung
-50 bis -67 dBmGutReicht für Webserver und Sensordaten
-67 bis -80 dBmSchwachGelegentliche Abbrüche, langsamer Seitenaufbau
Unter -80 dBmSehr schwachVerbindung klappt eventuell nicht; Board näher an den Router bringen
Der ESP8266 kann sich nur mit 2,4-GHz-Netzen verbinden. Sendet dein Router das 2,4- und das 5-GHz-Band unter demselben Namen und das Board verbindet sich nicht, hilft meist ein eigener Netzwerkname für das 2,4-GHz-Band. Unternehmensnetze (WPA2-Enterprise) und Gastnetze mit Anmeldeseite im Browser funktionieren ohne zusätzlichen Code nicht.

LED per Handy schalten: ein einfacher Webserver

Jetzt machen wir aus dem NodeMCU einen kleinen Webserver. Schließe an Pin D1 (GPIO 5) eine LED mit 220-Ω-Widerstand an: Das lange Bein der LED geht über den Widerstand an D1, das kurze an GND. Bei einer roten LED ergibt dieser Widerstand (3,3 V − 2 V) / 220 Ω ≈ 6 mA, also deutlich unter der Grenze des Pins; den Wert für deine eigene LED berechnest du mit dem LED-Vorwiderstand-Rechner. Öffne nach dem Hochladen die im seriellen Monitor angezeigte Adresse im Browser eines Handys, das im selben WLAN ist.

Arduino (C++)
1#include <ESP8266WiFi.h>
2#include <ESP8266WebServer.h>
3#include <ESP8266mDNS.h>
4
5const char* ssid = "AgAdi";          // Wi-Fi adın / your Wi-Fi name
6const char* password = "Sifre123";   // Wi-Fi şifren / your Wi-Fi password
7
8const int LED_PIN = D1;              // GPIO5, 220 ohm direnç ile LED / LED through a 220 ohm resistor
9bool ledOn = false;
10
11ESP8266WebServer server(80);
12
13void handleRoot() {
14  String html = "<!DOCTYPE html><html><head><meta charset='utf-8'>"
15                "<meta name='viewport' content='width=device-width,initial-scale=1'>"
16                "<title>NodeMCU</title></head>"
17                "<body style='font-family:sans-serif;text-align:center'>"
18                "<h1>NodeMCU LED</h1><p>LED: <b>";
19  html += ledOn ? "ACIK / ON" : "KAPALI / OFF";
20  html += "</b></p><p>A0: ";
21  html += analogRead(A0);            // 0-1023 arası analog değer / analog value 0-1023
22  html += "</p><p><a href='/on'><button>AC / ON</button></a> "
23          "<a href='/off'><button>KAPAT / OFF</button></a></p></body></html>";
24  server.send(200, "text/html", html);
25}
26
27void setLed(bool on) {
28  ledOn = on;
29  digitalWrite(LED_PIN, on ? HIGH : LOW);
30  server.sendHeader("Location", "/");   // ana sayfaya yönlendir / redirect to the main page
31  server.send(303, "text/plain", "");
32}
33
34void setup() {
35  pinMode(LED_PIN, OUTPUT);
36  digitalWrite(LED_PIN, LOW);
37  Serial.begin(115200);
38  WiFi.mode(WIFI_STA);
39  WiFi.begin(ssid, password);
40  while (WiFi.status() != WL_CONNECTED) {
41    delay(500);
42    Serial.print('.');
43  }
44  Serial.println();
45  Serial.print("Tarayicida ac / open in browser: http://");
46  Serial.println(WiFi.localIP());
47
48  if (MDNS.begin("nodemcu")) {       // http://nodemcu.local adresi / address http://nodemcu.local
49    MDNS.addService("http", "tcp", 80);
50  }
51
52  server.on("/", handleRoot);
53  server.on("/on", []() { setLed(true); });
54  server.on("/off", []() { setLed(false); });
55  server.onNotFound([]() { server.send(404, "text/plain", "Bulunamadi / not found"); });
56  server.begin();
57}
58
59void loop() {
60  server.handleClient();             // gelen istekleri işle / handle incoming requests
61  MDNS.update();
62}
CodeteilWas er macht
ESP8266WebServer server(80)Erstellt einen Server auf Port 80 (HTTP)
server.on("/on", ...)Schaltet die LED ein, wenn der Browser /on aufruft
sendHeader("Location", "/") und send(303)Leitet den Browser nach der Aktion zurück auf die Startseite; ein Neuladen der Seite sendet den Befehl nicht erneut
analogRead(A0)Zeigt den Wert an A0 auf der Seite an; dort kannst du einen LDR oder ein Potentiometer anschließen
MDNS.begin("nodemcu")Macht das Gerät unter dem Namen nodemcu.local statt über die IP erreichbar
server.handleClient()Muss in loop ständig aufgerufen werden; verarbeitet eingehende Anfragen

Wenn sich die Seite nicht öffnet, prüfe, ob dein Handy im selben WLAN wie der NodeMCU ist und nicht im Gastnetz oder in den mobilen Daten. Der Name nodemcu.local funktioniert auf Computern und iPhones meist; manchen Android-Handys fehlt die mDNS-Unterstützung, dort brauchst du die IP-Adresse. Schließt du statt der LED ein Relaismodul an, steuerst du mit demselben Code eine echte Lampe; Details findest du in Was ist ein Relaismodul?.

Access-Point-Modus (AP): Verbindung ohne Router

Gibt es kein WLAN in der Nähe, kann der NodeMCU ein eigenes Netz aufbauen. Im Access-Point-Modus verbindest du dein Handy direkt mit dem Netz NodeMCU-AP, und das Board antwortet meist unter 192.168.4.1. Dieser Modus ist ideal für eine Bewässerung im Garten oder ein Messgerät im Außeneinsatz. Um den Webserver von oben mit diesem Modus zu kombinieren, ersetzt du einfach die WiFi.begin-Zeilen durch die softAP-Zeilen; der Modus WIFI_AP_STA übernimmt beide Rollen gleichzeitig. Das Passwort muss mindestens 8 Zeichen lang sein, sonst wird das Netz nicht erstellt.

Arduino (C++)
1#include <ESP8266WiFi.h>
2
3void setup() {
4  Serial.begin(115200);
5  WiFi.mode(WIFI_AP);                            // kendi ağını kur / create its own network
6  bool ok = WiFi.softAP("NodeMCU-AP", "12345678"); // ad ve en az 8 karakter şifre / name and 8+ char password
7  Serial.println(ok ? "AP hazir / AP ready" : "AP hatasi / AP error");
8  Serial.print("IP: ");
9  Serial.println(WiFi.softAPIP());               // genellikle 192.168.4.1 / usually 192.168.4.1
10}
11
12void loop() {
13  Serial.print("Bagli cihaz / stations: ");
14  Serial.println(WiFi.softAPgetStationNum());
15  delay(3000);
16}

ESP8266 mit MicroPython

Neben der Arduino-Sprache lässt sich der NodeMCU auch mit MicroPython programmieren. Nachdem du die MicroPython-Firmware mit esptool aufgespielt hast, führst du Python-Code direkt aus einem Editor wie Thonny aus. Da der Speicher des ESP8266 begrenzt ist, können große MicroPython-Programme Speicherfehler auslösen; für einfache WLAN- und Sensorprojekte ist es aber sehr praktisch. Beachte, dass du in MicroPython als Pinnummer die GPIO-Nummer schreibst, nicht die D-Bezeichnung:

MicroPython
1import network, time
2from machine import Pin
3
4led = Pin(2, Pin.OUT)                     # D4 = GPIO2, dahili LED / onboard LED
5wlan = network.WLAN(network.STA_IF)
6wlan.active(True)
7wlan.connect("AgAdi", "Sifre123")         # Wi-Fi adı ve şifresi / Wi-Fi name and password
8
9while not wlan.isconnected():
10    time.sleep(0.5)
11print("IP:", wlan.ifconfig()[0])
12
13while True:
14    led.value(not led.value())            # ters mantık: 0 = yanar / inverted: 0 = on
15    time.sleep(0.5)

ESP8266 oder ESP32?

EigenschaftESP8266 (NodeMCU)ESP32 (DevKit)
ProzessorEin Kern, 80/160 MHzZwei Kerne, 240 MHz
RAMEtwa 80 KB Benutzer-RAM520 KB
WLAN802.11 b/g/n, 2,4 GHz802.11 b/g/n, 2,4 GHz
BluetoothNicht vorhandenClassic und BLE
GPIOEtwa 11Etwa 34 (einige nur Eingang)
Analogeingang1 Kanal, 10 Bit18 Kanäle, 12 Bit
PWMSoftwarebasiert16-Kanal-Hardware-PWM (LEDC)
I2C und UARTSoftware-I2C, 1 vollständiger UART plus UART1 nur mit TX2 Hardware-I2C, 3 UARTs
Touch-Pins und DACNicht vorhanden10 Touch-Pins, 2 DACs
PreisGünstigerEtwas teurer

Kurz gesagt: Für Aufgaben wie die Daten eines Sensors ins Internet schicken, ein Relais per Handy schalten oder eine einfache Webseite ausliefern reicht der ESP8266 nach wie vor völlig aus, und er ist günstiger. Für neue Projekte mit Bluetooth, vielen Analogeingängen, Kamera, viel Rechenleistung oder vielen gleichzeitigen Aufgaben ist der ESP32 die bessere Wahl. Code lässt sich leicht übertragen: Oft reicht es, WiFi.h statt ESP8266WiFi.h, WebServer.h statt ESP8266WebServer.h und ESPmDNS.h statt ESP8266mDNS.h zu schreiben, die Zeile MDNS.update() zu löschen (die gibt es beim ESP32 nicht) und statt Board-Bezeichnungen wie D1 die GPIO-Nummern zu verwenden. Mehr dazu in Was ist der ESP32? und Arduino oder ESP32?.

Stromversorgung und Deep Sleep

Der NodeMCU wird mit 5 V über USB oder den VIN-Pin versorgt, und der Regler auf dem Board macht daraus 3,3 V. Die Stromspitze von 170 mA beim Senden über WLAN kann an einem schwachen USB-Port oder über ein dünnes Kabel die Spannung einbrechen lassen und das Board neu starten; nimm deshalb ein gutes Kabel und ein Netzteil mit mindestens 1 A. Bei Batterieprojekten schickt ESP.deepSleep() den Chip mit etwa 20 µA schlafen; damit er nach Ablauf des Timers aufwachen kann, musst du D0 (GPIO 16) mit dem RST-Pin verbinden. Der USB-Seriell-Wandler und der Regler auf dem Board ziehen aber auch im Schlaf weiter Strom, daher liefern für lange Akkulaufzeiten ein nacktes ESP-12-Modul oder stromsparende Boards bessere Ergebnisse. Die Akkulaufzeit schätzt du mit dem Akkulaufzeit-Rechner ab.

Projektideen mit dem NodeMCU

  • WLAN-Thermometer: Zeige Temperatur und Luftfeuchtigkeit eines DHT11 auf einer Seite an, die du auf dem Handy öffnest.
  • Smarte Steckdose: Schalte eine Lampe mit einem Relaismodul über eine Taste auf einer Webseite ein und aus.
  • Gießwarnung für Pflanzen: Schließe einen Bodenfeuchtesensor an A0 an und zeige eine Warnung auf der Seite, wenn die Erde austrocknet.
  • WLAN-LED-Streifen: Wähle Farbe und Effekt eines WS2812B-Streifens per Handy.
  • Internetuhr: Hol dir die Uhrzeit von einem NTP-Server und zeige sie auf einem I2C-LCD an.
  • Bewegungsalarm: Schicke eine Telegram-Nachricht, wenn ein PIR-Sensor eine Bewegung erkennt.

Häufige Fehler und Lösungen

SymptomMögliche UrsacheLösung
Kein Port sichtbarReines Ladekabel oder fehlender TreiberDatenkabel verwenden; CH340- oder CP2102-Treiber installieren
„Failed to connect to ESP8266: Timed out waiting for packet header“Board konnte nicht in den Upload-Modus wechselnFLASH gedrückt halten, RST drücken und loslassen, dann FLASH loslassen und den Upload neu starten
Board startet nicht oder bootet ständig neuSchaltung an D3, D4 oder D8 stört die BootpegelDiese Schaltung auf sichere Pins wie D5, D6 oder D7 legen
Wirre Zeichen im seriellen MonitorFalsche BaudrateDieselbe Geschwindigkeit wie im Code wählen; Bootmeldungen kommen mit 74880 Baud
Keine WLAN-Verbindung5-GHz-Netz, falsches Passwort oder schwaches Signal2,4-GHz-Netz nutzen, Groß- und Kleinschreibung prüfen, RSSI ansehen
LED bleibt aus und der serielle Monitor verstummtIm Code steht 1 statt D1 (GPIO 1 = TX)Im Code D1 oder GPIO 5 verwenden
Fehler „Soft WDT reset“Eine Schleife in loop() läuft zu langeIn lange Schleifen yield() oder delay(1) einbauen; beides gibt den WLAN-Hintergrundaufgaben und dem Watchdog Zeit
Hast du beim Hochladen Verbindungsprobleme, trenne das Board zuerst vom Computer, entferne alles, was an D3, D4, D8 und RX hängt, und versuche es erneut. Ein Modul an diesen Pins kann verhindern, dass das Board beim Start in den Upload-Modus wechselt. Außerdem verringert der direkte USB-Port des Computers statt eines USB-Hubs Abbrüche durch plötzliche Stromspitzen.

Der NodeMCU ESP8266 ist der günstigste Weg, dein Arduino-Wissen in die drahtlose Welt mitzunehmen: Mit wenigen Zeilen Code verbindet er sich mit deinem Heimnetz und ermöglicht Geräte, die du per Handy steuerst. In der BlueGrays-App findest du drahtlose Projekte wie WLAN-Verbindung, Webserver, WebSocket, NTP-Uhr und mDNS auf dem ESP32 mit Schritt-für-Schritt-Schaltplänen und Code, und dieselbe Logik kannst du ganz einfach auf deinen NodeMCU übertragen.

Häufige Fragen

Sind NodeMCU und ESP8266 dasselbe?

ESP8266 ist der Name des WLAN-Chips von Espressif. Der NodeMCU ist ein Entwicklungsboard, das das ESP-12E-Modul mit diesem Chip um USB-Anschluss, Spannungsregler und steckbrettfreundliche Pins ergänzt. Kurz: Jeder NodeMCU ist ein ESP8266-Board, aber nicht jedes ESP8266-Board ist ein NodeMCU; auch der ESP-01 und der Wemos D1 Mini nutzen denselben Chip.

Funktioniert der NodeMCU mit 5 V?

Das Board lässt sich mit 5 V über USB oder den VIN-Pin versorgen, der Regler macht daraus 3,3 V. Die GPIO-Pins arbeiten jedoch mit 3,3 V und sind offiziell nicht 5-V-tolerant. 5-V-Signale solltest du über einen Spannungsteiler oder Pegelwandler anschließen.

Welcher GPIO ist D1 beim NodeMCU?

D1 ist GPIO 5 und der Standard-SCL-Pin für I2C. Weitere häufige Zuordnungen sind D2 = GPIO 4, D4 = GPIO 2, D5 = GPIO 14, D6 = GPIO 12, D7 = GPIO 13 und D8 = GPIO 15. In der Arduino IDE kannst du direkt D1 in den Code schreiben, in MicroPython musst du die GPIO-Nummer verwenden.

Kann sich der ESP8266 mit 5-GHz-WLAN verbinden?

Nein, der ESP8266 unterstützt nur 802.11-b/g/n-Netze im 2,4-GHz-Band. Achte darauf, dass das 2,4-GHz-Band deines Routers aktiv ist; teilen sich beide Bänder einen Namen, löst ein eigener Netzwerkname für 2,4 GHz Verbindungsprobleme oft.

Was ist der Unterschied zwischen NodeMCU V2 und V3?

Die V2 (Amica) ist schmaler, nutzt einen CP2102-USB-Seriell-Wandler und lässt auf dem Steckbrett beidseitig Löcher frei. Die V3 (LoLin) ist breiter und nutzt einen CH340G. Pins, Prozessor und Code sind identisch; Unterschiede gibt es nur bei der Größe und beim USB-Treiber, den du installieren musst.

Hat der ESP8266 Bluetooth?

Nein, der ESP8266 hat keine Bluetooth-Hardware, er unterstützt nur WLAN. Für Projekte mit Bluetooth oder BLE nimmst du einen ESP32 oder ergänzt dein Board um ein separates Bluetooth-Modul wie den HC-05.

Alle Projekte ansehen
LED Blinken mit ESP32
#103Anfänger

LED Blinken mit ESP32

Lehrt die grundlegende Verwendung von GPIO-Ausgängen mit ESP32. Wir erreichen einen Blinkeffekt, indem wir eine LED über einen digitalen Pin ein- und ausschalten. ESP32-Version des klassischen Blink-Projekts auf Arduino UNO; Pin-Map und Syntax bleiben gleich, der Unterschied liegt nur in den Pin-Nummern.

4.7(36)
92
ESP32 Interne LED Blinken
#106Anfänger

ESP32 Interne LED Blinken

Die eingebaute blaue LED auf dem ESP32 DevKit V1 zum Blinken bringen. Keine externen Komponenten erforderlich! Das erste Projekt, das Sie ausprobieren sollten, wenn Sie einen ESP32 kaufen. GPIO 2 ist mit der internen LED verbunden.

4.8(29)
53
ESP32-WLAN-STA-Verbindung (mit LCD-Display)
#127Fortgeschritten
Premium

ESP32-WLAN-STA-Verbindung (mit LCD-Display)

In diesem Projekt verbinden wir den ESP32 im Station-Modus (STA) sicher und fehlertolerant mit dem heimischen WLAN. Wir lagern SSID und Passwort in eine separate `secrets.h`-Datei aus, um Leaks zu Git zu verhindern, richten einen Auto-Reconnect-Mechanismus ein und zeigen RSSI-Signalpegel und IP-Adresse auf einem I2C-LCD-Display an. Die interne LED dient als Statusanzeige. Ein Verbindungsmanager auf Produktionsniveau.

4.4(21)
33
ESP32 Async-Webserver (mit IP-Anzeige auf dem LCD)
#129Fortgeschritten
Premium

ESP32 Async-Webserver (mit IP-Anzeige auf dem LCD)

In diesem Projekt verwandeln wir den ESP32 in einen **asynchronen Webserver**, den Sie über Ihr Smartphone oder Ihren Computer im selben WLAN-Netzwerk steuern können. Dank der ESPAsyncWebServer-Bibliothek kann der Server mehrere Anfragen gleichzeitig bearbeiten (im Gegensatz zum klassischen `WebServer.h`, der bei einer einzigen Anfrage blockiert). Sie können über den Browser die IP-Adresse des ESP32 öffnen und durch Drücken der ON/OFF-Schaltflächen (Routen `/on` und `/off`) die an GPIO 5 anges

4.8(16)
26
ESP32-WebSocket-Zähler (2 Tasten + LCD + Web-Echtzeit)
#130Fortgeschritten
Premium

ESP32-WebSocket-Zähler (2 Tasten + LCD + Web-Echtzeit)

In diesem Projekt ändern zwei am ESP32 angeschlossene Taster (GPIO 5 zählt hoch, GPIO 4 zählt herunter) einen Zähler. Der Wert wird sofort auf einem 16x2-I2C-LCD und über die WebSocket-Unterstützung von ESPAsyncWebServer in allen verbundenen Browsern aktualisiert, ohne die Seite neu zu laden. Statt HTTP-Polling wird eine einzige dauerhafte Verbindung genutzt; der ESP32 sendet den neuen Wert mit ws.textAll() an alle.

4.5(14)
23
ESP32 mDNS: Zugriff auf das Gerät über „bluegrays-esp.local“ (mit LCD-Display)
#131Fortgeschritten
Premium

ESP32 mDNS: Zugriff auf das Gerät über „bluegrays-esp.local“ (mit LCD-Display)

In diesem Projekt fügen wir dem ESP32 einen mDNS-Dienst (Multicast DNS) hinzu, um den Zugriff nicht über eine IP-Adresse, sondern über einen lesbaren Hostnamen wie `bluegrays-esp.local` zu ermöglichen. Selbst wenn sich die vom DHCP zugewiesene IP-Adresse ändert, können Sie das Gerät immer unter demselben Namen erreichen. Indem wir zusätzlich einen kleinen Webserver darauf betreiben, senden wir über den Browser unter der Adresse `http://bluegrays-esp.local/` Befehle zur LED-Steuerung. Auf dem I2C

4.8(14)
23
ESP32: Echtzeit aus dem Internet per NTP
#128Fortgeschritten
Premium

ESP32: Echtzeit aus dem Internet per NTP

Der ESP32 verbindet sich mit dem WLAN und ruft die Echtzeit mit Millisekunden-Genauigkeit von NTP-Servern (Network Time Protocol) ab. Dank `configTzTime()` wird die türkische Zeitzone (TRT, UTC+3) automatisch angewendet, und der DST-Wechsel wird per POSIX-TZ-String verwaltet. Die Uhrzeit wird auf dem Serial Monitor und einem optionalen I2C-LCD ausgegeben. Beim Start einmal synchronisiert, danach zählt der interne RTC weiter.

4.5(13)
21
ESP32-OTA-Update – Drahtlose Firmware-Installation (mit LCD-Display)
#132Fortgeschritten
Premium

ESP32-OTA-Update – Drahtlose Firmware-Installation (mit LCD-Display)

In diesem Projekt lernst du, wie du auf dem ESP32 ohne USB-Kabel über WLAN neue Firmware installieren kannst. Mit der `ArduinoOTA`-Bibliothek wird der ESP32 im Netzwerk sichtbar und wird im Reiter „Network port“ der Arduino-IDE automatisch als `bluegrays-ota` aufgelistet. Die erste Installation erfolgt über USB, alle nachfolgenden Updates erfolgen drahtlos – eine äußerst wichtige Funktion für Feldgeräte. Auf dem I2C-LCD-Display werden der WLAN-Status, die IP-Adresse, der Hostname, der Fortschrit

4.7(13)
21

Lerne die Pinbelegung des günstigen und beliebten NodeMCU ESP8266 kennen, richte ihn in der Arduino IDE ein, verbinde ihn mit dem WLAN und baue Schritt für Schritt einen Webserver, der eine LED per Handy schaltet; dazu die Unterschiede zum ESP32.