
Sok rendszer működését alapvetően befolyásolja a hőmérséklet vagy a páratartalom – ilyen esetekben hasznos, ha egyszerűen tudunk mérni: legyen szó egy egyszerű otthoni párásítóról, egy zárt szekrény szellőzéséről vagy akár például egy okos növényfigyelő állomásról. Az Arduino világában sokféle szenzormodul közül választhatunk. Kezdőként a →KY-015 DHT11 modult választottam. Ez a kis méretű, háromlábú szenzoregység sok kezdőkészlet része: kedvező áru, gyorsan beköthető, és azonnal használható.
Ebben a cikkben azt foglalom össze, hogyan történik a KY-015 szenzor bekötése, milyen méréseket végeztem vele, bemutatom a DHT22-vel kapcsolatos tapasztalataimat. Emellett ismertetem, milyen technikai megoldásokat használtam a mérésekhez, és azt is, milyen különbségeket találtam a fejlettebb DHT22 típussal szemben, amely közel ugyanazon a protokollon kommunikál, de nagyobb pontosságot és megbízhatóságot kínál.
Fontosnak tartottam, hogy ne csak használjam, hanem értsem is a működését, és ha kell, képes legyek hibát keresni, kódot módosítani, vagy épp másik típust választani tudatosan.
A DHT11 (KY-015) működési elve – digitális adat egy vezetéken
A KY-015 modul központi eleme a DHT11 szenzor. Ez egy kombinált érzékelő, amely tartalmaz egy NTC hőmérséklet-érzékelőt, valamint egy kapacitív páratartalom-mérőt. A méréseket egy belső vezérlőchip végzi, ezt követően digitális formában továbbítja az adatokat az Arduino-nak egy adatcsomagban.
A kommunikáció egyedi, időalapú protokollt használ, ahol az Arduino indítja az adatlekérést, és a szenzor erre pontos időzítéssel válaszol. Összesen 40 biten: 16 bit páratartalom, 16 bit hőmérséklet, 8 bit ellenőrzőösszeg. Mivel a kommunikáció időalapú, csak speciális és precíz könyvtárral kezelhető biztonságosan.
A DHT szenzorcsalád támogatására az Adafruit fejlesztette ki a közismert DHT.h könyvtárat, amely elrejti a bonyolult időzítést és egyszerű függvényhívásokkal használható (readTemperature(), readHumidity()).
Mi van a DHT11 (KY-015) modulon?
A KY-015 egy kis nyomtatott áramköri lap, amelyre közvetlenül rá van forrasztva a DHT11 szenzor és néhány alapvető elektronikai alkatrész. Ezek az elemek együtt biztosítják, hogy a modul megbízhatóan működjön az Arduino-val. A panel kis méretű és jól illeszthető bármilyen prototípushoz vagy kisebb elektronikai projekthez.
A modul főbb részei:
- DHT11 szenzor, amely maga végzi a hőmérséklet- és páratartalom-mérést
- Jelstabilitást segítő ellenállások és opcionális szűrőkondenzátorok
- Tüskesoros csatlakozás: GND (föld), VCC (tápfeszültség), SIG (digitális adatjel)
A kimenet típusa digitális, így az Arduino bármely digitális bemenetére közvetlenül ráköthető. Ez különösen előnyös kezdők számára, mivel nem szükséges analóg jelkondicionálás. A modul 3.3V és 5V tápfeszültségről egyaránt működik, de a gyakorlatban stabilabb eredményeket kaptam 5V-os táplálással. További pozitívum, hogy a DHT11 gyárilag kalibrált, így külön beállítást nem igényel: a mérések a bekötés után azonnal elérhetők.
Bekötés Arduino-hoz – gyakorlati tanácsaim
Én így kötöttem be a KY-015 modult:
- SIG (DATA) → Arduino D2 (vagy bármely digitális láb)
- VCC → 5V
- GND → GND
Ez a bekötés egyszerű, és nem szükséges hozzá külön alkatrész a szenzoron kívül. Az Arduino bármely digitális lába használható, de a példában az →Uno lapka D2 kivezetést választottam, mivel ez gyakori a példakódokban, így a kezdők számára egyszerűbb követést biztosít. A tápellátást 5V-ról adtam, mert bár a KY-015 működik 3.3V mellett is, az 5V stabilabb adatátvitelt eredményezett.
Amikor hosszabb vezetéket használtam (>1m), célszerű volt 10kΩ-os felhúzó-ellenállást beiktatni a DATA és VCC közé. Bár egyes KY-015 modulverziók tartalmaznak beépített 1kΩ vagy 10kΩ-os ellenállást, a gyakorlatban stabilabb működést tapasztaltam külső 10kΩ-os ellenállással – zajos környezetben, hosszabb kábel esetén vagy kültéri használatnál. Egy alkalommal például, amikor a modult egy perforált szabadtéren levő dobozban helyeztem el, a külső felhúzó-ellenállás beiktatásával sikerült megszüntetni a véletlenszerű adatkimaradásokat és zajos értékeket is. Ez a megoldás különösen hasznos, ha a szenzort nem közvetlenül az Arduino mellett használjuk.

