DHT11 i DHT22 to popularne cyfrowe czujniki temperatury oraz wilgotności względnej. Nie należą do najszybszych sensorów na rynku, ale w prostych rejestratorach danych, stacjach pogodowych, projektach Arduino i urządzeniach IoT są cenione za niski pobór energii, prosty interfejs oraz dobrą stabilność w długim czasie. Oba układy działają podobnie, jednak różnią się zakresem pomiarowym, dokładnością i częstotliwością odczytu.
Co to jest DHT11
DHT11 to tani czujnik temperatury i wilgotności względnej. Wilgotność względna określa, ile pary wodnej znajduje się w powietrzu w stosunku do maksymalnej ilości, jaką powietrze może utrzymać w danej temperaturze.
Moduły z DHT11 są często wybierane do nauki elektroniki oraz do prostych projektów z Arduino, Raspberry Pi i innymi mikrokontrolerami. Ich zaletą jest łatwe podłączenie: zasilanie, masa i pojedyncza linia danych wystarczą do rozpoczęcia pomiarów.

/ Epsilon pi-2
DHT11 i DHT 22-Właściwości (elementy)
DHT11 pracuje zwykle z napięciem zasilania od 3 do 5 V, a linia danych jest zgodna z prostym, jednoprzewodowym protokołem cyfrowym.
Maksymalny prąd podczas konwersji wynosi około 2,5 mA, dlatego czujnik dobrze sprawdza się w projektach zasilanych bateryjnie, o ile pomiary nie są wykonywane zbyt często.
Typowa obudowa czujnika ma wymiary około 15,5 mm x 12 mm x 5,5 mm, a cztery wyprowadzenia są rozstawione co 0,1 cala.
Standardowy DHT11 mierzy temperaturę w zakresie 0-50°C z dokładnością około ±2°C oraz wilgotność w zakresie 20-80% RH z dokładnością około ±5% RH. Nie jest to czujnik laboratoryjny, ale do prostego monitorowania warunków otoczenia zwykle wystarcza.
Wbudowany układ pomiarowy i przetwornik wysyłają wynik jako dane cyfrowe, dzięki czemu mikrokontroler nie musi korzystać z wejścia analogowego ani wykonywać własnej kalibracji sygnału.
Uwaga: na rynku występują różne wersje modułów DHT11. Niektóre płytki mają już rezystor podciągający na linii danych, inne wymagają dodania go w projekcie. Przed projektowaniem PCB warto sprawdzić konkretną dokumentację modułu.

Co to jest DHT22/RHT03/AM2302
DHT22, spotykany także pod oznaczeniami RHT03 lub AM2302, jest dokładniejszym czujnikiem temperatury i wilgotności. Tak jak DHT11 łączy element do pomiaru wilgotności z cyfrowym układem przetwarzania sygnału.
W praktyce DHT22 wybiera się wtedy, gdy potrzebny jest szerszy zakres pomiaru, lepsza dokładność i stabilniejszy odczyt wilgotności. Sensor zawiera pojemnościowy element pomiarowy wilgotności, element pomiaru temperatury oraz wewnętrzny mikrokontroler, który kalibruje i udostępnia wynik w postaci cyfrowej.

Moduł mikrokontrolera
DHT11 i DHT 22-Właściwości (elementy)
DHT22 oferuje lepszą dokładność niż DHT11, dobrą odporność na zakłócenia oraz stabilne działanie w typowych aplikacjach pomiaru środowiskowego.
Moduł jest nadal niewielki, choć większy od DHT11, dlatego łatwo zmieścić go na płytce prototypowej lub w małym urządzeniu.
Typowy zakres pomiaru temperatury DHT22 wynosi od -40°C do 80°C z dokładnością około ±0,5°C. Zakres wilgotności wynosi zwykle 0-100% RH, a w wersjach Grove Pro 5-99% RH, z dokładnością rzędu ±2% RH w korzystnych warunkach.
Czujnik zużywa mało energii i może przesyłać sygnał na przewodzie o długości do około 20 m, jeżeli zasilanie, przewody i rezystor podciągający są dobrane poprawnie. Przy długich połączeniach warto stosować napięcie 5 V i prowadzić przewody z dala od źródeł zakłóceń.
Podstawy pracy
DHT11 i DHT22 działają według podobnej zasady: wewnętrzny układ mierzy wilgotność i temperaturę, a następnie udostępnia wynik mikrokontrolerowi jako dane cyfrowe.
Czujnik wilgotności ma dwie elektrody oraz warstwę materiału higroskopijnego pomiędzy nimi. Zmiana wilgotności wpływa na właściwości elektryczne tej warstwy, co pozwala określić wilgotność względną powietrza.
Układ scalony mierzy sygnał z elementu wilgotnościowego i temperaturowego, kompensuje go oraz przygotowuje dane do odczytu przez mikrokontroler.
Termistor NTC mierzy temperaturę. W termistorze o ujemnym współczynniku temperaturowym rezystancja spada wraz ze wzrostem temperatury, a układ wewnętrzny przelicza tę zmianę na wynik pomiaru.
DHT11 i DHT22
DHT11 i DHT22 mają zwykle cztery wyprowadzenia, ale w typowej aplikacji używa się trzech: VCC, DATA i GND. Czwarte wyprowadzenie pozostaje niepodłączone.
Przy zasilaniu 5 V komunikacja może działać na przewodach o długości do około 20 m. Przy 3,3 V margines napięciowy jest mniejszy, dlatego w praktyce lepiej ograniczyć długość przewodu do krótszych odcinków i zadbać o stabilne zasilanie.
Oba czujniki mierzą temperaturę i wilgotność, ale DHT22 ma wyraźnie lepsze parametry. DHT11 jest tańszy i może raportować odczyt raz na sekundę, natomiast DHT22 daje dokładniejsze wyniki i szerszy zakres, ale zwykle nie powinien być odpytywany częściej niż raz na dwie sekundy.

