Arduino ile Sıcaklık ve Nem Ölçümü (DHT11 – DHT22)

Arduino ile Sıcaklık ve Nem Ölçümü (DHT11 – DHT22)

Arduino ile Sıcaklık ve Nem Ölçümü (DHT11 – DHT22)

Elektronik projelerde ortam koşullarını ölçmek, özellikle akıllı sistemlerde oldukça önemlidir.
Bir serada sıcaklık ve nemi kontrol etmek, bir hava istasyonunda verileri kaydetmek veya IoT projesinde çevresel verileri analiz etmek istiyorsan, DHT11 ve DHT22 sensörleri senin için ideal seçeneklerdir.
Bu yazıda, Arduino ile DHT sensörleri kullanarak sıcaklık ve nem ölçümünü adım adım öğreneceksin.
Bağlantı şeması, kod örnekleri, farklar ve proje fikirleriyle tam bir rehber olacak.

DHT Sensörü Nedir?

DHT sensörleri, sıcaklık ve bağıl nemi ölçen dijital sensörlerdir.
En yaygın iki modeli şunlardır:

  • DHT11: Ekonomik, giriş seviyesi sensör
  • DHT22: Daha hassas, geniş ölçüm aralıklı model

Bu sensörler, dijital veri çıkışı verirler ve Arduino tarafından kolayca okunabilir.

DHT11 vs DHT22 Karşılaştırma

DHT Sensör Karşılaştırma Tablosu
----------------------------------------
Özellik                | DHT11                | DHT22
----------------------------------------
Sıcaklık Aralığı       | 0°C – 50°C           | -40°C – 80°C
Nem Aralığı            | 20% – 90% RH         | 0% – 100% RH
Doğruluk (Sıcaklık)    | ±2°C                 | ±0.5°C
Yenileme Süresi        | 1 saniye             | 0.5 saniye
Çalışma Gerilimi       | 3.3V – 5V            | 3.3V – 6V
Fiyat / Ulaşılabilirlik| Daha ucuz ve yaygın  | Biraz pahalı ama daha hassas
----------------------------------------

Sonuç:
- DHT11 hobi projeleri için yeterlidir.
- DHT22 daha hassas ve profesyonel projelerde tercih edilir.
----------------------------------------

Gerekli Malzemeler

  • Arduino UNO / Nano / Mega
  • DHT11 veya DHT22 sensör
  • 10KΩ direnç
  • Breadboard
  • Jumper kablolar
  • USB kablosu

DHT Sensörü Pin Bağlantısı

DHT Sensörü Pin Bağlantısı
----------------------------------------
1. VCC  →  5V veya 3.3V
2. DATA →  Arduino Dijital Pin 2
3. NC   →  Bağlanmaz
4. GND  →  Arduino GND
----------------------------------------
Not: VCC ve DATA arasında 10KΩ direnç kullanılmalıdır (pull-up direnci).
----------------------------------------

DHT Kütüphanesi Kurulumu

Arduino IDE üzerinden Adafruit DHT Sensor Library ve Adafruit Unified Sensor kütüphanelerini kurmalısın:

  1. Arduino IDE → Sketch → Include Library → Manage Libraries
  2. Arama kutusuna “DHT sensor library” yaz
  3. “by Adafruit” olanı yükle
  4. Ardından “Adafruit Unified Sensor” kütüphanesini de yükle

Temel Kod (DHT11)

#include "DHT.h"

#define DHTPIN 2
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  Serial.println("DHT Sensör Başlatılıyor...");
  dht.begin();
}

void loop() {
  float nem = dht.readHumidity();
  float sicaklik = dht.readTemperature();

  if (isnan(nem) || isnan(sicaklik)) {
    Serial.println("Sensör okunamadı!");
    return;
  }

  Serial.print("Nem: ");
  Serial.print(nem);
  Serial.print(" %  |  Sıcaklık: ");
  Serial.print(sicaklik);
  Serial.println(" °C");

  delay(2000);
}

