Prosty układ z DHT11 i Arduino daje szybki odczyt temperatury oraz wilgotności bez rozbudowanej elektroniki, ale tylko wtedy, gdy dobrze dobierzesz bibliotekę, okablowanie i tempo pomiaru. W tym tekście pokazuję, jak podłączyć czujnik, uruchomić działający szkic, rozpoznać typowe błędy i ocenić, kiedy ten model ma sens, a kiedy lepiej sięgnąć po lepszy sensor. Skupię się na praktyce, bo właśnie na etapie pierwszego prototypu najłatwiej stracić czas na drobiazgi.
Najważniejsze rzeczy, które warto wiedzieć przed pierwszym pomiarem
- DHT11 mierzy temperaturę w zakresie 0–50°C i wilgotność względną w zakresie 20–90% RH.
- Jego dokładność jest ograniczona: około ±2°C dla temperatury i ±5% RH dla wilgotności.
- W praktyce najlepiej odczytywać go co 2 sekundy, a nie szybciej.
- W wersji bez modułu potrzebujesz rezystora podciągającego 5–10 kΩ na linii DATA.
- Do Arduino najwygodniej użyć biblioteki DHT sensor library i zależności Unified Sensor.
- Jeśli zależy Ci na lepszej precyzji, DHT22 zwykle będzie rozsądniejszym wyborem.
Co naprawdę daje DHT11 w projekcie z Arduino
DHT11 to tani czujnik temperatury i wilgotności z cyfrowym wyjściem, który bardzo dobrze sprawdza się w nauce podstaw elektroniki i prostych projektach domowych. Ma rozdzielczość 1% RH i 1°C, ale jego dokładność jest wyraźnie skromniejsza niż sugerują pierwsze, „ładne” odczyty na Serial Monitorze: w praktyce trzeba liczyć się z odchyłką około ±5% RH i ±2°C. Ja traktuję go jako czujnik do trendów i demonstracji, a nie do pomiarów laboratoryjnych.
To ważne, bo od DHT11 łatwo oczekiwać za dużo. Jeśli chcesz tylko sprawdzić, czy w pokoju robi się zbyt ciepło, czy wilgotność rośnie po podlewaniu roślin albo czy wentylator reaguje na przekroczenie progu, czujnik spełni swoje zadanie. Jeżeli jednak budujesz układ, który ma sterować klimatyzacją, szklarnią albo rejestrować dane z większą wiarygodnością, ograniczenia tego modelu będą odczuwalne już na starcie. Poniżej zebrałem parametry, które warto mieć w głowie przed podłączeniem przewodów.
| Parametr | Wartość dla DHT11 |
|---|---|
| Zakres temperatury | 0–50°C |
| Zakres wilgotności | 20–90% RH |
| Dokładność temperatury | ±2°C |
| Dokładność wilgotności | ±5% RH |
| Rozdzielczość | 1°C i 1% RH |
| Bezpieczne tempo odczytu | Około 1 pomiar co 2 sekundy |
Jeśli te liczby nie pasują do Twojego zastosowania, lepiej dowiedzieć się o tym teraz niż po kilku godzinach debugowania. Gdy zakres i precyzja są już jasne, można przejść do podłączenia czujnika bez zgadywania, gdzie co wpiąć.

