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ń.