RgNt5Mfc9aHvi
Zdjęcie przedstawia płytkę Arduino z podłączonymi kabelkami w wyświetlaczem pokazującym godzinę, temperaturę, dzień tygodnia oraz datę. Nad wyświetlaczem widoczne są kolorowe kabelki z wtyczkami wpięte w panel.

I_R_W15_M03 Przykładowe projekty

Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Czujnik temperatury i wilgotności DHT22

RPZP62KXHR6RN
Czujnik temperatury i wilgotności DHT22
Źródło: Contentplus.pl Sp. z o.o.

Czujnik DHT22 wyróżnia się wśród podobnych elementów z tej serii głównie pod względem zakresów pomiarowych oraz dokładności wskazań. Jeśli chodzi o temperaturę, jest to zakres od -40Indeks górny OC do +80Indeks górny OC i całkiem duża precyzja pomiaru oraz rozdzielczość na poziomie odpowiednio: +/- 0,5Indeks górny OC i 0,1Indeks górny OC. Czas reakcji czujnika na nagłe zmiany temperatury to jedynie dwie sekundy, co umożliwia pracę nawet w bardzo dynamicznych systemach sterowania. Czujnik DHT22 działa w pełnym zakresie wilgotności względnej, czyli od 0% RH do 100% RH, zapewniając dokładność +/- 2% RH i rozdzielczość 0,1% RH. Całość (zarówno przetworniki, jak i układ pomiarowy wraz z cyfrowym interfejsem komunikacyjnym) mieści się w niewielkiej, perforowanej obudowie z tworzywa sztucznego o wymiarach zaledwie 20 x 15,1 x 7,7 mm.

Komunikacja z czujnikiem DHT22

Czujnik temperatury i wilgotności DHT22 komunikuje się z nadrzędnym mikrokontrolerem za pomocą jednoliniowego interfejsu szeregowego. Transmisję danych inicjuje master (mikrokontroler), wysyłając sekwencję stanów logicznych: L → H. Wtedy czujnik rozpoczyna nadawanie danych, zaczynając od najstarszego bitu. Ramka ma długość 40 bitów i zawiera następujące pola danych: części całkowitą i ułamkową odczytu wilgotności (po osiem bitów), części całkowitą i ułamkową odczytu temperatury (również po osiem bitów) oraz sumę kontrolną (jeden bajt). Wartości stanów logicznych (bity 0 i 1) są kodowane jako dwufazowe impulsy o zróżnicowanym czasie trwania (stan L przez 50 µs i następujący po nim stan H przez czas 26‑28 µs oznacza logiczne zero; logiczna jedynka jest kodowana przez impuls „H” o czasie trwania 70 µs). Aby na szynie danych nie doszło do kolizji, linia GPIO mikrokontrolera przeznaczona do pracy w roli wejścia/wyjścia danych powinna być skonfigurowana jako wyjście typu otwarty dren (OD).

Specyfikacja czujnika:

Połączenie z Arduino

Podłącz układ według poniższego schematu, wgraj kod i przetestuj jego działanie.

Co nam będzie potrzebne:
RFXM53KV7UJT4
Schemat ideowy
Źródło: Contentplus.pl Sp. z o.o., Układ ideowy.
  • VCC – 5V Arduino

  • SDA – dowolny pin cyfrowy Arduino

  • GND – GND Arduino

Program testowy

Do poprawnego działania czujnika potrzebna jest biblioteka DHT.

Biblioteka do obsługi czujnika:

R14blEg64VPTA

Plik z biblioteką czytnika kart.

Plik ZIP o rozmiarze 2.42 KB w języku polskim

Po pobraniu biblioteki należy ją zainstalować w Arduino IDE.

Najpierw dołączamy bibliotekę DHT.

Linia 1. kratka include cudzysłów dht kropka h cudzysłów.

Następnie tworzymy nowy obiekt.

Linia 1. dht DHT22 średnik.

Definiujemy pin Arduino, do którego wpięty jest czujnik.

