Open form

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

 

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

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

Podłączenie DHT11 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 DHT11 Pin Arduino
VCC 5 V
DATA 2
GND GND

 

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

 

 

 Schemat połączenie czujnika DHT11 z Arduino Uno.

 

 

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

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

 

Zrzut ekranu szeregowego monitora.

zapraszamy do współpracy!