Jak podłączyć czujnik do Arduino bez zgadywania przewodów
Najprostszy układ robi się na Arduino Uno, Nano albo podobnej płytce z pinem cyfrowym. Wersja modułowa DHT11 jest wygodniejsza, bo zwykle ma już na płytce rezystor podciągający, więc wystarczą trzy połączenia: zasilanie, masa i linia danych. Przy wersji „gołego” czujnika trzeba dołożyć rezystor 5–10 kΩ między VCC a DATA, inaczej komunikacja bywa niestabilna albo w ogóle nie rusza.
| Wyprowadzenie | Rola | Na co uważać |
|---|---|---|
| VCC | Zasilanie 3–5 V | Większość modułów pracuje wygodnie z 5 V, ale sprawdź opis konkretnej płytki. |
| DATA | Linia danych | To ten przewód trafia do cyfrowego pinu Arduino, na przykład D2. |
| GND | Masa | Bez wspólnej masy odczyt zwykle nie działa poprawnie. |
| NC | Niepodłączone | Występuje w wersji 4-pinowej i nie bierze udziału w pracy czujnika. |
W praktyce najczęściej robię to tak: VCC do 5 V, GND do GND, DATA do D2. Jeśli używasz modułu z trzema pinami, dodatkowy rezystor zazwyczaj nie jest potrzebny; jeśli masz sam czujnik, rezystor jest obowiązkowy. Przy okazji warto unikać długich przewodów na stole prototypowym, bo DHT11 nie jest szczególnie odporny na kiepskie połączenia i luźne kontakty. Gdy okablowanie jest już zamknięte, przechodzę do biblioteki i kodu, bo tam najczęściej wychodzą pierwsze błędy konfiguracji.
Biblioteka i kod startowy, który działa od pierwszego uruchomienia
Do pracy z tym czujnikiem najwygodniejsza jest biblioteka DHT sensor library by Adafruit. W praktyce instaluję ją przez menedżer bibliotek w Arduino IDE, a jeśli korzystam z nowszej wersji, od razu doinstalowuję też Adafruit Unified Sensor, bo część przykładów i klas opiera się właśnie na tej zależności. To rozwiązanie jest po prostu mniej kapryśne niż przypadkowe biblioteki z internetu.
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
}
void loop() {
delay(2000);
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Blad odczytu z DHT11");
return;
}
Serial.print("Wilgotnosc: ");
Serial.print(humidity);
Serial.print(" % Temperatura: ");
Serial.print(temperature);
Serial.println(" C");
}W tym szkicu są trzy rzeczy, których nie warto pomijać. Po pierwsze, `DHTTYPE` musi wskazywać dokładnie DHT11, bo zły typ czujnika daje mylące wyniki. Po drugie, opóźnienie 2000 ms jest sensowne, bo ten sensor nie lubi częstych odczytów. Po trzecie, sprawdzenie `isnan()` pozwala odróżnić realny wynik od błędu komunikacji, zamiast patrzeć na losowe śmieci w monitorze szeregowym. Jeśli kod dalej nie działa, nie zmieniam połowy szkicu naraz - najpierw sprawdzam objawy, bo one zwykle mówią więcej niż sam komunikat o błędzie.
Najczęstsze problemy z odczytem i jak je szybko rozpoznać
Przy DHT11 błędy są zwykle powtarzalne i dość czytelne. Ja patrzę przede wszystkim na to, czy problem dotyczy zasilania, biblioteki, typu czujnika czy tempa odpytywania. Zamiast zgadywać, lepiej przypisać objaw do przyczyny i od razu zawęzić obszar szukania.
| Objaw | Najczęstsza przyczyna | Co zrobić |
|---|---|---|
| W Serial Monitorze pojawia się błąd albo `NaN` | Zły pin, zły typ czujnika, brak rezystora podciągającego albo brak wspólnej masy | Sprawdź połączenia, ustaw `DHT11` i upewnij się, że DATA ma stabilny stan wysoki |
| Wartości skaczą bez sensu | Zbyt szybkie odczyty, długie przewody, słaby styk na płytce stykowej | Daj 2 sekundy przerwy, skróć przewody i popraw połączenia |
| Temperatura wydaje się zawyżona | Czujnik jest zbyt blisko płytki, stabilizatora, USB lub innego źródła ciepła | Odsuń sensor od Arduino i zadbaj o lepszy przepływ powietrza |
| Wilgotność stoi prawie w miejscu | Odczyty są zbyt rzadkie albo otoczenie faktycznie nie zmienia się szybko | Nie odczytuj częściej niż co 2 sekundy i sprawdź czujnik w bardziej zmiennych warunkach |
| Wartości nie zmieniają się po dmuchnięciu w czujnik | Problem z komunikacją lub złe miejsce montażu | Najpierw sprawdź, czy sensor w ogóle odpowiada, potem przestaw go poza zamkniętą obudowę |
W takich projektach najlepiej działa metoda krótkich, konkretnych testów: jeden pin, jeden przewód, jeden znany szkic. Gdy odczyty już się pojawiają, naturalne pytanie brzmi, czy ten model rzeczywiście jest najlepszy do Twojego zastosowania, czy tylko najłatwiejszy na start.
DHT11 czy lepiej od razu DHT22
To pytanie wraca bardzo często, bo oba czujniki wyglądają podobnie i działają w podobnym stylu. Różnica tkwi w jakości pomiaru, zakresie pracy i tym, jak szybko odczyty da się sensownie powtarzać. Jeśli projekt ma być tylko edukacyjny, DHT11 wystarczy. Jeśli ma mieć praktyczną wartość, DHT22 zwykle daje lepszy punkt wyjścia.
| Cecha | DHT11 | DHT22 |
|---|---|---|
| Zakres temperatury | 0–50°C | około -40 do 80°C |
| Zakres wilgotności | 20–90% RH | 0–100% RH |
| Dokładność temperatury | Około ±2°C | Zwykle około ±0,5°C |
| Dokładność wilgotności | Około ±5% RH | Przeważnie wyraźnie lepsza, zwykle kilka procent RH |
| Tempo odczytu | Około 1 Hz | Około 0,5 Hz, czyli mniej więcej raz na 2 sekundy |
| Zastosowanie | Prosty prototyp, nauka, szybki test | Monitoring, dokładniejsze projekty, bardziej wymagające warunki |
Ja zwykle wybieram DHT11 tylko wtedy, gdy liczy się minimalny koszt, prostota albo gotowy zestaw edukacyjny. Jeśli różnica 1–2°C albo kilka punktów procentowych wilgotności ma znaczenie, nie ma sensu oszczędzać na czujniku, bo później i tak wrócisz do wymiany sprzętu. Gdy model jest już dobrany, warto pomyśleć, co właściwie zrobisz z tymi danymi.
Co zrobić z odczytem, żeby projekt był naprawdę użyteczny
Sama liczba na ekranie jest dobrym początkiem, ale sens projektu pojawia się dopiero wtedy, gdy odczyt zaczyna coś uruchamiać, ostrzegać albo zapisywać. W praktyce widzę trzy najrozsądniejsze kierunki dla DHT11 w projektach z Arduino.
- Wyświetlanie danych na Serial Monitorze, LCD albo OLED, żeby od razu widzieć temperaturę i wilgotność.
- Prosty alarm progowy, na przykład buzzer lub dioda, gdy temperatura przekroczy ustaloną wartość.
- Sterowanie przekaźnikiem lub wentylatorem, jeśli chcesz reagować na upał albo zbyt wysoką wilgotność.
- Rejestrowanie pomiarów co 2–10 sekund, aby po czasie zauważyć trend, a nie tylko pojedynczy punkt.
Jeśli chcesz, żeby wykres wyglądał spokojniej, można uśrednić kilka kolejnych odczytów, ale trzeba pamiętać, że to nie poprawia fizycznej dokładności czujnika, tylko wygładza prezentację danych. Dla DHT11 to wystarcza w większości projektów hobbystycznych, natomiast przy automatyce środowiskowej lepiej od razu myśleć o czujniku wyższej klasy. Ostatni krok to już nie sam pomiar, lecz zbudowanie układu tak, żeby działał stabilnie w realnym miejscu, a nie tylko na biurku.
Jak z DHT11 zrobić sensowny moduł pomiarowy, a nie tylko pokaz na ekranie
Najlepsze rezultaty daje prosty, ale uczciwy układ pracy: czujnik zamontowany z dala od źródeł ciepła, odczyt wykonywany co 2 sekundy, a wynik interpretowany jako orientacyjny, nie laboratoryjny. Jeśli chcesz używać go dłużej niż do jednego ćwiczenia, zadbaj też o obudowę z otworami wentylacyjnymi i o to, by powietrze rzeczywiście mogło swobodnie docierać do elementu pomiarowego.
- Nie montuj czujnika tuż przy stabilizatorze napięcia, przetwornicy ani bezpośrednio nad płytką Arduino.
- Nie oczekuj natychmiastowej reakcji na każdą zmianę w otoczeniu.
- Jeśli porównujesz wyniki z innym przyrządem, porównuj trendy, a nie pojedyncze próbki.
- Jeśli projekt ma wejść do normalnego użytku, rozważ od razu DHT22 albo lepszy czujnik.
Tak właśnie podchodzę do DHT11: jako do prostego, bardzo wdzięcznego elementu nauki, który świetnie uczy podstaw komunikacji z czujnikiem, ale nie udaje sprzętu klasy pomiarowej. Gdy potraktujesz go zgodnie z jego możliwościami, oszczędzi Ci sporo czasu i da solidną bazę do bardziej ambitnych projektów z czujnikami na Arduino.