Hava ne kadar sıcak? Peki ya nem oranı ne? Bu iki sorunun cevabını tek bir sensörle veren, Arduino dünyasının en popüler parçasıyla tanışın: DHT11. Dijital termometre ve higrometre yapmak hiç bu kadar kolay olmamıştı.

1. Mavi mi, Beyaz mı? (DHT11 vs DHT22)

Projelerde genellikle iki kardeş sensör kullanılır. Biri ucuz ve basit, diğeri pahalı ve hassas.

DHT11 (Mavi)
  • 💰 Fiyat: Çok Ucuz
  • 🌡️ Sıcaklık: 0-50°C (±2°C Hata)
  • 💧 Nem: %20-%80 (±5% Hata)
  • 🐌 Hız: Saniyede 1 ölçüm (1Hz)
  • 📌 Kullanım: Hobi, Okul Projeleri
DHT22 (Beyaz)
  • 💰 Fiyat: Daha Pahalı
  • 🌡️ Sıcaklık: -40-80°C (±0.5°C Hata)
  • 💧 Nem: %0-%100 (±2% Hata)
  • 🐌 Hız: 2 saniyede 1 ölçüm (0.5Hz)
  • 📌 Kullanım: Kuluçka, Sera, Profesyonel

2. Arduino Bağlantısı

DHT sensörleri dijital sinyal ile çalışır. Piyasada 3 bacaklı (Modül) ve 4 bacaklı (Sensör) halleri bulunur. Biz en yaygın olan 3 Bacaklı Modül üzerinden gideceğiz.

ARDUINO 5V GND D2 DHT11 S (Sinyal) VCC - TEK KABLO BAĞLANTISI
Dikkat: Bazı DHT11 modüllerinde pin sırası farklı olabilir (Sinyal, GND, VCC gibi). Bağlamadan önce modül üzerindeki S, + ve - yazılarını mutlaka okuyun!

3. Kütüphane Olmadan Asla!

DHT sensörleri çok karmaşık bir iletişim protokolü kullanır. Bu kodu sıfırdan yazmak zordur. Neyse ki Adafruit bizim için bir kütüphane yazmış.

🛠️ Kütüphane Nasıl Yüklenir?
  1. Arduino IDE'yi açın.
  2. Menüden Araçlar (Tools) > Kütüphaneleri Yönet (Manage Libraries) yolunu izleyin.
  3. Arama kutusuna DHT sensor library yazın.
  4. Adafruit tarafından geliştirilen kütüphaneyi bulun ve KUR (INSTALL) butonuna basın.
  5. Size "Bağımlılıkları da kurayım mı?" diye sorarsa "Install All" deyin.

4. Yazılım (Kodlama)

Bu kod her 2 saniyede bir sıcaklık ve nemi okuyup Seri Monitör'e yazar.

DHT11_Ornek.ino C++
#include "DHT.h"

// Pin Tanımlaması
#define DHTPIN 2     // Sensörün Sinyal ucu Dijital 2'ye bağlı

// Sensör Tipi Seçimi (Kullandığınız sensörün yorumunu kaldırın)
#define DHTTYPE DHT11   // Mavi olan
//#define DHTTYPE DHT22 // Beyaz olan

// Sensör nesnesini oluştur
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  Serial.println("DHT11 Test Baslatiliyor...");

  dht.begin(); // Sensörü başlat
}

void loop() {
  // Ölçümler arasında 2 saniye bekle (Sensör yavaştır)
  delay(2000);

  // Nem ve Sıcaklık oku
  float nem = dht.readHumidity();
  float sicaklik = dht.readTemperature();

  // Hata kontrolü (Okuma başarısız mı?)
  if (isnan(nem) || isnan(sicaklik)) {
    Serial.println("Sensörden veri okunamadı!");
    return;
  }

  // Sonuçları yazdır
  Serial.print("Nem: %");
  Serial.print(nem);
  Serial.print("  |  Sıcaklık: ");
  Serial.print(sicaklik);
  Serial.println("°C");
}
        

5. "Veri Okunamadı" Hatası mı Alıyorsunuz?

DHT sensörlerinin bacak sıralaması üreticiden üreticiye değişebilir. Sensörün üzerindeki yazılara bakın. Yanlışlıkla GND ve VCC'yi ters bağladıysanız sensör aşırı ısınmış ve yanmış olabilir.

Eğer 3 bacaklı modül değil de, 4 bacaklı "çıplak" sensör kullanıyorsanız; Sinyal ucu ile 5V arasına 10kΩ Pull-up direnci koymanız gerekir. Modüllerde bu direnç zaten üzerindedir.

delay(2000) satırını silmeyin veya küçültmeyin. DHT11 saniyede en fazla 1 kez veri verebilir. Çok sık sorarsanız hata verir.