Der DHT11 ist ein Luftfeuchte- und Temperatursensor. Die Luftfeuchtigkeit wird im Bereich von 20 - 90 % ±5 % gemessen, die Temperatur von 0 - 50 °C ±2 °C. Der Sensor benötigt folgende Anschlüsse.
Die Datenübertragung erfolgt im One-wire-mode über eine Signalleitung. Übertragen werden 1 Byte für die Ganzzahl, 1 Byte für die Nachkommastelle und eine Prüfsumme zur Fehlerkorrektur.
Öffne Arduino IDE und installiere die Bibliothek für den DHT11-Sensor.
von Adafruit | DHT sensor library |
Die Abbildung zeigt die Ausgabe des seriellen Monitors, mit dessen Hilfe können Daten vom ESP am eigenen Rechner angezeigt werden.
Der Quellcode zeigt die prinzipielle Vorgehensweise zum Auslesen eines Sensors und Anzeigen der Werte mit dem seriellen Monitor.
#include "DHT.h" //DHT-Bibo einbinden
#define DHTPIN 02 //Pinnummer für Sensor
#define DHTTYPE DHT11 //DHT-Typ
DHT dht(DHTPIN,DHTTYPE); //neues Sensor Objekt erzeugen
void setup() {
Serial.begin(9600); //initialisieren des seriellen Monitors
dht.begin(); //DHT initialisieren
}
void loop() {
float hum = dht.readHumidity(); //Sensor auslesen
float cTemp = dht.readTemperature();
Serial.println(""); //Sensorwerte ausgeben
Serial.print("Temperatur: ");
Serial.print(cTemp,1);
Serial.println(" °C");
Serial.print("Luftfeuchte: ");
Serial.print(hum,1);
Serial.println(" %");
delay(2000);
}
Zu Beginn wird die DHT11-Bibliothek eingebunden und zwei Makros geschrieben. Makros werden für übersichtliches Programmieren eingesetzt. So kann man Quelltext oder auch ganze Befehle durch aussagekräftige Namen ersetzen. Mit Hilfe der Makros wird dann ein neues Sensor Objekt erzeugt.
In der Funktion setup(){...}
wird der serielle Monitor und der DHT initialisiert.
In der Funktion loop(){...}
wird alle 2 s die Luftfeuchte und Temperatur ausgelesen und auf eine Variable geschrieben. Die Werte werden dann am seriellen Monitor ausgegeben.
DHT11 Luftfeuchte und Temperaturmessung
printf(...)
für die Ausgabe der Sensordaten in einer einzigen Codezeile.Im zweiten Schritt soll der Temperatur- und Luftdrucksensor BMP280 ausgelesen werden.
Mit dieser Vorgehensweise lassen sich weitere Sensoren einfach integrieren.
Serial.begin(9600); |
Initialisierungen des seriellen Monitors |
dht.begin(); |
Initialisierungen des DHT11-Sensors |
Serial.print(cTemp,1); |
Ausgabe eines Variablenwerts am seriellen Monitor. |
float hum = dht.readHumidity(); |
auslesen der Luftfeuchtigkeit |
float cTemp = dht.readTemperature(); |
Auslesen der Temperatur |