Skip to content

Technik Blog

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

Menu
  • Smarthome
  • Gartenautomation
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Deutsch
  • English
Menu

ESP32 mit DHT11 Sensor, kapazitiven Bodenfeuchtesensor & LiPo Batterie

Posted on 2. März 202210. März 2024 by Stefan Draeger

In diesem Beitrag möchte ich dir zeigen, wie du den ESP32 Baustein mit DHT11 Sensor, kapazitiven Bodenfeuchtesensor & LiPo Batterie programmierst und betreibst.

ESP32 mit DHT11, kapazitiven Bodenfeuchtesensor, LiPo Batterie
ESP32 mit DHT11, kapazitiven Bodenfeuchtesensor, LiPo Batterie

Im letzten Beitrag Arduino Projekt – Bodenfeuchtesensor & OLED Display habe ich dir bereits gezeigt, wie du die Daten von einem solchen Bodenfeuchtesensor auf einem OLED Display anzeigen lassen kannst. Mit dem verbauten ESP32 Chip hat man nun die Möglichkeit die Sensordaten auch an ein IoT Dienst wie ThingsSpeak zu senden und dort grafisch anzeigen zu lassen.

ESP32 mit DHT11, kapazitiven Bodenfeuchtesensor, LiPo Batterie

  • Bezug des ESP32 Bausteins
  • Mikrocontroller ESP32
  • Aufbau des ESP32 mit DHT11 & Bodenfeuchtesensor
  • Einsetzen der LiPo Batterie
  • Programmieren in der Arduino IDE
    • Installieren der DHT11 Bibliothek
    • Einrichten des ESP32 Chips in der Arduino IDE
  • Besonderheiten beim Upload eines Sketches
    • Auslesen des DHT11 Sensors
  • Ermitteln der Bodenfeuchtigkeit mit dem Bodenfeuchtesensor
  • Wie gehts es nun weiter?

Bezug des ESP32 Bausteins

Den mir vorliegenden Baustein habe ich über wish.com für knapp 12 € inkl. Versandkosten bestellt. Du bekommst diesen aber auch auf ebay.de jedoch zu einem Preis von knapp 16 € inkl. Versandkosten*.

Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!

Mikrocontroller ESP32

Auf dem Baustein ist der Mikrocontroller vom Typ ESP32 verbaut, dieser hat folgende technische Daten:

KernXtensa Dual-Core 32-bit LX6
max. Taktfrequenz240 MHz
SchnittstellenCAN, I²C, I²C, SDIO, SPI, UART
Speicher448 KB ROM,
520 KB SRAM
16 KB SRAM in RTC
WiFi802.11b/g/n
BluetoothDual-Mode Bluetooth, BLE
Auszug aus den technischen Daten des ESP32-D0WDQ6

In der Arduino IDE wird dieses Modul als ESP32-D0WDQ6 erkannt.

esptool.py v3.1
Serial port COM28
Connecting.....
Chip is ESP32-D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 80:7d:3a:a3:d7:78

Aufbau des ESP32 mit DHT11 & Bodenfeuchtesensor

Der Mikrocontroller ist bestückt mit:

  • einem einfachen DHT11 Sensor,
  • einen kapazitiven Bodenfeuchtesensor, sowie auf der Rückseite
  • ein Batteriefach für eine 18560 LiPo Batterie
Sensor – DatenpinPin am ESP32
DHT11GPIO22
kapazitiver BodenfeuchtesensorGPIO32
Anschluss der Sensoren am ESP32 Baustein

Zusätzlich ist auf der Platine ein Schalter angebracht, welcher mit „ON/OFF“ beschriftet ist.

Ein/Aus Schalter für den ESP32 Baustein
Ein/Aus Schalter für den ESP32 Baustein

Einsetzen der LiPo Batterie

Auf der Rückseite des Bausteins ist eine Halterung für eine LiPo Batterie vom Typ 18650 angebracht, wobei die Pole jeweils mit + & – markiert sind.

