Menu
Sepet

DHT11 Sıcaklık ve Nem Sensörü Kullanımı

PCB rehberleri · Sensör ve modüller

DHT11 Sıcaklık ve Nem Sensörü Kullanımı

Okuma süresi: yaklaşık 4 dkHazırlayan: Elektromall Teknik Ekibi Yayın: 28 Eylül 2026Güncelleme: 20 Ekim 2026

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

ÖzellikDHT11DHT21 (AM2301)
Sıcaklık aralığı / doğruluk0 – 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ük1 °C, %10,1 °C, %0,1
Okuma aralığıEn az 1 saniyeEn az 2 saniye
Besleme3,3 – 5,5 V3,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

Sensör karşılaştırması

SensörSıcaklıkNemArayüzOkuma aralığı
DHT110 – 50 °C, ±2 °C%20 – 90, ±%5Tek hat≥ 1 s
DHT22 / AM2302−40 – 80 °C, ±0,5 °C%0 – 100, ±%2 – 5Tek hat≥ 2 s
AHT10 / AHT20−40 – 85 °C, ±0,3 °C%0 – 100, ±%2I²Chızlı
SHT31−40 – 125 °C, ±0,2 °C%0 – 100, ±%2I²Chızlı
DS18B20 (yalnız sıcaklık)−55 – 125 °C, ±0,5 °C—1-Wire≈ 750 ms

Değerler üretici veri sayfalarındaki tipik değerlerdir; gerçek doğruluk kalibrasyon ve ortama bağlıdır.

Çiğlenme noktası hesabı

Nem ve sıcaklıktan çiğlenme noktasını (havanın yoğuşmaya başladığı sıcaklık) Magnus formülüyle hesaplayabilirsiniz: γ = ln(RH/100) + a·T/(b + T), Td = b·γ / (a − γ); a = 17,62, b = 243,12 °C. 25 °C ve %60 nemde çiğlenme noktası 16,7 °C'dir; yüzey sıcaklığı bunun altına düşerse yoğuşma oluşur. Arduino'da şöyle kodlanır:

float ciglenme(float t, float rh) {
  const float a = 17.62, b = 243.12;
  float g = log(rh / 100.0) + (a * t) / (b + t);
  return (b * g) / (a - g);
}

Gürültüyü azaltmak: ortalama alma

DHT11'in tam sayı çözünürlüğü olduğundan değerler 1 °C adımlarla zıplar. Birkaç ölçümün ortalamasını almak zıplamayı yumuşatır:

float ortSicaklik(DHT &dht, int n) {
  float toplam = 0; int gecerli = 0;
  for (int i = 0; i < n; i++) {
    float s = dht.readTemperature();
    if (!isnan(s)) { toplam += s; gecerli++; }
    delay(1100);                 // DHT11 en az 1 saniye aralık ister
  }
  return gecerli ? toplam / gecerli : NAN;
}

Sorun giderme tablosu

BelirtiOlası nedenÇözüm
Sürekli NaNDATA pini yanlış veya pull-up eksikPin numarasını ve 4,7 – 10 kΩ pull-up direncini kontrol edin
Bazen NaNOkuma aralığı çok kısaOkumalar arasında en az 1 – 2 saniye bekleyin
Değerler hep aynıSensör ısıtılmıyor veya kütüphane eskiKütüphaneyi güncelleyin; sensörün hava akışını sağlayın
Sıcaklık yüksek çıkıyorSensör Arduino veya regülatör yanındaSensörü ısı kaynaklarından uzak yerleştirin
ESP32 ile çalışmıyorBesleme veya pull-up 3,3 V ile uyumsuzSensörü 3,3 V hattına bağlayın; pull-up direncini de 3,3 V hattına çekin

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.

DHT11 kablo uzunluğu ne kadar olabilir?

Tek hatlı protokol uzun kabloda zayıf kalır. Kısa mesafede (1 – 2 m) sorunsuzdur; daha uzun mesafede pull-up değerini düşürmek (4,7 kΩ), bükümlü çift kablo kullanmak veya I²C sensör yerine RS-485 gibi bir hat tercih etmek gerekebilir.

Direnç, kondansatör ve diğer komponentler için ürünlerimize göz atın.

Sensör Modülleri