Linia 1. kratka define DHT22PIN 7.

W pętli setup() inicjujemy połączenie z monitorem portu szeregowego z prędkością 115 200 bodów i wyświetlamy tekst startowy programu.

Linia 1. Serial kropka begin otwórz nawias okrągły 115200 zamknij nawias okrągły średnik. Linia 2. Serial kropka println otwórz nawias okrągły cudzysłów Program testowy do czujnika DHT22 cudzysłów zamknij nawias okrągły średnik. Linia 3. Serial kropka println otwórz nawias okrągły cudzysłów minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus cudzysłów zamknij nawias okrągły średnik.

W pętli loop() sprawdzamy stan sensora i wyświetlamy odpowiedni komunikat.

Linia 1. int chk znak równości DHT22 kropka read otwórz nawias okrągły DHT22PIN zamknij nawias okrągły średnik. Linia 3. Serial kropka print otwórz nawias okrągły cudzysłów Stan sensora dwukropek cudzysłów zamknij nawias okrągły średnik. Linia 4. switch otwórz nawias okrągły chk zamknij nawias okrągły otwórz nawias klamrowy. Linia 6. case DHTLIB podkreślnik OK dwukropek. Linia 7. Serial kropka print otwórz nawias okrągły cudzysłów OK cudzysłów zamknij nawias okrągły średnik. Linia 8. Serial kropka print otwórz nawias okrągły cudzysłów kreska pionowa cudzysłów zamknij nawias okrągły średnik. Linia 9. break średnik. Linia 10. case DHTLIB podkreślnik ERROR podkreślnik CHECKSUM dwukropek. Linia 11. Serial kropka println otwórz nawias okrągły cudzysłów Błąd sumy kontrolnej cudzysłów zamknij nawias okrągły średnik. Linia 12. break średnik. Linia 13. case DHTLIB podkreślnik ERROR podkreślnik TIMEOUT dwukropek. Linia 14. Serial kropka println otwórz nawias okrągły cudzysłów Koniec czasu oczekiwania minus brak odpowiedzi cudzysłów zamknij nawias okrągły średnik. Linia 15. break średnik. Linia 16. default dwukropek. Linia 17. Serial kropka println otwórz nawias okrągły cudzysłów Nieznany błąd cudzysłów zamknij nawias okrągły średnik. Linia 18. break średnik. Linia 19. zamknij nawias klamrowy.

Ostatnia rzecz, jaką musimy zrobić, to wyświetlić wartości pomiarowe.

Linia 1. Serial kropka print otwórz nawias okrągły cudzysłów Wilgotnosc dwukropek cudzysłów zamknij nawias okrągły średnik. Linia 2. Serial kropka print otwórz nawias okrągły otwórz nawias okrągły float zamknij nawias okrągły DHT22 kropka humidity przecinek 2 zamknij nawias okrągły średnik. Linia 3. Serial kropka print otwórz nawias okrągły cudzysłów procent cudzysłów zamknij nawias okrągły średnik. Linia 4. Serial kropka print otwórz nawias okrągły cudzysłów kreska pionowa cudzysłów zamknij nawias okrągły średnik. Linia 5. Serial kropka print otwórz nawias okrągły cudzysłów Temperatura dwukropek cudzysłów zamknij nawias okrągły średnik. Linia 6. Serial kropka print otwórz nawias okrągły otwórz nawias okrągły float zamknij nawias okrągły DHT22 kropka temperature przecinek 2 zamknij nawias okrągły średnik. Linia 7. Serial kropka println otwórz nawias okrągły cudzysłów st kropka C cudzysłów zamknij nawias okrągły średnik.
Szkic programu
Ważne!

Po uruchomieniu monitora portu szeregowego należy zmienić prędkość na 115 200 bodów. Po zmianie prędkości nasze informacje będą poprawnie wyświetlane.

Ważne!

Jeśli Arduino nie wykryje czujnika, pojawi się komunikat o braku odpowiedzi.