ESP32 Baustein & LiPo Batterie 18650
ESP32 Baustein & LiPo Batterie 18650

Beim Einsetzen der LiPo Batterie muss man auf die korrekte Polung achten, ansonsten kann diese oder der Mikrocontroller einen Schaden nehmen!

Programmieren in der Arduino IDE

Da keine gesonderte Verkabelung notwendig ist, können wir fast direkt mit der Programmierung beginnen. Wir benötigen lediglich den Boardtreiber für den ESP32 und eine zusätzliche Bibliothek für den DHT11 Sensor.

Wie du den Boardtreiber für den ESP32 installierst, habe ich dir bereits im Beitrag NodeMCU – „Einer für (fast) Alles!“ erläutert.

Den DHT11 Sensor habe ich bereits in diverse Beiträge eingesetzt und dir auch gezeigt, wie man die Sensordaten an ThingSpeak sendet.

  • Iot Service ThingSpeak, einrichten und betreiben
  • ESP8266 DIY IoT Wetterstation mit OLED Display und DHT11 Sensor
  • WEMOS D1 – WLAN Thermometer mit DHT11 Sensor

Installieren der DHT11 Bibliothek

Im Bibliotheksverwalter der Arduino IDE findest du diverse Bibliotheken für den DHT11 Sensor, jedoch habe ich sehr gute Erfahrung mit der „DHT sensor library by Adafruit“ gemacht.

Bibliotheksverwalter - installieren der Adafruit DHT11 Bibliothek
Bibliotheksverwalter – installieren der Adafruit DHT11 Bibliothek

Einrichten des ESP32 Chips in der Arduino IDE

Der ESP32 wird wie folgt in der Arduino IDE konfiguriert:

Konfiguration des ESP32 in der Arduino IDE
Konfiguration des ESP32 in der Arduino IDE

Einzig der COM-Port kann bei dir variieren.

Besonderheiten beim Upload eines Sketches

Wenn du einen Sketch / ein Programm auf den Mikrocontroller hochladen möchtest, dann musst du, wenn die Zeile nachfolgende Zeile ausgegeben wird, die Taste „Boot“ betätigen.

Der Sketch verwendet 238129 Bytes (18%) des Programmspeicherplatzes. Das Maximum sind 1310720 Bytes.
Globale Variablen verwenden 12168 Bytes (3%) des dynamischen Speichers, 315512 Bytes für lokale Variablen verbleiben. Das Maximum sind 327680 Bytes.
esptool.py v3.1
Serial port COM28
Connecting.......

Auslesen des DHT11 Sensors

Der Vollständigkeit halber möchte ich dir zunächst zeigen, wie du die Sensordaten des DHT11 Sensors ausliest.

//DHT Bibliothek
#include "DHT.h"
//DHT Sensor am digitalen Pin 22
#define DHTPIN 22
//Sensortyp DHT11
#define DHTTYPE DHT11
//Instanziieren eines Objektes
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  Serial.println(F("DHTxx test!"));
  //beginn der Kommunikation mit dem DHT11 Sensors
  dht.begin();
}

