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

Arduino ile DHT11 kullanımı bir çok projede kullanışlı olabilir. Bu projelere örnek olarak, akıllı ev sistemleri, bitki sulama sistemleri gibi örneklendirebiliriz.

Okurlarımızın, bildirimine dayanarak DHT11 sensörü kullanımında birden fazla alternatif kütüphane olması sebebiyle, doğru çalışan hatta tam anlamıyla çalışan bir kütüphane olmadığını belirttiler. Bu yüzden dht11.h ve DHT.h olmak üzere iki farklı kütüphane için program kodlarını ve devre şemasını paylaşacağız.

Not: Aynı anda birden fazla aynı amaçlı kütüphane kullanımı sebebi ile kartınıza kodu yüklerken sorunla karşılaşabilirsiniz, bu yüzden bu kütüphanelerden yalnızca birini kullanın. Ayrıca daha farklı Arduino Hataları ile karşılaşıyorsanız bu yazımıza göz atabilirsiniz.

DHT11 Sensörü Nedir?

DHT11, düşük maliyetli bir dijital sıcaklık ve nem sensörüdür. Çevreleyen havayı ölçmek için kapasitif bir nem sensörü ve bir termistör kullanır ve veri pinine dijital bir sinyal gönderir (analog giriş pinlerine gerek yoktur). Kullanımı oldukça basittir, ancak verileri almak için dikkatli bir zamanlama gerektirir. Bu sensörün tek dezavantajı, yalnızca 2 saniyede bir yeni veri alabilmenizdir, sensör okumaları 2 saniyeye kadar geç(eski) olabilir. DHT11 veri sayfasına(datasheet) buradan bakabilirsiniz.

DHT22 ile karşılaştırıldığında, bu sensör daha az hassastır, ve daha küçük bir sıcaklık/nem aralığında çalışır, ancak daha küçüktür ve daha ucuzdur.

DHT11 Sensörü Teknik Detayları

  • Düşük maliyetli
  • 3 ila 5V ve I/O kullanımı
  • Dönüşüm sırasında 2.5mA maksimum akım kullanımı (veri istenirken)
  • %5 doğrulukla %20-80 nem okumaları
  • 0-50°C sıcaklık okumaları için iyi ±2°C doğruluk
  • 1 Hz’den fazla olmayan örnekleme hızı (saniyede bir)
  • Gövde boyutu 15,5 mm x 12 mm x 5,5 mm
  • 0.1″ aralıklı 4 pin

Bağıl Nem Nedir?

DHT11 bağıl nemi ölçer. Bağıl nem, havadaki su buharı miktarına karşı havadaki su buharının doyma noktasıdır. Doyma noktasında su buharı yoğunlaşmaya ve çiy oluşturan yüzeylerde birikmeye başlar.

Doyma noktası hava sıcaklığı ile değişir. Soğuk hava doymadan önce daha az su buharı tutabilir ve sıcak hava doymadan önce daha fazla su buharı tutabilir.

Bağıl nemi hesaplamak için formül:

Arduino ile DHT11 Sıcaklık ve Nem Sensörü Kullanımı arduino ile dht11,arduino ile dht11 sıcaklık sensörü kullanımı,arduino ile dht11 kullanımı,arduino sıcaklık sensörü,arduino sıcaklık ve nem sensörü

Bağıl nem yüzde olarak ifade edilir. %100 BN’de yoğuşma meydana gelir ve %0 BN’de hava tamamen kurudur.

DHT11 Sensörü Nem ve Sıcaklığı Nasıl Ölçer?

DHT11, iki elektrot arasındaki elektrik direncini ölçerek su buharını tespit eder. Nem algılama bileşeni, yüzeye uygulanan elektrotlarla nem tutan bir alt tabakadır. Su buharı substrat tarafından emildiğinde, elektrotlar arasındaki iletkenliği artıran substrat tarafından iyonlar salınır. İki elektrot arasındaki direnç değişimi bağıl nem ile orantılıdır. Daha yüksek bağıl nem elektrotlar arasındaki direnci azaltırken, daha düşük bağıl nem elektrotlar arasındaki direnci artırır.

