DHT11 ve DHT22 ile Sıcaklık ve Nem Ölçümü

Merhaba arkadaşlar!

Bu yazıda DHT11 ve DHT22 sensörünü kullanarak ortam nemini ve sıcaklığını ölçmeyi sağlayacağız. Uygulamaya geçmeden önce bu iki sensör hakkında bazı bilgiler vermek istiyorum.  Öncelikle DHT11 hakkında bilgi verelim.

DHT11; basit, oldukça düşük maliyetli ve dijital olarak sıcaklık ve nemi ölçen bir sensördür. Ucuz olmasından dolayı en çok kullanılan sensörlerden biri olan DHT11, ortamdaki havayı ölçmek için kapasitif bir nem sensörü ve bir termistör kullanır. Ölçme işleminden elde edilen veriyi üzerinde bulunan veri pinine dijital bir değer olarak gönderir. Kullanımı oldukça basit olan bu sensörden verileri almak için dikkatli bir zamanlama gerekmektedir. Bu sensörü kullanarak ortamdan 2 saniyede bir ölçüm alabilirsiniz. Uygulamanızı yazarken bu süreye uyarak veri okumayı gerçekleştirebilirsiniz.

Bu sensörün özellikleri genel olarak aşağıdaki gibidir:

  • Oldukça düşük maliyetlidir.
  • 3V ve 5V arasındaki bir gerilimle çalışabilir.
  • Veri istendiğinde maksimum 2.5mA akım kullanır.
  • %20 ve %80 arasındaki nem ölçümünde %5’lik bir doğruluk sağlar.
  • 0 ile 50 °C arasındaki sıcaklık ölçümünde 2 °C’lik bir doğruluk sağlar.

DHT22 sensörü DHT11 gibi sıcaklık ve nemi ölçmek için kullanılmaktadır. Ancak bu sensörü kullanarak -40 ile 80 °C arasındaki sıcaklık değerlerini ve %0 ile %100 arasındaki nem ölçümünü yapabilirsiniz. Görüleceği üzere amacınız daha geniş aralıktaki verileri ölçmeyi sağlamak ise bu durumda DHT22 sensörünü kullanmanızı tavsiye ediyoruz. Sıcaklık ölçümünde 0.5 °C, nem ölçümünde ise %2 ile %5 arasında bir doğruluk sağlar. DHT22 sensörü DHT11’e oranla daha hassas ölçüm yapmayı sağlar. Ancak fiyat ve küçük olması bakımından DHT11 daha cazip gelmektedir.

Şimdi her iki sensörünün pinleri hakkında bilgi verelim. Bunun için aşağıda verilen resmi incelemeniz yeterlidir.

 

 

Yukarıda görüleceği üzere her iki sensörün pinleri aynı şekilde kullanılmaktadır. Bu sensörleri yukarıda görülen şekilde alabileceğiniz gibi modül halinde de temin edebilirsiniz. Modül hali de aşağıdaki gibidir.

 

Sensörlerin modül halinde sadece kullanılan pinler bulunmaktadır. Her iki şekilde bunları temin ederek ortam nemini ve sıcaklığını ölçebilirsiniz.

Bu bilgileri verdikten sonra şimdi DHT22 sensörünü kullanarak ortam sıcaklığını ve nemini ölçmeyi sağlayabiliriz. Uygulama için ihtiyacımız olan devre elemanı aşağıdaki gibidir:

  • DHT11 veya DHT22 Sensörü x 1

Sensörü temin etikten sonra devremizi aşağıdaki gibi oluşturalım.

Yukarıda görülen devrede bağlantı işlemi aşağıdaki gibi yapılmıştır.

  • Sensörün soldan ilk bacağı 5V çıkışına bağlandı.
  • Soldan ikinci bacağı A0 Analog giriş pinine bağlandı.
  • Sağdan ilk bacağı ise GND pinine bağlandı.

Devremizin kodu aşağıdaki gibidir.


#include "DHT.h"
#define dht_apin A0
dht DHT;

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

void loop(){
  DHT.read22(dht_apin);
  Serial.print("Nem = ");
  Serial.print(DHT.humidity);
  Serial.print("%  ");

  Serial.print("Sıcaklık = ");
  Serial.print(DHT.temperature);
  Serial.println("°C");
  delay(2000);
}

Kodların açıklaması aşağıdaki gibidir:


#include "DHT.h"
#define dht_apin A0
dht DHT;

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

Öncelikle DHT.h kütüphanesini projenize eklemeniz gerekiyor. Bu kütüphaneyi şu linkten indirebilirsiniz. Sensörden gelen veriyi okumak için A0 pinini bir değişkene atadık ve dht sınıfı için bir nesnesi oluşturduk. Daha sonra setup() metodunda seri iletişimi başlattık.


DHT.read22(dht_apin);

Bu satır ile DHT22 sensöründen sıcaklık ve nem ölçümü istenir. Bunu yazdıktan sonra DHT22 sensörü ortam sıcaklık ve nemini ölçer.


Serial.print("Nem = ");
Serial.print(DHT.humidity);
Serial.print("%  ");

Ortam nemini okumak için DHT.h kütüphanesinde bulunan humidity değişkeni çağrılır. Çünkü okuma isteğinden sonra alınan nem değeri bu değişkene atanır.


Serial.print("Sıcaklık = ");
Serial.print(DHT.temperature);
Serial.println("°C");
delay(2000);

Aynı şekilde okunan sıcaklık değerine erişmek için temperature değişkeni çağrılır. Son olarak okuma işlemini sensörden sürekli olarak alabilmek için 2 saniye kadar beklenir. Bu sayede sensörün ölçme aralığı ile entegre çalışan bir kod yazmış oluruz.

Uygulamayı bu haliyle çalıştırıp yükledikten sonra seri port ekranında aşağıdaki sonuçları görmemiz gerekiyor.