DHT11 i DHT 22-Samouczek Arduino
Poniżej znajduje się prosty przykład użycia modułów DHT11 i DHT22 z płytką Arduino. Procedura dotyczy wersji Grove, ale przy bezpośrednim podłączeniu zasada pozostaje taka sama: potrzebne są zasilanie, masa i linia danych.
Wymagany katalog
DHT11 - czujnik temperatury i wilgotności Grove.
DHT22 - czujnik temperatury i wilgotności Grove Pro.
Opcjonalnie: Grove Base Shield, który ułatwia podłączenie modułu bez przewodów połączeniowych.
Seeeduino V4.2 lub Arduino UNO.

(Arduino UNO)
DHT11 VS DHT22:Instrukcje
DHT11 i DHT 22-Zacznij od podłączenia sprzętu.
Najpierw podłącz DHT11 do portu D2 na płytce Grove Base Shield.
Następnie zamontuj Grove Base Shield na Arduino UNO lub Seeeduino.
Po trzecie, podłącz płytkę do komputera przewodem USB.
Jeśli nie używasz Grove Base Shield, podłącz czujnik bezpośrednio: VCC do zasilania, GND do masy, a DATA do wybranego pinu cyfrowego. W wielu układach potrzebny jest rezystor podciągający linię DATA do VCC, zwykle 4,7-10 kΩ.

DHT11 VS DHT22:Przejdź do konfiguracji oprogramowania
Pobierz bibliotekę Seeed DHT z GitHuba albo zainstaluj zgodną bibliotekę DHT przez menedżer bibliotek Arduino IDE.
Jeżeli nie instalowałeś wcześniej bibliotek Arduino, sprawdź instrukcję dla swojej wersji IDE. Po instalacji uruchom Arduino IDE ponownie.
Otwórz przykład przez ścieżkę: File > Examples > Grove_Humidity_Temperature_Sensor-master > DHTtester. Przykład pozwala odczytać wilgotność względną i temperaturę otoczenia w monitorze portu szeregowego.
DHT11 i DHT 22-Uwagi;
DHT11 i DHT22 mogą korzystać z tej samej biblioteki Arduino, ale w kodzie trzeba wybrać właściwy typ czujnika. Jeśli przykład domyślnie wskazuje DHT22, zmień definicję na DHT11.
W projekcie powinna pozostać aktywna tylko jedna linia definicji typu czujnika. Pozostałe warianty należy zakomentować, aby biblioteka nie odczytywała danych z błędną konfiguracją.
Dla DHT11 fragment definicji typu czujnika może wyglądać następująco:

Wgraj swoje demo
Po wybraniu właściwego typu czujnika skompiluj szkic i wgraj go na płytkę Arduino lub Seeeduino.
DHT11 VS DHT22: Przegląd wyników
Naciśnij Ctrl+Shift+M lub wybierz w menu Arduino IDE opcję:
Tool > Serial Monitor
Po otwarciu monitora portu szeregowego powinieneś zobaczyć kolejne odczyty temperatury i wilgotności. Jeżeli wyniki są nierealne, sprawdź typ czujnika w kodzie, numer pinu, zasilanie oraz rezystor podciągający na linii danych.
Temperaturę w stopniach Celsjusza można przeliczyć na stopnie Fahrenheita poniższym kodem:
// wydrukuj temperaturę w stopniach Fahrenheita
Serial.print((t * 9.0) / 5.0 + 32.0);
Wnioski
DHT11 i DHT22 są dobrym wyborem, gdy potrzebujesz taniego czujnika temperatury i wilgotności do prostego urządzenia. DHT11 wystarczy do podstawowych pomiarów w pomieszczeniu, natomiast DHT22 będzie lepszy tam, gdzie liczy się szerszy zakres, dokładniejszy pomiar i większy zapas parametrów.
W projektach produkcyjnych warto od razu uwzględnić sposób montażu modułu, długość przewodów, rezystor podciągający i warunki pracy obudowy. Dobrze przygotowany schemat oraz poprawny layout PCB ograniczają błędy odczytu i ułatwiają późniejszy montaż seryjny.