Kategorie

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 DHT22Pin Arduino
VCC5 V
DATA2
GNDGND

 

 

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:

 

 


#include "dht.h"

dht DHT22;

#define DHT22PIN 2    //przypisanie pinu 2 Arduino jako odczyt z sensora

void setup()
{
  Serial.begin(115200);                    //inicjalizacja monitora szeregowego
  Serial.println("Program testowy DHT22"); 
  Serial.println();
}

void loop()
{
  int chk = DHT22.read(DHT22PIN);         //sprawdzenie stanu sensora, a następnie wyświetlenie komunikatu na monitorze szeregowym

  Serial.print("Stan sensora: ");
  switch (chk)
  {
    case DHTLIB_OK: 
		Serial.print("OKt"); 
		break;
    case DHTLIB_ERROR_CHECKSUM: 
		Serial.println("Błąd sumy kontrolnej"); 
		break;
    case DHTLIB_ERROR_TIMEOUT: 
		Serial.println("Koniec czasu oczekiwania - brak odpowiedzi"); 
		break;
    default: 
		Serial.println("Nieznany błąd"); 
		break;
  }
  Serial.print("Wilgotnosc (%): ");              //wyświetlenie wartości wilgotności
  Serial.print((float)DHT22.humidity, 2);
  Serial.print("tt");
  Serial.print("Temperatura (C): ");           //wyświetlenie temperatury
  Serial.println((float)DHT22.temperature, 2);

  delay(1000);                                  //opóźnienie między kolejnymi odczytami - 1 s
}

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

 

Zrzut ekranu szeregowego monitora.