DHT22 İçin Kod

DHT22 kullanıyorsan tek fark tanım kısmıdır:

#define DHTTYPE DHT22

Verileri LCD Ekranda Gösterme

#include <LiquidCrystal.h>
#include "DHT.h"

#define DHTPIN 2
#define DHTTYPE DHT22

LiquidCrystal lcd(12, 11, 5, 4, 3, 6);
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  lcd.begin(16, 2);
  dht.begin();
}

void loop() {
  float nem = dht.readHumidity();
  float sicaklik = dht.readTemperature();

  lcd.setCursor(0, 0);
  lcd.print("Sicaklik: ");
  lcd.print(sicaklik);
  lcd.print(" C");

  lcd.setCursor(0, 1);
  lcd.print("Nem: ");
  lcd.print(nem);
  lcd.print(" %");

  delay(2000);
}

LED Uyarı Sistemi

#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT22
#define LED 8

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  pinMode(LED, OUTPUT);
  dht.begin();
}

void loop() {
  float sicaklik = dht.readTemperature();
  float nem = dht.readHumidity();

  if (sicaklik > 30 || nem > 80) {
    digitalWrite(LED, HIGH);
  } else {
    digitalWrite(LED, LOW);
  }

  delay(2000);
}

Seri Plotter ile Görselleştirme

Serial.print(sicaklik);
Serial.print(",");
Serial.println(nem);

Bu şekilde Arduino IDE → Tools → Serial Plotter ekranında sıcaklık ve nem değişimini grafik olarak izleyebilirsin.

Röle Kontrollü Fan

#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT22
#define ROLE 7

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  pinMode(ROLE, OUTPUT);
  dht.begin();
}

void loop() {
  float sicaklik = dht.readTemperature();

  if (sicaklik > 28) {
    digitalWrite(ROLE, HIGH);
  } else {
    digitalWrite(ROLE, LOW);
  }

  delay(2000);
}

Kalibrasyon

Sensörlerde küçük farklar olabilir.
Gerçek bir termometreyle karşılaştırarak farkı kodla telafi edebilirsin:

sicaklik = sicaklik + 1.5;

Sık Yapılan Hatalar

Yaygın DHT Sensör Hataları
----------------------------------------
1. "Nan" değeri dönüyor → Pin veya kütüphane hatalı.
2. "0°C" sabit → VCC–DATA arasında direnç yok.
3. "Sensör çalışmıyor" → Besleme hatalı (3.3V yerine 5V).
4. "Veri geç geliyor" → delay çok kısa (min 2 saniye olmalı).
5. "Nem sürekli değişiyor" → Breadboard bağlantısı gevşek.
----------------------------------------

Proje Fikirleri

  1. LCD ekranlı sıcaklık-nem göstergesi
  2. Bluetooth ile mobil uygulamaya veri aktarımı
  3. Wi-Fi tabanlı hava istasyonu (ESP8266)
  4. Nem eşiğine göre otomatik fan veya nemlendirici
  5. SD kartlı veri kaydedici

DHT11 ve DHT22 Performans Farkı

DHT22, DHT11’e göre:

  • Daha hızlı tepki verir
  • Daha hassas ölçüm yapar
  • Düşük sıcaklıklarda çalışabilir

Ancak DHT11 düşük maliyetli eğitim projeleri için idealdir.

Alternatif Kütüphaneler

  • SimpleDHT
  • DHTesp (ESP32/8266 için)
  • Robojax DHT Library

Sonuç

Arduino + DHT11 / DHT22 sensörleri ile sıcaklık ve nem ölçmek oldukça basittir.
Yalnızca birkaç bağlantı ve kısa bir kod bloğu ile çevre verilerini güvenilir şekilde toplayabilirsin.
Bu rehberde öğrendin:

  • DHT sensör farklarını
  • Arduino bağlantılarını
  • Kodlamayı
  • Hataları ve çözümleri

Artık kendi akıllı hava durumu istasyonunu oluşturmak için hazırsın.