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:
- Arduino Uno
-
Czujnik DHT11 (w naszym sklepie znajduje się kilka różnych modułów wyposażonych w DHT11, lecz wszystkie działają w analogiczny sposób)
- Płytka stykowa, np. 830 otworów
- Przewody połączeniowe męsko-męskie
- Biblioteka DHT11
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:
#include <dht11.h>
dht11 DHT11;
#define DHT11PIN 2 //przypisanie pinu 2 Arduino jako odczyt z sensora
void setup()
{
Serial.begin(115200); //inicjalizacja monitora szeregowego
Serial.println("Program testowy DHT11");
Serial.println();
}
void loop()
{
int chk = DHT11.read(DHT11PIN); //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)DHT11.humidity, 2);
Serial.print("tt");
Serial.print("Temperatura (C): "); //wyświetlenie temperatury
Serial.println((float)DHT11.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.

