Bemerkung
Hallo, willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Vertiefen Sie sich mit anderen Enthusiasten in die Welt von Raspberry Pi, Arduino und ESP32.
Warum beitreten?
Expertenunterstützung: Lösen Sie Probleme nach dem Verkauf und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.
Lernen & Teilen: Austausch von Tipps und Anleitungen zur Verbesserung Ihrer Fähigkeiten.
Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.
Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
Festliche Aktionen und Giveaways: Nehmen Sie an Giveaways und Feiertagsaktionen teil.
👉 Sind Sie bereit, mit uns zu erkunden und zu kreieren? Klicken Sie auf [hier] und treten Sie heute bei!
6.2 Temperatur und Luftfeuchtigkeit mit dem DHT11 messen
In dieser Lektion lernen wir, wie man den DHT11-Temperatur- und Luftfeuchtigkeitssensor mit dem Raspberry Pi Pico 2 verwendet. Der DHT11 ist ein kostengünstiger digitaler Sensor, der die Umgebungstemperatur und Luftfeuchtigkeit misst und kalibrierte digitale Werte liefert.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Bauteile.
Ein komplettes Kit ist besonders praktisch, hier ist der Link:
Name |
ENTHALTENE TEILE IM KIT |
LINK |
|---|---|---|
Newton Lab Kit |
450+ |
Alternativ können die Komponenten auch einzeln über die untenstehenden Links erworben werden.
SN |
KOMPONENTE |
MENGE |
LINK |
|---|---|---|---|
1 |
1 |
||
2 |
Micro-USB-Kabel |
1 |
|
3 |
1 |
||
4 |
Mehrere |
||
5 |
1 |
Funktionsweise des DHT11-Sensors
Der DHT11 verwendet einen kapazitiven Feuchtigkeitssensor und einen Thermistor, um die Umgebungsluft zu messen. Er gibt ein digitales Signal über den Datenpin aus und ist relativ einfach zu verwenden, erfordert jedoch eine präzise Timing-Steuerung.
Temperaturbereich: 0–50 °C mit einer Genauigkeit von ±2 °C
Luftfeuchtigkeitsbereich: 20–80 % relative Luftfeuchtigkeit (RH) mit einer Genauigkeit von ±5 %
Abtastrate: 1 Hz (eine Messung pro Sekunde)
Schaltplan

Verdrahtungsdiagramm

