DHT11 i DHT22 są 8-bitowymi, cyfrowymi czujnikami wigotności i temperatury, komunikującym się za pośrednictwem interfejsu podobnego do 1 wire.
DHT11 doskonale nadaje siÄ™ do pomiaru tempeatur z zakresu 0ºC do 50ºC oraz wilgotnoÅ›ci powietrza od 20% do 95%RH. Czujnik nie nadaje siÄ™ zatem do pomiaru tempeatur ujmenych, a tym samym nie przyda nam siÄ™ do mierzenia temperatury np. za oknem. Doskonale natomiast sprawdzi siÄ™ w pomiarach w pomieszczeniach zamkniÄ™tych. JeÅ›li chodzi o bÅ‚Ä…d pomiarowy mieÅ›ci siÄ™ w zakresie ±2ºC dla temperatury oraz ±5%RH dla wilgotnoÅ›ci.
JeÅ›li chodzi o DHT22 to ma on już szersze zastosowanie, bowiem potrafi mierzyć temperatury z zakresu -40ºC do 125ºC oraz wilgotnoÅ›ci powietrza od 0% do 100%RH. BÅ‚Ä…d pomiarowy wilgotnoÅ›ci jest taki sam jak w przypadku DHT11, natomiast o wiele dokÅ‚adniejszy jest pomiar temperatury, wynoszÄ…cy ±0.5ºC .
BÅ‚Ä™dy pomiarowe mogÄ… być niższe i w dużej mierze zależą od warunków otoczenia - dokÅ‚adnÄ… tabelÄ™ znajdziedzie w karcie katalogowej tego czujnika.
DHT11
DHT22
DHT11 i DHT22 posiadajÄ… wyprowadzone cztery piny, z czego dwa wykorzystane sÄ… do zasilania napiÄ™ciem z zakresu 3.3V do 5.5V (typowe zasilanie to 5V) oraz jeden pin sygnaÅ‚owy, Pobór prÄ…du w trakcie pomiaru może wynieść maksymalnie 2.5mA dla DHT11 i 1.5mA dla DHT22.
DHT11 | DHT22 | ||||||
Typ | Minimalnie | Typowe | Maksymalnie | Minimalnie | Typowe | Maksymalnie | |
Napięcie zasilania | DC | 3V | 5V | 5.5V | 3.3V | 5V | 6V |
Pobór prÄ…du | Pomiar | 0.5mA | 2.5mA | 1mA | 1.5mA | ||
Czuwanie | 100uA | 150uA | 40uA | 50uA | |||
Czas pomiaru | Minimalnie | 1s | 2s |
CaÅ‚a filozofia czujnika ogranicza siÄ™ do podÅ‚Ä…czenia do niego zasilania 5V oraz doprowadzenie pinu sygnaÅ‚owego do mikrokontrolera. Należy również wpiąć rezystor o wartoÅ›ci 10kΩ pomiÄ™dzy pin zasilania VCC, a pin sygnaÅ‚owy DAT. Aby jednak ze sprawiedliwoÅ›ci staÅ‚a siÄ™ zadość, poniżej schemat :)
JedÄ… z wielu dostÄ™pnych, jest biblioteka DHT-sensor-library od Adafruit, która należy rozpakować do katalogu sketchbook/libraries/
bash-4.2$ tree -d ~/sketchbook/libraries/DHT/
/home/santyago/sketchbook/libraries/DHT/
`-- examples
`-- DHTtester
Program przedstawia się następująco:
#include "DHT.h" // biblioteka DHT
#define DHTPIN 2 // numer pinu sygnałowego
#define DHTTYPE DHT11 // typ czujnika (DHT11). Jesli posiadamy DHT22 wybieramy DHT22
DHT dht(DHTPIN, DHTTYPE); // definicja czujnika
void setup()
{
Serial.begin(9600); // otworzenie portu szeregowego
dht.begin(); // inicjalizacja czujnika
}
void loop()
{
// Odczyt temperatury i wilgotności powietrza
float t = dht.readTemperature();
float h = dht.readHumidity();
// Sprawdzamy czy są odczytane wartości
if (isnan(t) || isnan(h))
{
// Jeśli nie, wyświetlamy informację o błędzie
Serial.println("Blad odczytu danych z czujnika");
} else
{
// Jeśli tak, wyświetlamy wyniki pomiaru
Serial.print("Wilgotnosc: ");
Serial.print(h);
Serial.print(" % ");
Serial.print("Temperatura: ");
Serial.print(t);
Serial.println(" *C");
}
}
Jeszcze jednÄ… ciekawÄ… bibliotekÄ… do obsÅ‚ugi czujników DHTxx znajdziesz tutaj. ZostaÅ‚a ona napisana przez Marka Ruysa. Od pierwowzoru różni siÄ™ automatycznym wykrywaniem podpiÄ™tego czujnika, którym może być DHT11, DHT22, AM2302 oraz RHT03. Dodatkowo biblioteka posiada funkcjÄ™ wyÅ›wietlania temperatury w skali Fahrenheita.
#include "DHT.h" // biblioteka DHT
#define DHTPIN 2 // numer pinu sygnałowego
DHT dht; // definicja czujnika
void setup()
{
Serial.begin(9600); // otworzenie portu szeregowego
dht.setup(DHTPIN); // inicjalizacja czujnika
// dht.setup(DHTPIN, DHT11); // inicjalizacja czujnika DHT11
// dht.setup(DHTPIN, DHT22); // inicjalizacja czujnika DHT12
}
void loop()
{
// Miniamalne opóźnienie odczytu
delay(dht.getMinimumSamplingPeriod());
// Odczyt temperatury i wilgotności powietrza
float t = dht.getTemperature();
float h = dht.getHumidity();
// Sprawdzamy poprawność danych
if (dht.getStatus())
{
// Jeśli nie, wyświetlamy informację o błędzie
Serial.println("Blad odczytu danych z czujnika");
} else
{
// Jeśli tak, wyświetlamy wyniki pomiaru
Serial.print("Wilgotnosc: ");
Serial.print(h);
Serial.print(" % ");
Serial.print("Temperatura: ");
Serial.print(t);
Serial.print(" *C / ");
Serial.print(dht.toFahrenheit(t));
Serial.println(" *F ");
}
}
Po przesÅ‚aniu programu do Arduino, możemy Å›ledzić wyniki pomiarów w monitorze portu szeregowego.
Biblioteka DHT-sensor-library od Adafruit.
Biblioteka arduino-DHT od Marka Ruysa
Mirror bibliotek DHT: http://www.jarzebski.pl/arduino/DHT/
Karta katalogowa czujnika DHT11.pdf
Karta katalogowa czujnika DHT22.pdf