Adatolvasás – a kód és a tapasztalataim
Ez a példa bemutatja, hogyan olvassuk ki a hőmérséklet- és páratartalom-értékeket a KY-015 modulról. A kód verziószámmal, dátummal és rövid leírással indul, ahogy a saját fejlesztésű példaprogramjaimnál szokásos.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | /* Program neve: KY-015 szenzor olvasása és adatmegjelenítés Verzió: 1.1 Dátum: 2025. július 29. Szerző: Cseh Róbert E-mail: avr@tavir.hu Web: https://www.tavir.hu Leírás: A program a KY-015 (DHT11) szenzor adatait olvassa be, és megjeleníti a soros monitoron. A hőmérsékletet és a páratartalmat 2 másodpercenként frissíti. Hardverkövetelmények: - Arduino UNO - KY-015 szenzor modul → Arduino D2 Csatlakozások: - SIG → D2 - VCC → 5V - GND → GND Könyvtárak: - DHT.h (Adafruit) Telepítés: - Másold be a kódot az Arduino IDE-be, töltsd fel, majd nyisd meg a soros monitort. Felhasználási feltételek: Oktatási célokra szabadon felhasználható, módosítható. A szerző nevének feltüntetése kötelező. */ #include <DHT.h> // A DHT szenzorhoz szükséges könyvtár betöltése #define DHTPIN 2 // A szenzor adatkábele a 2-es digitális lábra van kötve #define DHTTYPE DHT11 // A használt szenzortípus: DHT11 (vagy lehet DHT22) DHT dht(DHTPIN, DHTTYPE); // A DHT objektum létrehozása a megfelelő beállításokkal void setup() { Serial.begin(9600); // A soros kommunikáció elindítása 9600 baud sebességgel dht.begin(); // A szenzor inicializálása } void loop() { delay(2000); // Várakozás 2 másodpercet, mert a DHT11 ritkán frissít float h = dht.readHumidity(); // Páratartalom olvasása float t = dht.readTemperature(); // Hőmérséklet olvasása if (isnan(h) || isnan(t)) { // Hibakezelés: ha nincs érvényes adat Serial.println("Hiba: Nincs válasz a szenzortól."); return; // Kilép a loop elejére } Serial.print("Páratartalom: "); // Kiírás a páratartalomhoz Serial.print(h); Serial.print(" %\t"); Serial.print("Hőmérséklet: "); // Kiírás a hőmérséklethez Serial.print(t); Serial.println(" °C"); // Mértékegység hozzáfűzése és sor lezárása } |
Ezeket az értékeket a soros monitorban figyeltem, és jól követhetők voltak a mért változások – például, ha kézzel melegítettem vagy ráleheltem a szenzorra.
Működési sajátosságok – amire rájöttem
A DHT11 szenzor alapvetően belépő szintű, viszont a mért adatok felbontása és pontossága korlátozott. A gyári adatlap szerint a hőmérsékletet 0-50°C közötti tartományban ±2°C pontossággal képes mérni, míg a páratartalom esetén a működési tartomány 20-80% relatív páratartalom (RH), ±5% pontossággal. A szenzor digitális jelet ad vissza, és a mért értékeket egész számként (integer típusban) továbbítja – tehát nem ad tizedespontos (float típusú) eredményt. A hőmérsékleti mérések például 1°C-os lépésekben, a páratartalom pedig 1% RH-os lépésekben változik.
A szenzor frissítési gyakorisága is korlátozott: a DHT11 csak 1 Hz-es (vagyis 1 másodpercenkénti) frissítési ciklust tesz lehetővé, de a legtöbb ajánlás szerint 2 másodperc várakozást érdemes hagyni a mérések között, hogy elkerüljük a hibás visszajelzéseket.
Ezen kívül figyelembe kell venni az úgynevezett adatbeállási időt is („response time” vagy „typical latency”). Ez az az időtartam, amennyi alatt a szenzor képes követni a környezeti változásokat. A DHT11 esetén a tipikus beállási idő hőmérsékletnél körülbelül 6-10 másodperc, páratartalomnál pedig 5 másodperc körül alakul. Ez azt jelenti, hogy ha a környezeti feltételek hirtelen megváltoznak (például hirtelen párás vagy meleg levegő éri a szenzort), akkor a kiolvasott értékek pár másodperces késéssel követik le a valós állapotot. Ezt a működés során is érdemes figyelembe venni: a mért adatok megbízhatósága nagymértékben függ a környezeti feltételektől – például túl gyors hőmérséklet-változások esetén a szenzor lassabban reagál.
Energiafogyasztása igen alacsony, aktív állapotban körülbelül 0.3 mA, inaktív állapotban pedig 60 µA. Ezzel jól használható elemes rendszerekben is, ahol fontos a minimális áramfelvétel.
A saját tapasztalatom szerint rövidebb (<2 m) kábelezéssel a szenzor stabilan működött, és jól követte a változásokat. A tervem, hogy a mért értékeket OLED kijelzőn is megjelenítsem – erről külön bejegyzésben fogok beszámolni.
DHT11 vs DHT22 – táblázatos összehasonlítás
A következő táblázat bemutatja a DHT11 és DHT22 közti főbb eltéréseket, tapasztalati és gyártói adatok alapján. A táblázat segít eldönteni, melyik szenzor a célszerűbb adott projektben.
| Tulajdonság | DHT11 | DHT22 (AM2302) |
|---|---|---|
| Hőmérséklet tartomány | 0 – 50 °C | -40 – +80 °C |
| Páratartalom tartomány | 20% – 80% RH | 0% – 100% RH |
| Hőmérséklet pontosság | ±2 °C | ±0.5 °C |
| Páratartalom pontosság | ±5% RH | ±2% RH |
| Felbontás | egész szám (int) | tizedespontos (float) |
| Mintavételezési idő | 2 s | 2 s |
| Tápfeszültség | 3 – 5.5 V | 3 – 6 V |
| Ajánlott felhasználás | beltéri, alapmérés | pontos, kültéri is |
| Ár | alacsony | magasabb (~dupla) |
| Kompatibilis könyvtár | DHT.h | DHT.h |
| Adatbeállási idő | ~6-10 s (T), ~5 s (RH) | ~2 s (T), ~2-4 s (RH) |
Összefoglalás – mire jutottam
A KY-015 modulként kapható DHT11 szenzor jó kiindulópont mindazoknak, akik nemcsak működő szenzort keresnek, hanem meg is akarják érteni annak működését, miközben egyszerűen ki is próbálhatják a gyakorlatban. Előnyei közé tartozik az alacsony ár, az Arduino-val való közvetlen kompatibilitás, valamint az egyszerű háromlábú csatlakoztatás. A szenzor használata megismerteti a digitális adatátvitel alapjait és a szenzoralapú mérések működését – ezért kiválóan alkalmas tanulási célokra, illetve prototípusok tesztelésére.
A DHT11 megbízhatóan működött rövid vezetékezés mellett, és jól használható volt olyan alapfeladatokra – mint például páratartalom vagy hőmérséklet követése otthoni eszközökben. A DHT.h könyvtár használata leegyszerűsíti az Arduino-kód írását is.
Fontos ismerni a DHT11 korlátait. A mérések egész értékekben térnek vissza, így precíziós felhasználásra nem alkalmas. A működési tartománya (0-50 °C, 20-80% RH) viszonylag szűk, és az adatbeállási ideje is lassabb – jellemzően 5-10 másodperc, ami lassú környezeti változások mérésére még megfelelő, de gyors reakciót igénylő rendszerekhez már nem elég.
Ha pontosabb mérésre vagy szélsőségesebb környezetre van szükség, akkor érdemes megfontolni a DHT22 használatát. Ez a szenzor tizedespontos mérést biztosít, szélesebb hőmérséklet- és páratartalom-tartományban működik, és gyorsabban is reagál a változásokra. Ezért azonban nagyobb méretű, drágább és érzékenyebb a kommunikáció időzítésére.
Összességében: a DHT11 egy kiváló tanulószenzor, gyakorláshoz, alapadatok méréséhez tökéletes. A DHT22 pedig egy javasolt alternatíva, ha a projekt pontosabb mérést vagy komolyabb megbízhatóságot igényel.
Gyakran ismételt kérdések a KY‑015 (DHT11) szenzorhoz
Kérdés: Hogyan csatlakoztathatom a KY‑015 modult Arduino UNO-hoz?
Válasz: A KY‑015 háromlábú: SIG (DATA) a digitális bemenethez (pl. D2 vagy más tetszőleges láb), VCC a 5 V-ra, és GND a földre. Hosszabb vezeték esetén ajánlott egy külső 10 kΩ-os pull-up ellenállás a stabilitás érdekében.
Kérdés: Milyen pontosságra és mérési tartományra számíthatok a DHT11-től?
Válasz: A gyári adatlap szerint a hőmérséklet 0‑50 °C között mérhető ±2 °C pontossággal, míg a páratartalom 20‑80 % RH ±5 % pontossággal, 1 °C és 1 % felbontással.
Kérdés: Miben különbözik a DHT11 a DHT22-től?
Válasz: A DHT22 szélesebb működési tartományt kínál (‑40 °C – +80 °C; 0–100 % RH), pontossága hőmérsékletben ±0.5 °C, páratartalomban ±2‑5 %. A DHT11 viszont kezdők számára egyszerűbben kezelhető.
Kérdés: Milyen gyakori hibák fordulhatnak elő a DHT11 modullal?
Válasz: Gyakori probléma a pontatlan adat, ha nincs beépített pull-up ellenállás vagy ha hosszú kábel van zavaros környezetben. Járulékos külső 10 kΩ felhúzó ellenállással ezek megelőzhetők.
Kérdés: Milyen mintavételi időintervallum javasolt?
Válasz: A DHT11 maximum 1 Hz frissítést enged, de 2 másodperces várakozást érdemes tartani a mérések között a stabil működéshez.
Kérdés: Hogyan olvassak adatokat a DHT.h könyvtárral Arduino-ban?
Válasz: A DHT objektum létrehozása után a readTemperature() és readHumidity() függvényekkel kérdezheted le az értékeket. Hibakezeléshez használj isnan() feltételt.
Források
– DHT11 Temperature & Humidity Sensor With Arduino [Instructables]
– Adafruit DHT sensor library overview [Adafruit]
– DHT11 mikroszenzor adatlap [Components101]
Kapcsolódó cikkek:
– NTC hőmérő modul tesztelése Arduino-val – stabil analóg mérés alapjai (KY-013)
– Soros plotter (diagram) az Arduino 1.x alatt
– DHT11, DHT22 hőmérséklet- és páraszenzor
– TMP36 hőmérő és az Arduino
– LM35 hőmérő és az Arduino





