Der DHT11 ist ein bekanntes und preiswertes Sensor Modul, das häufig in IoT-Projekten verwendet wird. Es dient dazu, Temperatur und Luftfeuchtigkeit zu messen. Mit dem ESP32 oder ESP8266 kann der DHT11 einfach angeschlossen und programmiert werden, um die gemessenen Werte des Sensors zu verarbeiten und zu verarbeitenn. In diesem Blogbeitrag werden wir uns die Funktionsweise des DHT11 und seine Verwendung mit den beiden Mikrocontrollern genauer ansehen.
Was ist der DHT11 Sensor?
Der DHT11 Sensor ist ein hygroskopisches Sensor Modul, das dazu verwendet werden kann, relative Luftfeuchtigkeit und Temperatur zu messen. Es ist sehr kostengünstig und einfach zu bedienen und wird häufig in IoT-Projekten verwendet. Der DHT11 besteht aus einem kleinen Plastikgehäuse, das eine integrierte Sensorplatine enthält. Der Sensor erfasst die Temperatur und Luftfeuchtigkeit in seiner Umgebung und gibt die gemessenen Werte als digitale Signale an einen Mikrocontroller wie den ESP32 oder ESP8266 weiter.
Wie funktioniert der DHT11 Sensor?
Der DHT11 Sensor funktioniert durch die Verwendung eines speziellen Sensortyps, der als „Humiditron“ bezeichnet wird. Dieser Sensortyp besteht aus einem hygroskopischen Material, das die relative Luftfeuchtigkeit misst. Der Sensor enthält auch einen temperaturabhängigen Widerstand, der die Temperatur misst. Beide Sensoren werden dann über eine integrierte Schaltung verarbeitet, die das digitale Signal erzeugt, das an den Mikrocontroller gesendet werden kann.
Wie verbindet man den DHT11 Sensor mit dem ESP32 oder ESP8266?
Der DHT11 Sensor kann einfach mit dem ESP32 oder ESP8266 verbunden werden. Der Sensor verfügt über vier Anschlüsse: Vcc, GND, Data und NC. Der Vcc-Anschluss wird mit der positiven Spannungsversorgung des Mikrocontrollers verbunden, der GND-Anschluss mit der Masse des Mikrocontrollers und der Data-Anschluss mit einem digitalen Eingang des Mikrocontrollers. Der NC-Anschluss ist nicht belegt und kann nicht verwendet werden.
Wie programmiert man den DHT11 Sensor mit dem ESP32 oder ESP8266?
Um den DHT11 Sensor mit dem ESP32 oder ESP8266 zu programmieren, muss man zunächst den Arduino IDE herunterladen und installieren. Danach kann man das DHT11-Library herunterladen und in den Arduino IDE importieren. Sobald die Library importiert ist, muss man den Sensor initialisieren und die Daten abfragen. Dazu muss man die Funktion „dht.read()“ aufrufen, um die gemessenen Werte zu erhalten. Anschließend können die Werte verarbeitet und an ein anderes Gerät übertragen werden.
Welche Anwendungen hat der DHT11 Sensor?
Der DHT11 Sensor ist ein sehr vielseitiges Modul, das in vielen verschiedenen Anwendungen verwendet werden kann. Es kann zum Beispiel verwendet werden, um die Temperatur und Luftfeuchtigkeit in einem Gebäude zu überwachen. Es kann auch zur Kontrolle der Luftqualität in einem Raum verwendet werden. Der Sensor kann auch in Wetterstationen und in anderen IoT-Projekten verwendet werden, bei denen die Messung von Temperatur und Luftfeuchtigkeit erforderlich ist.
Beispiel Auslesen des DHT11 mit ESP32
Dieses Codebeispiel verwendet einen ESP32 und einen DHT11 Sensor, um die Temperatur- und Luftfeuchtigkeitswerte auf einem OLED Display auszugeben. Der Code beginnt mit der Einbindung der benötigten Bibliotheken, beispielsweise für die Verbindung zum DHT11 oder für das OLED Display. Im Setup werden die serielle Kommunikation und das Display initialisiert. Im Loop werden die Werte des DHT11 ausgelesen und anschließend auf dem Display ausgegeben.
#include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include "DHT.h" // Hier kannst du jedes Display einbinden, dass du gerade parat hast // Ich habe hier ein OLED Display von Adafruit verwendet #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels #define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin) // Definiere Variablen für die Verbindung zum DHT11 #define DHTPIN 5 // Pin des DHT11 #define DHTTYPE DHT11 // Typ des DHT11 DHT dht(DHTPIN, DHTTYPE); // Definiere Variablen für das OLED Display Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); void setup() { // Beginne die serielle Kommunikation Serial.begin(9600); while (!Serial); // Initialisiere das OLED Display display.begin(SSD1306_SWITCHCAPVCC, 0x3C); display.clearDisplay(); // Initialisiere den DHT11 dht.begin(); } void loop() { // Hole den Temperaturwert des DHT11 float t = dht.readTemperature(); if (isnan(t)) { Serial.println("Fehler beim Lesen der Temperatur!"); } else { Serial.print("Temperatur: "); Serial.println(t); } // Hole den Feuchtigkeitswert des DHT11 float h = dht.readHumidity(); if (isnan(h)) { Serial.println("Fehler beim Lesen der Feuchtigkeit!"); } else { Serial.print("Feuchtigkeit: "); Serial.println(h); } // Gebe die Sensordaten auf dem Display aus display.clearDisplay(); display.setTextSize(1); display.setTextColor(SSD1306_WHITE); display.setCursor(0,0); display.println("Temperatur: "); display.setCursor(0,8); display.println(t); display.setCursor(0,16); display.println("Humidity: "); display.setCursor(0,24); display.println(h); display.display(); delay(2000); }
Erklärung der verwendeten Includes
In C-Programmierung mit ESP32 werden Includes verwendet, um zusätzliche Funktionen oder Bibliotheken zu deinem Programm hinzuzufügen. Du kannst mit den Include-Anweisungen spezifische Headerdateien, die spezifische Funktionen enthalten, einbinden. Beispiele für Headerdateien, die mit ESP32 verwendet werden können, sind die ESP32-Bibliothek, die WiFi-Bibliothek und die Bluetooth-Bibliothek. Diese Headerdateien enthalten Funktionen, die verwendet werden können, um die Funktionalität des ESP32 zu erweitern.
Include Wire.h Erklärung
Die Codezeile #include <Wire.h> bezieht eine Bibliothek, die für das Arduino-Programmierframework benötigt wird. Die Bibliothek stellt Funktionen zur Verfügung, die für das Zusammenarbeiten mit dem I2C-Protokoll erforderlich sind. Diese Funktionen ermöglichen es dem ESP32, mit anderen Geräten, die dasselbe Protokoll unterstützen, zu kommunizieren. Einige Beispiele für solche Geräte sind Sensoren, Displays und andere Mikrocontroller. Damit der ESP32 I2C-Geräte verwenden kann, muss er die Wire-Bibliothek einbinden.
Include Adafruit_GFX.h Erklärung
Diese Codezeile beinhaltet einen Header für die Adafruit_GFX Bibliothek. Diese Bibliothek bietet eine Reihe von Funktionen für die ESP32-Hardware, insbesondere für das Arbeiten mit Grafiken. Die Funktionen ermöglichen es dem Programmierer, Pixel auf dem Bildschirm des ESP32 zu zeichnen, Text anzuzeigen, Grafiken und Bilder zu laden und zu skalieren und vieles mehr. Diese Funktionen sind von großer Bedeutung, wenn man ein Projekt mit dem ESP32 entwickelt, das Grafiken auf dem Bildschirm anzeigt.
Include Adafruit_SSD1306.h Erklärung
Diese Codezeile ist ein Befehl, der Bibliotheken aus dem Adafruit_SSD1306.h Header-File in das Programm einfügt. Dieser Header-File enthält Deklarationen und Definitionen, die für die Verwendung des OLED-Displays mit dem ESP32 nötig sind. Mit anderen Worten, es stellt sicher, dass die ESP32-Funktionen (z.B. drawPixel(), display() usw.) richtig verwendet werden, wenn man das OLED-Display des ESP32 steuern möchte.
Include DHT.h Erklärung
Diese Codezeile beinhaltet ein Include-Statement, welches die Header-Datei „DHT.h“ einbindet. Diese enthält alle benötigten Funktionen und Deklarationen, um den Sensor DHT11 mit einem ESP32-Mikrocontroller zu verwenden. Mithilfe der Funktionen der Header-Datei kann der ESP32 die Daten des Sensors aufnehmen und verarbeiten. Diese Codezeile ist also essentiell, um den DHT11 Sensor mit dem ESP32 verwenden zu können.
Fazit zum DHT11 Sensor für ESP32 und ESP8266
Der DHT11 Sensor ist ein preisgünstiges, einfach zu bedienendes und vielseitiges Sensor Modul, das häufig in IoT-Projekten verwendet wird. Es kann mit dem ESP32 oder ESP8266 Mikrocontroller einfach angeschlossen und programmiert werden, um die gemessenen Werte zu verarbeiten und zu übertragen. Der Sensor kann in vielen verschiedenen Anwendungen verwendet werden, darunter Gebäudekontrolle, Luftqualitätsüberwachung und Wetterstationen. Der DHT11 ist ein sehr nützliches Sensor Modul, das in vielen verschiedenen Projekten eingesetzt werden kann.