beelogger

Temperatur- und Luftfeuchtesensor (DHT21/ DHT22)

beelogger DHT22 vs DHT21

Größenvergleich zwischen DHT21 und DHT22

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%.

 

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:
DHT-Sensoren haben bei 3,3V Versorgung, z.B. beelogger-SMD, nach Datenblatt eine maximale Leitungslänge von 100cm.

Bild Bezugsquelle Preis ab Suchbegriffe* Bemerkungen
 beelogger dht22 eBay 2,95€ DHT22 AM2302 wesentlich kleiner als DHT21
 beelogger DHT21 eBay 2,70€ DHT21  AM2301 Kabel statt Pins zum Anschluss

*Einkaufstipps

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.

beelogger DHT Pinout

beelogger DHT Schaltung

Libraries

<dht.h– https://github.com/RobTillaart/Arduino/tree/master/libraries/DHTlibgetestet mit Version 0.1.35, 
alternativ im Sketch konfigurierbar:
<DHT.h> – https://github.com/RobTillaart/Arduino/tree/master/libraries/DHTlib – getestet mit Version 1.3.8, 

enthalten im beelogger-Library-Paket

 

Test-Programmcode

beelogger DHT21 TestDer 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 komplette Programmcode für den Arduino Datenlogger mit Stockwaage für Imker ist unter Programmcode zu finden.