In diesem Blogpost erfährst du, wie du mit dem NodeMCU ESP8266 (Lolin V3) verschiedene Sensoren anschließt und deren Werte auf einem OLED-Display ausgibst. Konkret verbinden wir folgende Module:

  1. DHT22: Misst Temperatur und Luftfeuchtigkeit.
  2. Bodenfeuchtesensor: Misst die Bodenfeuchte analog.
  3. 0.96" OLED-Display: Zeigt die Sensordaten an.

Lass uns loslegen! 🚀

1. Komponentenliste

Für dieses Projekt benötigst du folgende Bauteile:

  • NodeMCU ESP8266 (Lolin V3)
  • DHT22-Sensor (oder DHT11)
  • Kapazitiver Bodenfeuchtesensor
  • 0.96" OLED-Display mit I2C-Schnittstelle
  • Jumper-Kabel
  • Breadboard (optional)

2. Pinbelegung

Hier ist die detaillierte Pinzuweisung für alle Module am NodeMCU:

OLED Display (I2C)

OLED PinNodeMCU PinGPIO
GNDGNDMasse
VDD3V33.3V
SCKD1GPIO 5 (SCL)
SCAD2GPIO 4 (SDA)

DHT22 Sensor

DHT22 PinNodeMCU PinGPIO
VCC3V33.3V
GNDGNDMasse
DataD5GPIO 14

Bodenfeuchtesensor

Sensor PinNodeMCU PinGPIO
VCC3V33.3V
GNDGNDMasse
AOUTA0Analog-Pin (ADC0)

3. Vorbereitung der Arduino IDE

Bibliotheken installieren

Um die Sensoren und das Display zu verwenden, benötigst du folgende Bibliotheken:

  1. Adafruit SSD1306 – für das OLED-Display
  2. Adafruit GFX – Grafische Unterstützung für das Display
  3. DHT Sensor Library – für den DHT22-Sensor
  4. Adafruit Unified Sensor – Abhängigkeit für die DHT-Bibliothek

👉 Installiere die Bibliotheken in der Arduino IDE unter Sketch > Bibliothek einbinden > Bibliotheken verwalten.

4. Der Code

Hier ist der vollständige Code für das Projekt. Der Code liest die Werte der Sensoren aus und zeigt sie auf dem OLED-Display an.

#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
#include <DHT.h>

// OLED-Display-Einstellungen
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET    -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

// DHT22-Einstellungen
#define DHTPIN D5       // Pin D5 (GPIO 14)
#define DHTTYPE DHT22   // Sensor-Typ DHT22
DHT dht(DHTPIN, DHTTYPE);

// Bodenfeuchtesensor
#define SOIL_MOISTURE_PIN A0  // Analog-Pin A0 (ADC0)

void setup() {
  Serial.begin(115200);

  // OLED initialisieren
  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("OLED Display nicht gefunden!"));
    for (;;);
  }
  display.clearDisplay();

  // DHT22 initialisieren
  dht.begin();

  display.setTextSize(1);
  display.setTextColor(SSD1306_WHITE);
  display.setCursor(0, 0);
  display.println("Starte Sensoren...");
  display.display();
  delay(2000);
}

void loop() {
  // Sensorwerte lesen
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();
  int soilValue = analogRead(SOIL_MOISTURE_PIN);
  float soilPercent = map(soilValue, 1024, 300, 0, 100);

  // Debugging über Serial Monitor
  Serial.print("Temp: "); Serial.print(temperature);
  Serial.print("°C, LuftFeuchte: "); Serial.print(humidity);
  Serial.print("%, Bodenfeuchte: "); Serial.print(soilPercent);
  Serial.println("%");

  // OLED-Display aktualisieren
  display.clearDisplay();
  display.setCursor(0, 0);

  display.println("DHT22 Sensor:");
  display.print("Temp: "); display.print(temperature); display.println(" C");
  display.print("LuftF: "); display.print(humidity); display.println(" %");

  display.println();
  display.println("Bodenfeuchte:");
  display.print(soilPercent); display.println(" %");

  display.display();
  
  delay(2000); // Alle 2 Sekunden aktualisieren
}

5. Erklärung des Codes

  • DHT22: Misst Temperatur und Luftfeuchtigkeit mit der DHT-Bibliothek.
  • Bodenfeuchtesensor:
    • Der analoge Wert wird mit analogRead() ausgelesen.
    • Mit der map()-Funktion wird der Sensorwert von 300 (nass) bis 1024 (trocken) in einen Prozentwert (0–100%) skaliert.
  • OLED-Display: Über die Adafruit SSD1306-Bibliothek wird der Displayinhalt aktualisiert.

6. Fazit

Mit dem NodeMCU ESP8266 und wenigen Sensoren kannst du eine einfache Umweltdatenstation bauen, die Temperatur, Luftfeuchtigkeit und Bodenfeuchte misst. Das OLED-Display ermöglicht eine visuelle Ausgabe der Werte, während der Serial Monitor zur Überwachung beim Debuggen dient.

Falls du Erweiterungen wie eine Cloud-Anbindung oder Benachrichtigungen hinzufügen möchtest, stehen dir mit dem ESP8266 viele Möglichkeiten offen!