Arduino - Temperatur- und Feuchtigkeitssensor

In diesem Tutorial werden wir lernen:

Wenn Sie nur die Temperatur messen möchten, empfehlen wir Ihnen stattdessen den wasserdichten DS18B20-Temperatursensor. Es ist ein preiswerter und praktischer Sensor. Sie können ihn in heißem oder kaltem Wasser verwenden.

Erforderliche Hardware

1×Arduino Uno R3
1×USB 2.0 Kabel Typ A/B (für USB-A PC)
1×USB 2.0 Kabel Typ C/B (für USB-C PC)
1×DHT11 Temperatur-Feuchtigkeitssensor-Modul
1×DHT22 Temperatur-Feuchtigkeitssensor-Modul
1×10 kΩ Resistor
1×Breadboard
1×Verbindungskabel
1×(Empfohlen) Schraubklemmenblock-Shield für Arduino Uno
1×(Empfohlen) Breadboard-Shield für Arduino Uno
1×(Empfohlen) Gehäuse für Arduino Uno
1×(Empfohlen) Prototyping-Grundplatte & Breadboard-Kit für Arduino Uno

Oder Sie können die folgenden Kits kaufen:

1×DIYables STEM V3 Starter-Kit (Arduino enthalten)
1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über DHT11- und DHT22-Temperatur- und Feuchtigkeitssensoren

Die Gemeinsamkeiten zwischen DHT11 und DHT22

  • Die Pinbelegung ist dieselbe
  • Die Verkabelung zum Arduino ist dieselbe
  • Die Programmierung (mit einer Bibliothek) ist ähnlich (nur eine Codezeile ist unterschiedlich)

Die Unterschiede zwischen DHT11 und DHT22

DHT11 DHT22
Price ultra low cost low cost
Temperature Range 0°C to 50°C -40°C to 80°C
Temperature Accuracy ± 2°C ± 0.5°C
Humidity Range 20% to 80% 0% to 100%
Humidity Accuracy 5% ± 2 to 5%
Reading Rate 1Hz (once every second) 0.5Hz (once every 2 seconds)
Body size 15.5mm x 12mm x 5.5mm 15.1mm x 25mm x 7.7mm
Operating Voltage3 to 5V 3 to 5V

Wie Sie sehen können, ist der DHT22 etwas genauer, hat einen größeren Messbereich und ist teurer als der DHT11.

Pinbelegung

DHT11- und DHT22-Sensoren in ihrer ursprünglichen Form haben vier Pins:

  • GND-Pin: muss mit GND (0V) verbunden werden
  • VCC-Pin: muss mit VCC (5V oder 3.3V) verbunden werden
  • DATA-Pin: der Pin wird zur Kommunikation zwischen dem Sensor und dem Arduino verwendet
  • NC-Pin: nicht verbunden, wir können diesen Pin ignorieren
DHT11- und DHT22-Temperatur- und Feuchtigkeitssensoren Pinbelegung

Einige Hersteller bieten DHT11- und DHT22-Sensoren in Modulform mit drei Anschlüssen an: GND, VCC und DATA-Anschlüsse (oder alternativ: -, + und OUT-Anschlüsse).

※ Notiz:

In Modulform kann die Reihenfolge der Pins des Moduls je nach Hersteller variieren. VERWENDEN Sie IMMER die auf dem Modul aufgedruckten Beschriftungen. Schauen Sie genau hin!

Pinbelegung des DHT11- und DHT22-Temperatur- und Feuchtigkeitsmoduls

Verdrahtungsdiagramm

Die Verdrahtung zum Arduino ist für beide Sensoren gleich. In der ursprünglichen Form ist ein Widerstand von 5 kΩ bis 10 kΩ erforderlich, um die Datenleitung auf High-Pegel zu halten und die Kommunikation zwischen dem Sensor und dem Arduino zu ermöglichen.

Arduino - DHT11 Sensorverkabelung

Arduino DHT11 Temperatur- und Feuchtigkeitssensor Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Arduino - DHT22-Sensorverkabelung

Arduino DHT22 Temperatur- und Feuchtigkeitssensor Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Arduino - DHT11-Modulverkabelung

Die meisten DHT22-Sensormodule haben einen eingebauten Widerstand, sodass Sie ihn nicht hinzufügen müssen. Das spart uns Verdrahtungs- oder Lötarbeiten.

Arduino DHT11 Temperatur- und Feuchtigkeitsmodul Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Arduino - DHT22 Modulverkabelung

Die meisten DHT22-Sensor-Module haben einen eingebauten Widerstand, sodass Sie ihn nicht hinzufügen müssen. Das erspart uns einige Verkabelungs- oder Lötarbeiten.

Arduino DHT22 Temperatur- und Feuchtigkeitsmodul Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Wie man für den DHTxx-Temperatursensor programmiert

