DHT11 Sıcaklık ve Nem Sensörü Kullanımı
Kısa cevap DHT11 sensörü nasıl kullanılır?
DHT11'in VCC pini 3,3 – 5 V'a, GND pini toprağa, DATA pini 10 kΩ pull-up direnciyle bir dijital pine bağlanır. Arduino'da DHT kütüphanesi kurulur ve readTemperature() ile sıcaklık, readHumidity() ile nem okunur. Sensör en fazla saniyede bir okunmalıdır; ölçüm aralığı 0 – 50 °C ve %20 – 90 nemdir.
DHT11, tek bir veri hattı üzerinden hem sıcaklık hem nem bilgisi veren, ucuz ve kolay kullanılan bir sensördür; ev otomasyonu, sera ve öğrenci projelerinde çok yaygındır. Bu rehberde DHT11'in özelliklerini ve sınırlarını, Arduino ve ESP32 ile bağlantısını, örnek kodu, sık yapılan hataları ve DHT21 (AM2301), AHT10 ve DS18B20 gibi alternatiflerle karşılaştırmasını anlatıyoruz.
DHT11'in özellikleri
| Özellik | DHT11 | DHT21 (AM2301) |
|---|---|---|
| Sıcaklık aralığı / doğruluk | 0 – 50 °C, ±2 °C | −40 – 80 °C, ±0,5 °C |
| Nem aralığı / doğruluk | %20 – 90 RH, ±%5 | %0 – 100 RH, ±%3 |
| Çözünürlük | 1 °C, %1 | 0,1 °C, %0,1 |
| Okuma aralığı | En az 1 saniye | En az 2 saniye |
| Besleme | 3,3 – 5,5 V | 3,3 – 5,5 V |
DHT11 oda koşullarını izlemek için yeterlidir; hassas ölçüm, eksi sıcaklıklar veya dış ortam için DHT21/22 ya da I²C'li AHT10/SHT serisi tercih edilmelidir. Yalnızca sıcaklık gerekiyorsa su geçirmez kılıflı DS18B20 daha doğrudur.
Bağlantı
Çıplak DHT11'in 4 bacağı vardır: VCC, DATA, boş, GND. Modül versiyonlarında 3 pin bulunur ve DATA hattındaki 10 kΩ pull-up direnci kartın üzerinde hazırdır. Çıplak sensör kullanıyorsanız DATA ile VCC arasına 4,7 – 10 kΩ direnç ekleyin. Kablo 1 – 2 metreyi geçiyorsa pull-up değerini düşürmek (4,7 kΩ) ve sensörün yanına 100 nF kondansatör koymak iletişimi güvenilir kılar.
// Kütüphane: "DHT sensor library" (Adafruit) — Kütüphane Yöneticisi'nden kurun
#include <DHT.h>
#define DHTPIN 2 // DATA pini
#define DHTTYPE DHT11 // DHT21 için: DHT21
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
}
void loop() {
delay(2000); // DHT11 en fazla saniyede bir okunur
float nem = dht.readHumidity();
float sic = dht.readTemperature(); // °C
if (isnan(nem) || isnan(sic)) {
Serial.println("Okuma hatası: bağlantıyı kontrol edin");
return;
}
Serial.print("Sıcaklık: "); Serial.print(sic); Serial.print(" °C Nem: %");
Serial.println(nem);
}ESP32'de aynı kod çalışır; DATA için herhangi bir GPIO seçilebilir ve sensör 3,3 V ile beslenebilir.
Doğru ölçüm için ipuçları
- Sensörü regülatör, mikrodenetleyici veya LED gibi ısınan parçalardan uzak tutun; kart üzerindeki ısı sıcaklığı birkaç derece yüksek gösterir.
- Kutunun içinde kullanıyorsanız hava delikleri açın; nem sensörü havayla temas etmelidir.
- Doğrudan güneş ışığı ve yoğuşma (su damlası) ölçümü bozar ve sensöre zarar verir.
- Sensörü birkaç dakikada bir okumak çoğu uygulama için yeterlidir; sık okuma sensörü hafifçe ısıtır.
Bu yazıda kullanılan ürünler
Sıkça sorulan sorular
DHT11 sürekli "nan" veya okuma hatası veriyor, neden?
En sık nedenler: pull-up direncinin olmaması, yanlış pin tanımı, DHT11/DHT22 türünün kodda yanlış seçilmesi ve sensörün saniyede birden sık okunmasıdır. Uzun kablolarda pull-up değerini düşürün.
DHT11 ile DHT22 arasındaki fark nedir?
DHT22 (AM2302) ve benzeri DHT21, daha geniş ölçüm aralığı ve 0,1'lik çözünürlükle daha doğru ölçer. Aynı kütüphaneyle, yalnızca tür tanımını değiştirerek kullanılabilir.
Birden fazla DHT11'i tek pine bağlayabilir miyim?
Hayır; her DHT sensörü ayrı bir veri pini ister. Tek hatta çok sensör gerekiyorsa adreslenebilir DS18B20 veya I²C sensörler kullanın.
Direnç, kondansatör ve diğer komponentler için ürünlerimize göz atın.
Sensör Modülleri