Code schreiben
Wir schreiben ein Programm, das Temperatur- und Luftfeuchtigkeitsdaten vom DHT11-Sensor liest und die Werte im Seriellen Monitor anzeigt.
Bemerkung
Sie können die Datei
6.2_dht11.inoaus dem Verzeichnisnewton-lab-kit/arduino/6.2_dht11öffnen.Oder diesen Code in die Arduino IDE kopieren.
Wählen Sie das Raspberry Pi Pico 2 Board und den richtigen Port aus und klicken Sie auf „Hochladen“.
Die
DHT sensor librarywird hier verwendet und kann über den Bibliotheksverwalter installiert werden.
#include <DHT.h>
// Define the connection pins
#define DHTPIN 16 // GPIO 16 -> Data pin of DHT11
#define DHTTYPE DHT11 // Define the sensor type
// Create a DHT object
DHT dht(DHTPIN, DHTTYPE);
unsigned long previousMillis = 0; // Stores the last time the display was updated
const long interval = 2000; // Interval at which to read sensor (milliseconds)
void setup() {
// Initialize serial communication at 115200 baud
Serial.begin(115200);
Serial.println(F("DHT11 Sensor Test!"));
// Initialize the DHT sensor
dht.begin();
}
void loop() {
unsigned long currentMillis = millis();
// Update the sensor reading every 'interval' milliseconds
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
// Read humidity and temperature
float humidity = dht.readHumidity();
float temperatureC = dht.readTemperature();
float temperatureF = dht.readTemperature(true);
// Check if any reads failed
if (isnan(humidity) || isnan(temperatureC) || isnan(temperatureF)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
// Calculate heat index
float heatIndexC = dht.computeHeatIndex(temperatureC, humidity, false);
float heatIndexF = dht.computeHeatIndex(temperatureF, humidity);
// Print the results to the Serial Monitor
Serial.print(F("Humidity: "));
Serial.print(humidity);
Serial.print(F("% Temperature: "));
Serial.print(temperatureC);
Serial.print(F("°C "));
Serial.print(temperatureF);
Serial.print(F("°F Heat index: "));
Serial.print(heatIndexC);
Serial.print(F("°C "));
Serial.print(heatIndexF);
Serial.println(F("°F"));
}
}
Nach dem Hochladen des Codes sollten die Temperatur- und Luftfeuchtigkeitswerte alle zwei Sekunden im Seriellen Monitor angezeigt werden.
DHT11 Sensor Test!
Humidity: 45.00% Temperature: 25.00°C 77.00°F Heat index: 25.00°C 77.00°F
Humidity: 46.00% Temperature: 25.50°C 78.00°F Heat index: 25.50°C 78.00°F
Humidity: 47.00% Temperature: 26.00°C 79.00°F Heat index: 26.00°C 79.00°F
Luftfeuchtigkeit: Setzen Sie den Sensor unterschiedlichen Luftfeuchtigkeitsniveaus aus, um Veränderungen in den Messwerten zu beobachten.
Temperatur: Variieren Sie die Temperatur in der Umgebung des Sensors, um die Messungen zu überprüfen.
Verständnis des Codes
Einbinden von Bibliotheken und Definieren von Konstanten:
DHT.h: Beinhaltet die DHT-Sensorbibliothek zur einfachen Nutzung des Sensors.DHTPIN: Definiert den GPIO-Pin, der mit dem Daten-Pin des DHT11 verbunden ist.DHTTYPE: Legt den verwendeten Sensortyp fest (in diesem Fall DHT11).
#include <DHT.h> #define DHTPIN 16 // GPIO 16 -> Daten-Pin des DHT11 #define DHTTYPE DHT11 // Sensortyp definieren
Erstellen des
DHT-Objekts:Initialisiert ein
DHT-Objekt mit dem definierten Daten-Pin und Sensortyp.DHT dht(DHTPIN, DHTTYPE);
Setup-Funktion:
Serielle Kommunikation: Startet die serielle Kommunikation zur Debugging- und Datenanzeige.
DHT-Sensorinitialisierung: Bereitet den DHT11-Sensor auf die Datenerfassung vor.
void setup() { // Initialize serial communication at 115200 baud Serial.begin(115200); Serial.println(F("DHT11 Sensor Test!")); // Initialize the DHT sensor dht.begin(); }
Loop-Funktion:
Zeitsteuerung mit
millis():Verwendet eine nicht blockierende Zeitsteuerung, um den Sensor alle 2 Sekunden (Intervall = 2000 Millisekunden) auszulesen.
if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; ... }
Sensorwerte auslesen:
dht.readHumidity(): Liest die aktuelle Luftfeuchtigkeit aus.dht.readTemperature(): Liest die aktuelle Temperatur in Grad Celsius aus.dht.readTemperature(true): Liest die aktuelle Temperatur in Grad Fahrenheit aus.
Fehlerbehandlung:
Prüft, ob einer der Messwerte fehlschlägt (gibt NaN zurück) und gibt ggf. eine Fehlermeldung aus.
if (isnan(humidity) || isnan(temperatureC) || isnan(temperatureF)) { Serial.println(F("Failed to read from DHT sensor!")); return; }
Berechnung des Hitzeindex:
dht.computeHeatIndex(temperatureC, humidity, false): Berechnet den Hitzeindex in Grad Celsius.dht.computeHeatIndex(temperatureF, humidity): Berechnet den Hitzeindex in Grad Fahrenheit.
Ausgabe der Messwerte:
Gibt Luftfeuchtigkeit, Temperatur (Celsius und Fahrenheit) sowie den Hitzeindex im Seriellen Monitor aus.
Serial.print(F("Humidity: ")); Serial.print(humidity); Serial.print(F("% Temperature: ")); Serial.print(temperatureC); Serial.print(F("°C ")); Serial.print(temperatureF); Serial.print(F("°F Heat index: ")); Serial.print(heatIndexC); Serial.print(F("°C ")); Serial.print(heatIndexF); Serial.println(F("°F"));
Fehlersuche
Keine Messwerte angezeigt:
Überprüfen Sie alle Kabelverbindungen.
Stellen Sie sicher, dass der DHT11-Sensor mit Strom versorgt wird.
Prüfen Sie, ob die richtigen GPIO-Pins im Code definiert sind.
Falsche Messwerte:
Stellen Sie sicher, dass der DHT11-Sensor nicht beschädigt ist.
Prüfen Sie im Datenblatt des Sensors die korrekten Timing- und Signal-Anforderungen.
Sensorstörungen:
Platzieren Sie den Sensor nicht in der Nähe von elektronischen Geräten, die Störungen verursachen könnten.
Achten Sie darauf, dass keine Hindernisse die Messung des Sensors beeinträchtigen.
Weitere Experimente
Integration mit Displays:
Schließen Sie ein LCD- oder OLED-Display an, um die Temperatur- und Luftfeuchtigkeitswerte anzuzeigen, ohne den Seriellen Monitor zu verwenden.
Warnsysteme erstellen:
Implementieren Sie einen Summer oder ein Benachrichtigungssystem, das aktiviert wird, wenn Temperatur oder Luftfeuchtigkeit bestimmte Schwellenwerte überschreiten.
Kombination mit anderen Sensoren:
Kombinieren Sie den DHT11 mit Bewegungsmeldern, Lichtsensoren oder anderen Umwelt-Sensoren, um ein umfassendes Überwachungssystem zu erstellen.
Bau einer Wetterstation:
Erweitern Sie das Projekt durch zusätzliche Sensoren wie barometrische Drucksensoren, Regenmesser und Windgeschwindigkeitssensoren, um eine vollständige Wetterstation zu realisieren.
Fazit
In dieser Lektion haben Sie gelernt, wie Sie den DHT11-Temperatur- und Luftfeuchtigkeitssensor mit dem Raspberry Pi Pico verwenden, um Umgebungswerte zu messen und anzuzeigen. Durch die Nutzung der DHT-Bibliothek können Umweltdaten leicht in Ihre Projekte integriert werden. Eine optionale LED-Anzeige kann als visuelles Feedback dienen, um die Interaktivität Ihres Systems zu verbessern.