Czujnik DHT11 to jeden z najpopularniejszych i najbardziej dostępnych modułów do pomiaru temperatury oraz wilgotności powietrza w projektach opartych na Arduino. Dzięki prostemu interfejsowi 1‑Wire, niskiemu poborowi prądu i szerokiemu zakresowi zastosowań sprawdzi się zarówno u początkujących, jak i u zaawansowanych twórców elektroniki.
Wprowadzenie do czujnika DHT11
Czujnik DHT11 to kompaktowy moduł cyfrowy łączący dwa sensory: termistor do pomiaru temperatury oraz kondensator wilgotnościowy do określania poziomu wilgoci. Mierzone wartości są przetwarzane wewnętrznie i przesyłane jednym przewodem danych (interfejs 1‑Wire), co upraszcza podłączenie do mikrokontrolerów takich jak Arduino Uno, Nano czy Mega.
W wielu modułach znajdziesz czerwony wskaźnik LED informujący o poprawnym zasilaniu, co ułatwia diagnostykę podczas montażu.
DHT11 zyskał popularność dzięki niskiej cenie (ok. 5–10 zł), łatwości użycia i wystarczającej precyzji w typowych aplikacjach: domowe stacje pogodowe, monitoring szklarni, automatyka domowa czy roboty mobilne reagujące na warunki środowiskowe. W porównaniu do droższego DHT22, DHT11 oferuje korzystny kompromis między kosztem a funkcjonalnością, choć z mniejszym zakresem pomiarowym.
Specyfikacja techniczna DHT11
DHT11 charakteryzuje się następującymi parametrami, istotnymi w codziennych projektach:
- napięcie zasilania – 3,3–5,5 V (kompatybilne z pinami Arduino);
- zakres pomiaru temperatury – 0–50 °C;
- dokładność temperatury – ±2 °C;
- rozdzielczość temperatury – 1 °C;
- zakres pomiaru wilgotności – 20–95% RH;
- dokładność wilgotności – ±5% RH;
- rozdzielczość wilgotności – 1%;
- pobór prądu – średnio 0,2–0,5 mA w trybie czuwania, do 1 mA podczas pomiaru (energooszczędny, dobry do projektów bateryjnych);
- czas pomiaru – ok. 1 sekundy (minimalna przerwa między odczytami: 1 s);
- interfejs – 1‑Wire (jedna linia danych);
- wymiary modułu – zazwyczaj 15 × 19 mm z 3 lub 4 wyprowadzeniami (VCC, DATA, GND).
Dla szybkiego porównania parametrów z modelem DHT22, zobacz zestawienie:
| Parametr | DHT11 | DHT22 (porównanie) |
|---|---|---|
| Zakres temp. | 0–50 °C | -40–80 °C |
| Dokładność temp. | ±2 °C | ±0,5 °C |
| Zakres wilg. | 20–95% RH | 0–100% RH |
| Dokładność wilg. | ±5% RH | ±2–5% RH |
| Czas pomiaru | 1 s | 2 s |
| Cena | 5–10 zł | 15–25 zł |
DHT11 nie jest idealny do ekstremalnych warunków (np. mrozy czy pełna wilgotność), ale doskonale sprawdza się w pomieszczeniach i łagodnym klimacie.
Podłączenie DHT11 do Arduino
Podłączenie jest proste i zazwyczaj nie wymaga lutowania w przypadku modułów z pinami. Standardowa konfiguracja dla Arduino Uno wygląda następująco:
| Pin DHT11 | Pin Arduino | Opis |
|---|---|---|
| VCC | 5 V | Zasilanie (opcjonalnie 3,3 V). |
| DATA | Pin 2 | Linia danych (rezystor pull‑up 4,7–10 kΩ wymagany, jeśli używasz „gołego” sensora bez modułu). |
| GND | GND | Masa. |
Schemat podłączenia: podłącz VCC do 5 V Arduino, GND do GND, a DATA do pinu cyfrowego 2. W wielu modułach zintegrowany rezystor pull‑up eliminuje potrzebę dodatkowego elementu. Dla samego sensora bez płytki dodaj rezystor 4,7 kΩ między VCC a DATA.
Uwaga bezpieczeństwa: zawsze weryfikuj poziomy napięć – Arduino 5 V jest bezpieczne, ale przy mikrokontrolerach 3,3 V (np. ESP32) zadbaj o zgodność logiki.
Biblioteki i oprogramowanie w Arduino IDE
Do obsługi DHT11 rekomendowana jest biblioteka DHT sensor library od Adafruit wraz z Adafruit Unified Sensor. Aby ją zainstalować, wykonaj następujące kroki:
- otwórz Arduino IDE i przejdź do: Narzędzia > Zarządzaj bibliotekami,
- wyszukaj „DHT sensor library” (Adafruit) oraz „Adafruit Unified Sensor”,
- zainstaluj obie biblioteki, a następnie zrestartuj IDE.
Przykładowy kod podstawowy dla DHT11
Poniżej znajdziesz minimalny szkic do odczytu temperatury i wilgotności w Arduino IDE:
#include "DHT.h" // Biblioteka DHT
#define DHTPIN 2 // Pin DATA
#define DHTTYPE DHT11 // Typ czujnika DHT
DHT dht(DHTPIN, DHTTYPE); // Inicjalizacja obiektu
void setup() {
Serial.begin(9600); // Komunikacja szeregowa
dht.begin(); // Start czujnika
Serial.println("Czujnik DHT11 gotowy!");
}
void loop() {
float temperatura = dht.readTemperature(); // [°C]
float wilgotnosc = dht.readHumidity(); // [%]
if (isnan(temperatura) || isnan(wilgotnosc)) {
Serial.println("Błąd odczytu z DHT11!");
return;
}
Serial.print("Wilgotnosc: ");
Serial.print(wilgotnosc);
Serial.print(" %\t");
Serial.print("Temperatura: ");
Serial.print(temperatura);
Serial.println(" °C");
delay(2000); // Min. 1 s dla DHT11
}
Ten kod wyświetla pomiary co 2 sekundy w Monitorze szeregowym (Narzędzia > Monitor szeregowy, 9600 baud). Aby odczytać w Fahrenheicie, użyj dht.readTemperature(true).
Rozszerzony kod z biblioteką bez Adafruit
Alternatywnie możesz skorzystać z prostej biblioteki DHT11.h. Oto przykładowy szkic:
#include "DHT11.h" // Inna biblioteka DHT11
DHT11 dht11(2); // Pin 2
void setup() {
Serial.begin(9600);
}
void loop() {
if (dht11.read()) {
Serial.print("Wilgotnosc (%): ");
Serial.print((float)dht11.humidity, 2);
Serial.print("\t");
Serial.print("Temperatura (C): ");
Serial.println((float)dht11.temperature, 2);
}
delay(1000);
}
Praktyczne projekty z DHT11 i Arduino
Oto cztery szybkie pomysły, które łatwo wdrożysz z użyciem DHT11:
- prosta stacja pogodowa – wyświetlaj dane na LCD 16×2 (LiquidCrystal) lub OLED SSD1306; dodaj buzzer dla alarmów (np. wilgotność > 80%);
- automatyka szklarni – steruj przekaźnikiem wentylatora przy temperaturze > 30 °C lub nawadnianiem przy wilgotności < 40%; zautomatyzuj otwieranie okna serwomechanizmem;
- monitoring IoT z ESP8266 – przesyłaj pomiary do chmury (np. ThingSpeak) przez Wi‑Fi; konfiguracja w Arduino IDE jest szybka;
- robot reagujący na środowisko – omijaj wilgotne obszary lub dostosuj prędkość do temperatury, aby uniknąć przegrzewania napędów.
Rozszerzenia
Jeśli chcesz zwiększyć dokładność i stabilność działania, rozważ poniższe usprawnienia:
- kalibruj pomiary względem wiarygodnego termometru referencyjnego,
- filtruj odczyty uśrednieniem z 3–5 próbek, aby ograniczyć szumy,
- dodaj obudowę o klasie IP65 przy pracy na zewnątrz.
Porównanie z DHT22 i wskazówki zaawansowane
DHT22 (AM2302) oferuje szerszy zakres pomiarowy (-40–80 °C, 0–100% RH) i wyższą dokładność (±0,5 °C, ±2% RH), ale jest wolniejszy (2 s) i droższy. Wybierz DHT11 do prototypów i zastosowań hobbystycznych, a DHT22 do bardziej wymagających stacji czy systemów monitoringu.
Częste problemy i rozwiązania
W razie kłopotów z odczytami sprawdź najpierw podstawy:
- błąd NaN – sprawdź okablowanie, zapewnij minimalne opóźnienie 1 s między odczytami, zweryfikuj wersję biblioteki;
- niestabilne odczyty – dodaj kondensator 100 nF między VCC a GND i upewnij się, że masa jest wspólna dla wszystkich modułów;
- zasięg przewodów – stosuj dobre ekranowane przewody i unikaj pętli masy; praktycznie do ok. 20 m przy poprawnym okablowaniu;
- zasilanie bateryjne – korzystaj z trybu uśpienia mikrokontrolera i wydłuż interwał próbkowania, by oszczędzać energię.
DHT11 to solidna baza do nauki i szybkiego prototypowania – prosty w użyciu, tani i wystarczająco dokładny do większości domowych zastosowań.