ESP Mikrocontroller 8266 mit DHT11 Luftfeuchte Sensor

ESP | Sensordaten auslesen



Ideen: R. Rahm, Friedrich-Ebert-Schule Esslingen, 2021

Luftfeuchtesensor DHT11

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.

  • 3.3 V
  • GND
  • Data

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.

DHT 11 pinout

DHT sensor library DHT11 Bibliothek einbinden

Bibliotheksverwalter DHT sensor library

Öffne Arduino IDE und installiere die Bibliothek für den DHT11-Sensor.

Werkzeuge>Bibliotheken verwalten...>
von Adafruit DHT sensor library

display humidity and temperatur Sensorwerte auslesen und anzeigen



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.

Ausgabe serieller 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.

Arbeitsauftrag 1 reading sensor data

DHT11 Luftfeuchte und Temperaturmessung

  1. Binde die korrekte DHT sensor library von Adafruit ein.
  2. Gib den Code im geöffneten Sketch ein und speicher die Datei unter einem aussagekräftigen Namen.
  3. Übertrage das Programm auf den ESP und öffne den seriellen Monitor. Teste und verifiziere die Ausgabe.
  4. Erkläre wieso die blaue LED am ESP alle 2 s blinkt.
  5. Ergänze das Programm so, dass die Temperatur auch in Kelvin und Grad Fahrenheit angezeigt wird.
  6. Nutze die Funktion printf(...) für die Ausgabe der Sensordaten in einer einzigen Codezeile.

Im zweiten Schritt soll der Temperatur- und Luftdrucksensor BMP280 ausgelesen werden.

  1. Der BMP280 wird über den I2C-Bus angesteuert. Finde die korrekte Pinbelegung heraus und schließe den Sensor korrekt am ESP an.
  2. Installiere die BME280 library von Adafruit.
  3. Finde den Code zum Ansteuern des Senors heraus und zeige die Werte im seriellen Monitor an.

Mit dieser Vorgehensweise lassen sich weitere Sensoren einfach integrieren.


Wichtige Funktionen zum Ansteuern von Sensoren



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