DHT21 (AM2301) und DHT22 (AM3202) sind digitale Temperatur- und Luftfeuchtesensoren mit einer Auflösung von 8bit. Sie haben eine Messgenauigkeit der Temperatur von ±0.5°C im Bereich von -40°C bis +80°C und rund 3% zwischen 0-99,9% RH für die Messung der Luftfeuchte. Im Vergleich zum DHT22 besitzt der DHT21 Kabel statt Pins zum Anschluss. Dafür ist der DHT21 wesentlich größer als der DHT22.
Zur Information: Der DHT11 erfasst nur positive Temperaturen von 0-50°C und Luftfeuchte 20-80%.
Hinweis: DHT Sensoren sind empfindlich gegen Nässe bzw. kondensierende Feuchte. Defekte durch Korrosion führen zu Luftfeuchtewerten von 1.00% oder 99.9%. Der Messwert Temperatur ist vielen Fällen noch verwendbar.
Bezug
Bitte unbedingt darauf achten, das die DHT22/AM2302 die unten gezeigten Gehäuse haben und Original DHT22/AM2302 sind mit Herstellerkennung „ASAIR“ bzw. „AOSONG“ sowie Seriennummer versehen.
Die beiden Sensoren DHT21 und DHT22 sind kompatibel zu allen beelogger Varianten! Hinweis: |
Bild | Bezugsquelle | Preis ab | Suchbegriffe* | Bemerkungen |
eBay | 2,95€ | DHT22 AM2302 | wesentlich kleiner als DHT21 | |
eBay | 2,70€ | DHT21 AM2301 | Kabel statt Pins zum Anschluss |
Beschaltung
Die Beschaltung des DHT21 oder DHT22 ist sehr einfach. Versorgt wird der Sensor an ‚VDD‘ mit einer Spannung von 3,3V bis 5V. Weil die minimale Betriebsspannung 3,3V beträgt, sind Anschlussleitungen bei Verwendung mit dem beelogger-SMD kurz zu halten. Nach Datenblatt sind bei 3,3V Betriebsspannung maximal 100cm vorzusehen, längere Leitungen führen zu Messfehlern. ‚Data‘ des ersten Sensors verbindet man mit Pin 5 des Arduinos. Beim zweiten Sensor wird ‚Data‘ mit Pin 6 des Arduinos verbunden. Es fehlt noch ein Widerstand von 4,7K Ohm von ‚VDD‘ zu ‚Data‘ und die Verbindung von ‚GND‘ mit Masse. Werden zwei Sensoren angeschlossen, beispielsweise für die Stocktemperatur und die Außentemperatur, ist für jeden Data-Pin ein separater Widerstand notwendig.
Libraries
beelogger-DHT basierned auf:
<DHT.h> – https://github.com/RobTillaart/Arduino/tree/master/libraries/DHTlib – Version 1.3.8,
enthalten im beelogger-Library-Paket
Test-Programmcode
Der Programmcode nutzt den in der Library integrieren Check der Sensorantwort. Meldet dieser Check ein Problem, beispielsweise durch ein loses Kabel, bekommt die entsprechende Variable für Temperatur oder Luftfeuchte einen vordefinierten Wert. Mit diesem Test-Programmcode wird zusätzlich eine Fehlermeldung über den seriellen Monitor ausgegeben, um das Problem genauer zu definieren.
Werden die Messwerte später an einen Webserver übertragen, erkennt das Webserver-Skript zum Speichern der Datensätze den vordefinierten Wert und es wird für diesen Sensor kein Messwert gespeichert. Dadurch wird die grafische Darstellung, beispielsweise durch Arbeiten am Sensor, nicht beeinträchtigt.
/* (C) 2022 R.Schick - beelogger.de This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ // beelogger.de - Arduino Datenlogger für Imker // Erläuterungen dieses Programmcodes unter http://beelogger.de // Version 2022 //---------------------------------------------------------------- // Konfiguration //---------------------------------------------------------------- #define Anzahl_Sensoren_DHT 1 // Mögliche Anzahl: '0','1','2' --- Nr 1,2 --- (Temperatur + Luftfeuchte) uint8_t DHTTYPE[2] = {22, 22}; // DHT-Typ 21 oder 22 (nur Adafruit DHT-Lib) #define DHT_LIB_Typ 1 // 0 = Rob Tillart dhtlib, 1 = Adafruit DHTlib nur für ATmega #ifdef ARDUINO_ARCH_AVR #define DHT_Nr_1_Pin 5 #define DHT_Nr_2_Pin 6 #else // for STM32Fxyz #define DHT_Nr_1_Pin PB12 #define DHT_Nr_2_Pin PB13 #endif //---------------------------------------------------------------- // Ende Konfiguration //---------------------------------------------------------------- #ifdef ARDUINO_ARCH_AVR // ATMega #include "LowPower.h" #if (DHT_LIB_Typ == 0) #include <dht.h> #else #include <DHT.h> //Adafruit DHT-Lib #endif #else // STM32 #include <dhtnew.h> #if (DHT_LIB_Typ == 1) #undef DHT_LIB_Typ #define DHT_LIB_Typ 0 // don't change #endif #endif byte DHT_Sensor_Pin[2] = {DHT_Nr_1_Pin, DHT_Nr_2_Pin}; const float No_Val = 999.99; float Temperatur = No_Val; float Luftfeuchte = No_Val; // Für beelogger-Solar: Aktivierung der Stromversorgung für Sensoren, Module und DS3231 #ifdef ARDUINO_ARCH_AVR // ATMega #define Power_Pin 4 #else #define Power_Pin PB5 // for STM32Fxyz #endif void setup() { Serial.begin(9600); while (!Serial) {}; Serial.println("DHT 21/22 AM2301/AM2302 Test 17.05.2022"); Serial.println(" "); #ifdef ARDUINO_ARCH_AVR // ATMega #if (DHT_LIB_Typ == 1) // Adafruit DHTlib Serial.println("Adafruit DHTLib "); #else Serial.println("Rob Tillart dhtlib "); #endif Serial.println(" "); #endif digitalWrite(Power_Pin, HIGH); pinMode(Power_Pin, OUTPUT); delay(1000); } void loop() { Serial.println("please download the complete sketch "); }
Ausgabe des seriellen Monitors (9600 baud):
DHT Test Sensor 1 31.00 'C 44.30 % Sensor 2 30.80 'C 45.90 %
Testprogrammcode herunterladen
Der Programmcode zum Messbetrieb für den Arduino Datenlogger mit Stockwaage für Imker ist für ATmega328 oder STM32Fxyz für unterschiedliche Konfigurationen mit bis zu vier Waagen pro System verfügbar.