Open form

Arduino i obsługa czujnika temperatury i wilgotności DHT22

 

Moduł DHT22 służy do pomiaru temperatury oraz wilgotności powietrza. Prezentowany przykład pokazuje w jaki sposób wykorzystać jego możliwości za pośrednictwem Arduino.

W przykładzie zostały zastosowane następujące elementy:

Podłączenie DHT22 z Arduino:

W celu odczytania wartości temperatury i wilgotności z czujnika należy połączyć układ z Arduino w następujący sposób:

 

Pin DHT22 Pin Arduino
VCC 5 V
DATA 2
GND GND

 

 

W przypadku samego czujnika bez modułu, należy dodatkowo podciągnąć linię danych do Vcc przez rezystor, w tym przypadku 4,7 kΩ (jak na poniższym schemacie).

 

 

 

Schemat połączenie czujnika DHT22 z Arduino Uno.

 

 

Schemat połączenie czujnika DHT22 (wersja z modułem) z Arduino Uno.

Program do Arduino

Na początku bibliotekę należy dodać do środowiska Arduino (Szkic -> Include Library -> Add .ZIP Library...).

W przykładzie został wykorzystany następujący kod:

 

  1.  
  2.  
  3. #include "dht.h"
  4.  
  5. dht DHT22;
  6.  
  7. #define DHT22PIN 2 //przypisanie pinu 2 Arduino jako odczyt z sensora
  8.  
  9. void setup()
  10. {
  11. Serial.begin(115200); //inicjalizacja monitora szeregowego
  12. Serial.println("Program testowy DHT22");
  13. Serial.println();
  14. }
  15.  
  16. void loop()
  17. {
  18. int chk = DHT22.read(DHT22PIN); //sprawdzenie stanu sensora, a następnie wyświetlenie komunikatu na monitorze szeregowym
  19.  
  20. Serial.print("Stan sensora: ");
  21. switch (chk)
  22. {
  23. case DHTLIB_OK:
  24. Serial.print("OKt");
  25. break;
  26. case DHTLIB_ERROR_CHECKSUM:
  27. Serial.println("Błąd sumy kontrolnej");
  28. break;
  29. case DHTLIB_ERROR_TIMEOUT:
  30. Serial.println("Koniec czasu oczekiwania - brak odpowiedzi");
  31. break;
  32. default:
  33. Serial.println("Nieznany błąd");
  34. break;
  35. }
  36. Serial.print("Wilgotnosc (%): "); //wyświetlenie wartości wilgotności
  37. Serial.print((float)DHT22.humidity, 2);
  38. Serial.print("tt");
  39. Serial.print("Temperatura (C): "); //wyświetlenie temperatury
  40. Serial.println((float)DHT22.temperature, 2);
  41.  
  42. delay(1000); //opóźnienie między kolejnymi odczytami - 1 s
  43. }

Wynik działania tego programu możemy zaobserwować na screenie:

 

Zrzut ekranu szeregowego monitora.

zapraszamy do współpracy!