void loop() {
  //eine kleine Pause von 2 Sekunden,
  //der DHT11 Sensor liefert alle 2,5 Sekunden ein neuen Wert
  delay(2000);
  //lesen der rel. Luftfeuchtigkeit
  float h = dht.readHumidity();
  //lesen der Temperatur in Grad Celsius
  float t = dht.readTemperature();
  //lesen der Temperatur in Grad Fahrenheit
  float f = dht.readTemperature(true);

  //Wenn einer der gelesenen Werte fehlerhaft ist,
  //gebe eine Fehlermeldung aus.
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
  }

  //Berechnen des HeatIndex
  //Der Hitzeindex (HI) ist eine in Einheiten der Temperatur angegebene Größe
  //zur Beschreibung der gefühlten Temperatur auf Basis der gemessenen
  //Lufttemperatur sowie vor allem der relativen Luftfeuchtigkeit.
  //siehe https://de.wikipedia.org/wiki/Hitzeindex#:~:text=Der%20Hitzeindex%20(HI)%20ist%20eine,vor%20allem%20der%20relativen%20Luftfeuchtigkeit.
  float hif = dht.computeHeatIndex(f, h);
  float hic = dht.computeHeatIndex(t, h, false);

  //Ausgeben der Daten auf der seriellen Schnittstelle
  Serial.print(F("Humidity: "));
  Serial.print(h);
  Serial.print(F("%  Temperature: "));
  Serial.print(t);
  Serial.print(F("°C "));
  Serial.print(f);
  Serial.print(F("°F  Heat index: "));
  Serial.print(hic);
  Serial.print(F("°C "));
  Serial.print(hif);
  Serial.println(F("°F"));
}

Auf der seriellen Schnittstelle werden die Daten dann Zeilenweise wie folgt ausgegeben.

Ausgabe der DHT11 Sensordaten
Ausgabe der DHT11 Sensordaten

Ermitteln der Bodenfeuchtigkeit mit dem Bodenfeuchtesensor

Wie du einen kapazitiven Bodenfeuchtesensor ausliest, habe ich dir auch bereits in den nachfolgenden Beiträgen gezeigt:

  • Arduino Lektion 28: Bodenfeuchtesensor
  • Arduino Projekt – Bodenfeuchtesensor & OLED Display

Hier möchte ich dir lediglich kurz der Vollständigkeitshalber ein Sketch anbieten, welches den Wert auf der seriellen Schnittstelle ausgibt.

//analoger kapazitiver Bodenfeuchtesensor am Pin 32
#define SENSOR_PIN 32

void setup() {
  //beginn der seriellen Kommunikation mit 9600 baud
  Serial.begin(9600);
}
void loop() {
  //auslesen der Sensorwertes
  int sensorValue = analogRead(SENSOR_PIN);
  //ausgeben des Sensorwertes auf der seriellen Schnittstelle
  Serial.println(sensorValue);
  //eine kleine Pause von 1,5 Sekunden
  delay(1500);
}

Die Sensorwerte werden im oben gezeigten Sketch einfach auf der seriellen Schnittstelle ausgegeben.

Ausgabe der Sensorwerte vom Bodenfeuchtesensor am ESP32
Ausgabe der Sensorwerte vom Bodenfeuchtesensor am ESP32

Wie gehts es nun weiter?

Der ESP32 verfügt über eine WiFi sowie Bluetooth Schnittstelle, diese beiden können wir nutzen, um die Sensordaten zum Beispiel an ein Handy oder einen IoT Service wie ThingSpeak zu senden.

Im nächsten Beitrag möchte ich dir daher zeigen, wie du diesen Baustein autark über eine LiPo Batterie und die Sensordaten erstmal über eine Webseite bereitstellen kannst.

1 thought on “ESP32 mit DHT11 Sensor, kapazitiven Bodenfeuchtesensor & LiPo Batterie”

  1. Siegfried sagt:
    29. Mai 2023 um 17:17 Uhr

    Hallo,

    ich betreibe den „Stab“ nun in der 2.Saison auf der Terasse in einem größeren Topf. Er wurde von mir justiert und nun erhalte ich zuverlässig jede Stunde die Feuchte des Bodens. Dann habe ich ein Relais angeschlossen und bei Unterschreitung eines Wertes schaltet das Relais die Pumpe.
    Die SV wird mit einem kleinen Faltsolarmodul unterstützt. Ich musste im Sommer nur 2 mal den Akku nachladen und nur den AKKU der Wasserpumpe/Relais regelmäßig laden.

    Fazit nach der ersten Saison: trotz einer Schutzschicht mit farblosem Lack, hatte ich Korrosion an den unteren Bauteilen und am NE555.
    Vielen Dank für die Anregungen

    Siegfried

    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}