DHT11, yerleşik bir yüzeye monte NTC sıcaklık sensörü (termistör) ile sıcaklığı ölçer. Termistörlerin nasıl çalıştığı ve Arduino’da nasıl kullanılacağı hakkında daha fazla bilgi edinmek bu yazılarımıza göz atın:

Termistör Nedir

Sıcaklık Sensörü

NTC İle Sıcaklık Ölüçümü

Plastik muhafaza çıkarıldığında, alt tabakaya uygulanan elektrotları görebilirsiniz:

Arduino ile DHT11 Sıcaklık ve Nem Sensörü Kullanımı arduino ile dht11,arduino ile dht11 sıcaklık sensörü kullanımı,arduino ile dht11 kullanımı,arduino sıcaklık sensörü,arduino sıcaklık ve nem sensörü

Sensörün arkasına monte edilen bir entegre, direnç ölçümünü bağıl neme dönüştürür. Ayrıca kalibrasyon katsayılarını saklar ve DHT11 ile Arduino arasındaki veri sinyali iletimini kontrol eder:

Arduino ile DHT11 Sıcaklık ve Nem Sensörü Kullanımı arduino ile dht11,arduino ile dht11 sıcaklık sensörü kullanımı,arduino ile dht11 kullanımı,arduino sıcaklık sensörü,arduino sıcaklık ve nem sensörü

DHT11, Arduino’ya veri iletmek için sadece bir sinyal kablosu kullanır. Güç, ayrı 5V ve topraklama kablolarından gelir. Sinyal seviyesinin varsayılan olarak yüksek kalmasını sağlamak için sinyal hattı ile 5V hattı arasında 10K Ohm’luk bir çekme(pull-up) direnci gereklidir.

Karşılaşabileceğiniz DHT11’in iki farklı versiyonu var. Bir türün dört pini vardır ve diğer türün üç pini vardır ve küçük bir PCB’ye monte edilmiştir. PCB’ye monte versiyon daha kullanışlıdır çünkü sinyal hattı için yüzeye monte 10K Ohm çekme direnci içerir.

Arduino ile DHT11 Sıcaklık ve Nem Sensörü Kullanımı arduino ile dht11,arduino ile dht11 sıcaklık sensörü kullanımı,arduino ile dht11 kullanımı,arduino sıcaklık sensörü,arduino sıcaklık ve nem sensörü
Solda 3 pinli ve dirençli modül, sağda 4 pinli modül

Kullanım aşamasında iki farklı kütüphane ile örnek gösteriminde bulunacağız, bu kütüphanelerden birini tercih edip kullanabilirsiniz.

DHT.h Kütüphanesi ile Kullanım

DHT11’i Arduino’ya bağlamak kolaydır, ancak sahip olduğunuz karta göre bağlantılar farklı olabilir.

Devre Şeması

Burada, 10kΩ bir direnç kullanmanız gerekmektedir. 4 pinli, PCB’ye monte edilmemiş modül için bağlantılar:

Arduino ile DHT11 Sıcaklık ve Nem Sensörü Kullanımı arduino ile dht11,arduino ile dht11 sıcaklık sensörü kullanımı,arduino ile dht11 kullanımı,arduino sıcaklık sensörü,arduino sıcaklık ve nem sensörü

Pin 3’ü görmezden gelin, kullanılmaz. Veri hattında orta kuvvette bir yukarı çekme görevi görmesi için VCC ile veri pimi arasına 10 K ohm’luk bir direnç yerleştirmeniz gerekmektedir.

Devre Şeması

3 pinli, PCB’ye monte edilmiş modül için bağlantılar:

Arduino ile DHT11 Sıcaklık ve Nem Sensörü Kullanımı arduino ile dht11,arduino ile dht11 sıcaklık sensörü kullanımı,arduino ile dht11 kullanımı,arduino sıcaklık sensörü,arduino sıcaklık ve nem sensörü

