Projekt I01 - Temperatur & Luftfeuchtigkeit messen
Beginner-Projekte B01-B08 abgeschlossen, Grundlagen der seriellen Kommunikation bekannt
Was du brauchst
Digitaler Sensor fuer Temperatur und relative Luftfeuchtigkeit. Liefert kalibrierte Werte ueber ein eigenes Protokoll.
Messbereich: -40 bis +80 Grad C, 0-100% RH
Genauigkeit: +/- 0.5 Grad C, +/- 2-5% RH
Hinweis: In Wokwi hat der DHT22 nur 3 Pins (VCC, SDA, GND)
Der DHT22 ist genauer (+/- 0.5 Grad C statt +/- 2 Grad C) und hat einen groesseren Messbereich als der guenstigere DHT11.
Der DHT22 benoetigt mindestens 2 Sekunden zwischen Messungen fuer stabile Werte.
Arduino DHT22
β β
βββββ START βββββ (18ms LOW)
β β
ββββ RESPONSE βββ (80us LOW + 80us HIGH)
β β
ββββ 40 BITS ββββ (Bit 0: 26-28us HIGH)
β β (Bit 1: 70us HIGH)
β β
βΌ βΌ
Genauigkeit: +/- 0.5 Grad C
Aufloesung: 0.1 Grad C / 0.1% RH
Verbindungen zum Arduino
Arduino Uno DHT22
βββββββββββββ βββββββββ
β β β βββββ β
β 5V βββββββΌβββββββββΌββ€VCCβ β
β β β βββββ β
β Pin 7 ββββΌβββββββββΌββ€SDAβ β
β β β βββββ β
β GND ββββββΌβββββββββΌββ€GNDβ β
β β β βββββ β
βββββββββββββ βββββββββ
Bei echter Hardware: 10k Ohm zwischen SDA und VCC. In Wokwi nicht noetig - der interne Pull-Up reicht.
// Schritt 1: DHT-Library einbinden
#include <DHT.h>
// Sensor-Konfiguration
#define DHT_PIN 7 // Datenpin
#define DHT_TYPE DHT22 // Sensortyp
// DHT-Objekt erstellen
DHT dht(DHT_PIN, DHT_TYPE);
void setup() {
// Wird gleich gefuellt...
}
void loop() {
// Wird gleich gefuellt...
}#include <DHT.h> - Bindet die Bibliothek ein#define - Konstanten fuer Pin und TypDHT dht(...) - Erstellt das Sensor-ObjektDie DHT-Library kuemmert sich um das komplizierte Timing-Protokoll. Du kannst einfach readTemperature() aufrufen!
// Schritt 2: Setup-Funktion
#include <DHT.h>
#define DHT_PIN 7
#define DHT_TYPE DHT22
DHT dht(DHT_PIN, DHT_TYPE);
void setup() {
Serial.begin(9600); // Serielle Kommunikation starten
dht.begin(); // DHT-Sensor initialisieren
Serial.println("DHT22 Temperatur & Feuchtigkeit");
Serial.println("------------------------------");
}
void loop() {
// Kommt im naechsten Schritt...
}Serial.begin(9600) startet die serielle Ausgabe. dht.begin() initialisiert den Sensor und konfiguriert den Pin.
void loop() {
// DHT22 braucht min. 2 Sekunden zwischen Messungen
delay(2000);
// Messwerte lesen (float = Dezimalzahl)
float temp = dht.readTemperature();
float hum = dht.readHumidity();
// Pruefen ob Messung erfolgreich
if (isnan(temp) || isnan(hum)) {
Serial.println("Fehler beim Lesen des DHT22!");
return; // Loop abbrechen, neu starten
}
// Ausgabe der Messwerte
Serial.print("Temperatur: ");
Serial.print(temp, 1); // 1 Dezimalstelle
Serial.print(" C | Feuchtigkeit: ");
Serial.print(hum, 1);
Serial.println(" %");
}Speichern Dezimalzahlen wie 23.5 oder 65.8. Serial.print(temp, 1) gibt eine Nachkommastelle aus.
"Is Not A Number" - prueft ob die Messung fehlgeschlagen ist. Wichtig fuer robuste Programme!
Simulation in Wokwi
Probiere diese Aufgaben aus
LED an Pin 8 leuchtet bei Temperatur ueber 30 Grad C
3 LEDs: Blau (kalt <18 Grad), Gruen (optimal 18-25 Grad), Rot (warm >25 Grad)
Speichere die hoechste und niedrigste gemessene Temperatur
Buzzer piept wenn Luftfeuchtigkeit unter 30% oder ueber 70% faellt
Du hast deinen ersten Umweltsensor programmiert
Externe Bibliotheken eingebunden
Dezimalzahlen verarbeitet
isnan() fuer robuste Programme
I02: Ultraschall-Entfernungsmesser - Distanzen messen mit dem HC-SR04