DHT11 i DHT22 odczytywanie temperatury i wilgotności

Te 2 popularne czujniki potrafiące mierzyć temperaturę i wilgotność otoczenia są chyba najczęściej wykorzystywane w projektach dla początkujących ze względu na swoją cenę i prostotę. Należy pamiętać, że często te same czujniki są oznaczane jako AM2301 dla DHT11 i AM2302 dla DHT22

Zanim jednak zdecydujesz się na zakup jednego z nich powinieneś wiedzieć jak dokładny pomiar można otrzymać używając każdego z niech w tym celu przygotowaliśmy tabelkę porównawczą:

DHT11:

  • cena 7 zł
  • zakres pomiaru temp. 0 – 50°C
  • rozdzielczość: 1°
  • błąd pomiaru: +/-1°C
  • zakres pomiaru wilgotności 20 – 90%RH
  • błąd pomiaru wilgotności 5%

DHT22:

  • cena 17,5 zł
  • zakres pomiaru temp. -40 do 80°C
  • rozdzielczość: 0.1°C
  • błąd pomiaru 0.5°C
  • zakres pomiaru wilgotności 0-100%RH
  • błąd pomiaru wilgotności 2%

pomiar wilgotności %RH wyraża wilgotność względną i jest ona zależna od temperatury. 100%RH w danej temperaturze oznacza skroplenie się wody w dużym uproszczeniu.

Jak można wyczytać z porównania na górze DHT11 może jest tani ale też bardzo niedokładny. Pokazując nam temperaturę 20°C równie dobrze w pomieszczeniu może być 18°C lub 22°C – jest to spora różnica, którą można odczuć na własnej skórze więc tam gdzie potrzebujemy odczytów dokładnych do 0.5°C konieczny będzie zakup DHT22.

Każdy z czujników posiada 4 nóżki i może być zasilany napięciem z przedziału od 3.3V do 5.5V – bez problemu możemy je zasilić bezpośrednio z portów Arduino czy innego mikrokontrolera.

1 nóżkę od lewej podpinamy do napięcia, 2 nóżkę podpinamy do portu w mikrokontrolerze, na którym odczytujemy wskazania czujnika, 3 nóżka nie jest tylko do ozdoby i nie jest do niczego podpięta, 4 nóżkę wpinamy do masy.

DHT11 i DHT22 pinout

Poniżej podajemy kod pozwalajacy odczytać temperaturę i wilgotność za pomocą Arduino. Do tego celu użyjemy biblioteki dla DHT od Adafruit. WAŻNE: nie instalujemy najnowszej wersji biblioteki tylko 1.2.3


#include <DHT.h>  //importujemy biblioteke

DHT dht22(8,DHT22);  //w nawiasie 8 - to pin arduino podpięty do czujnika, a DHT22 to typ czujnika, wpisujemy DHT11 jak używamy DHT11


void setup() {
Serial.begin(9600);   //odpalamy komunikacje serial monitor

}

void loop() {
//funkcja oczytu temperatury
float temp = dht22.readTemperature();  //float ponieważ DHT22 podaje nam wynik z dokładnością do 0.1 miejsca
//funkcja odczytu wilgotnosci
float hum = dht22.readHumidity(); 

Serial.println("Temperatura:");
Serial.println(temp);
Serial.println("Wilgotnosc:");
Serial.println(hum);

delay(2000);   //opóźnienie należy dać czas odczytać wynik z czujnika dla DHT11 conajmniej 1000ms dla DHT22 conajmniej 500ms

}

Czujniki można zakupić w naszym sklepie:

czujnik wilgotności i temperatury DHT22

czujnik wilgotności i temperatury DHT11

Krok po kroku objaśniamy kod i pokazujemy jak podpiąć więcej niż 1 czujnik do Arduino na naszym kanale YouTube:

2 Comments

Zostaw komentarz

  1. Krzysztof
    Odpowiedz

    Mam pytanie A właściwie problem mój czujnik DTH11 pokazuje temperature i wilgotnosc z rzedu 700o i 800% macie pomysł co może być nie tak ,uklad esp01 pin gpio0

    1. admin
      Odpowiedz

      Panie Krzysztofie, przydałby się kod programu, bez tego to wróżenie z fusów

Odpowiedz

Twój adres e-mail nie zostanie opublikowany