VCC – 3,3 – 5V güce bağlayın. Bazen 3.3V güç yeterli olmaz, bu durumda 5V gücü deneyin.

Program Kodu

Şu anda Arduino IDE yazılımını çalıştırmış olmalısınız. Ardından, Arduino Kütüphane Yöneticisi aracılığıyla yapılabilecek DHT Sensör kütüphanesini kurmak gerekiyor:

Taslak → library ekle → Kitaplıkları Yönet…

Arama alanına “dht” yazın ve “Adafruit’ten DHT sensör kitaplığı” listesine bakın. “Yükle” düğmesini veya önceki bir sürümden “Güncelle”yi tıklayın.

ÖNEMLİ: DHT kütüphanesinin 1.3.0 versiyonundan itibaren, Arduino Kütüphane Yöneticisinde de bulunan Adafruit_Sensor kütüphanesini de kurmanız gerekecektir.

Arduino ile DHT11 Sıcaklık ve Nem Sensörü Kullanımı arduino ile dht11,arduino ile dht11 sıcaklık sensörü kullanımı,arduino ile dht11 kullanımı,arduino sıcaklık sensörü,arduino sıcaklık ve nem sensörü

Şimdi Örnekler→DHT→DHTtester örneğini yükleyin ya da aşağıda ki kodu kullanın.

#include "DHT.h"

#define DHTPIN 2     // veri okuma pini

#define DHTTYPE DHT11   // DHT 11

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  Serial.println(F("DHT11 Testi!"));

  dht.begin();
}

void loop() {
  delay(2000);

  float h = dht.readHumidity();
  float t = dht.readTemperature();
  float f = dht.readTemperature(true);

  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println(F("DHT'den veri okunamadi!"));
    return;
  }

  float hif = dht.computeHeatIndex(f, h);
  float hic = dht.computeHeatIndex(t, h, false);

  Serial.print(F(" Nem: "));
  Serial.print(h);
  Serial.print(F("%  Sıcaklık: "));
  Serial.print(t);
  Serial.print(F("C "));
  Serial.print(f);
  Serial.print(F("F  Isı Indeksi: "));
  Serial.print(hic);
  Serial.print(F("C "));
  Serial.print(hif);
  Serial.println(F("F"));
}

dht11.h Kütüphanesi ile Kullanım

Program Kodu

#include <dht11.h>
#define DHT11PIN 4

dht11 DHT11;

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  Serial.println();

  int okuma = DHT11.read(DHT11PIN);

  Serial.print("Nem (%): ");
  Serial.println((float)DHT11.humidity, 2);

  Serial.print("Sicaklik (C): ");
  Serial.println((float)DHT11.temperature, 2);

  delay(2000);

}

Devre Şeması

Burada, 10kΩ bir direnç kullanmanız gerekmektedir. 4 pinli, PCB’ye monte edilmemiş modül için bağlantılar:

Arduino ile DHT11 Sıcaklık ve Nem Sensörü Kullanımı arduino ile dht11,arduino ile dht11 sıcaklık sensörü kullanımı,arduino ile dht11 kullanımı,arduino sıcaklık sensörü,arduino sıcaklık ve nem sensörü

Pin 3’ü görmezden gelin, kullanılmaz. Veri hattında orta kuvvette bir yukarı çekme görevi görmesi için VCC ile veri pimi arasına 10 K ohm’luk bir direnç yerleştirmeniz gerekmektedir.

Devre Şeması

3 pinli, PCB’ye monte edilmiş modül için bağlantılar:

Arduino ile DHT11 Sıcaklık ve Nem Sensörü Kullanımı arduino ile dht11,arduino ile dht11 sıcaklık sensörü kullanımı,arduino ile dht11 kullanımı,arduino sıcaklık sensörü,arduino sıcaklık ve nem sensörü

VCC – 3,3 – 5V güce bağlayın. Bazen 3.3V güç yeterli olmaz, bu durumda 5V gücü deneyin.