Die Programmierung beider Sensoren ist ähnlich. Es gibt nur eine Codezeile, die anders ist.

  • Die Bibliothek einbinden:
#include "DHT.h"
  • Definieren Sie den Arduino-Pin, der mit dem DHT-Sensor verbunden ist:
#define DHTPIN 2
  • Definieren Sie den Sensortyp: DHT11 oder DHT22 (Dies ist die andere Codezeile)
#define DHTTYPE DHT11

oder

#define DHTTYPE DHT22
  • DHT-Objekt deklarieren
DHT dht(DHTPIN, DHTTYPE);
  • Sensor initialisieren:
dht.begin();
  • Luftfeuchtigkeit auslesen:
float humi = dht.readHumidity();
  • Temperatur in Celsius lesen:
float tempC = dht.readTemperature();
  • Temperatur in Fahrenheit lesen:
float tempF = dht.readTemperature(true);

Arduino-Code - DHT11

/* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino/arduino-temperature-humidity-sensor */ #include "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); dht.begin(); // initialize the sensor } void loop() { // wait a few seconds between measurements. delay(2000); // read humidity float humi = dht.readHumidity(); // read temperature as Celsius float tempC = dht.readTemperature(); // read temperature as Fahrenheit float tempF = dht.readTemperature(true); // check if any reads failed if (isnan(humi) || isnan(tempC) || isnan(tempF)) { Serial.println("Failed to read from DHT sensor!"); } else { Serial.print("Humidity: "); Serial.print(humi); Serial.print("%"); Serial.print(" | "); Serial.print("Temperature: "); Serial.print(tempC); Serial.print("°C ~ "); Serial.print(tempF); Serial.println("°F"); } }

Arduino-Code - DHT22

/* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino/arduino-temperature-humidity-sensor */ #include "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); dht.begin(); // initialize the sensor } void loop() { // wait a few seconds between measurements. delay(2000); // read humidity float humi = dht.readHumidity(); // read temperature as Celsius float tempC = dht.readTemperature(); // read temperature as Fahrenheit float tempF = dht.readTemperature(true); // check if any reads failed if (isnan(humi) || isnan(tempC) || isnan(tempF)) { Serial.println("Failed to read from DHT sensor!"); } else { Serial.print("Humidity: "); Serial.print(humi); Serial.print("%"); Serial.print(" | "); Serial.print("Temperature: "); Serial.print(tempC); Serial.print("°C ~ "); Serial.print(tempF); Serial.println("°F"); } }

Wenn Sie die beiden oben gezeigten Codes vergleichen, stellen Sie fest, dass eine Zeile unterschiedlich ist (Zeile 11).

Schnelle Schritte

  • Schließe Arduino über ein USB-Kabel an den PC an.
  • Öffne die Arduino IDE, wähle das richtige Board und den richtigen Port aus.
  • Gehe zum Bibliotheken-Symbol in der linken Leiste der Arduino IDE.
  • Suche „DHT“, und finde dann die DHT-Sensor-Bibliothek von Adafruit.
  • Klicke auf die Installieren-Schaltfläche, um die Bibliothek zu installieren.
Arduino DHT-Sensor-Bibliothek
  • Sie werden aufgefordert, weitere Bibliotheksabhängigkeiten zu installieren
  • Klicken Sie auf die Schaltfläche Alle installieren, um alle Bibliotheksabhängigkeiten zu installieren.
Arduino Adafruit vereinheitlichte Sensorbibliothek
  • Kopieren Sie den obenstehenden Code, der zu dem von Ihnen verwendeten Sensor gehört, und öffnen Sie ihn mit der Arduino-IDE.
  • Klicken Sie auf die Schaltfläche Hochladen in der Arduino IDE, um den Code auf den Arduino hochzuladen.
  • Verändern Sie die Umgebung rund um den Sensor, damit sie wärmer oder kälter wird.
  • Sehen Sie das Ergebnis im Serial Monitor.
COM6
Send
Humidity: 31.00% | Temperature: 27.00°C ~ 80.60°F Humidity: 31.00% | Temperature: 27.00°C ~ 80.60°F Humidity: 31.00% | Temperature: 27.00°C ~ 80.60°F Humidity: 31.00% | Temperature: 27.00°C ~ 80.60°F Humidity: 31.00% | Temperature: 28.00°C ~ 82.40°F Humidity: 31.00% | Temperature: 28.00°C ~ 82.40°F Humidity: 31.00% | Temperature: 28.00°C ~ 82.40°F Humidity: 31.00% | Temperature: 28.00°C ~ 82.40°F Humidity: 32.00% | Temperature: 28.00°C ~ 82.40°F Humidity: 31.00% | Temperature: 29.00°C ~ 84.20°F Humidity: 32.00% | Temperature: 29.00°C ~ 84.20°F Humidity: 31.00% | Temperature: 29.00°C ~ 84.20°F
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!