DHT11 ve DHT22; düşük maliyetli dijital sıcaklık ve nem sensörleridir. Havanın durumunu ölçmek için kapasitif nem sensörü ve termistör kullanırlar. Sinyal pininden dijital çıkış verdikleri için analog giriş pinine bağlanmaları gerekmez. DHT11 ve DHT22′ in özellikleri aşağıdaki tabloda karşılaştırılmıştır.
DHT11 | DHT22 | |
Maksimum akım | 2,5mA | 2,5mA |
Nem ölçüm aralığı | %20-%80 arasında ve %5 hassasiyet | %0-%100 arasında ve %2-5 arasında hassasiyet |
Sıcaklık ölçüm aralığı | 0-50°C arasında ±2°C hassasiyet | -40 to 80°C arasında ±2°C hassasiyet |
Ölçüm hızı | 1 Hz frekans (saniyede bir kere) | 0,5 Hz frekans (iki saniyede bir kere) |
Ölçüler | 15,5mm x 12mm x 5,5mm | 15,1mm x 25mm x 7,7mm |
Pin sayısı | 4 pin | 4 pin |
DHT11 ve DHT22 sensörlerin 1 numaralı pini +voltaj girişidir. Her iki sensörün de besleme gerilimi aralığı 3,3V ile 5V arasındadır. Özellikle uzun kablo kullanılan uygulamalarda 5V gerilim ile beslenmesi daha sağlıklı ölçüm yapılmasını sağlar. 2 numaralı pin sinyal çıkışıdır ve Arduino kartının dijital I/O pinlerinin birine takılır. 3 numaralı pin kullanılmaz. 4 numaralı pin ise toprak pinidir.
Malzemeler
- 1 adet Arduino
- 1 adet DHT11 / DHT22 sensör ve 10K direnç (veya DHT11 / DHT22 modülü)
Bağlantı şeması
DHT11 ve DHT22 sensörleri Arduino kartla kullanırken pull-up direnç kullanmak gerekir. Aşağıda DHT11 sensörün bağlantı şeması verilmiştir.
Aşağıda DHT22 sensörün bağlantı şeması verilmiştir.
DHT11 ve DHT22 sensörlerin modül olarak satılan versiyonları da bulunmaktadır. Bu modüllerin VCC, GND ve Sinyal olmak üzere 3 pini vardır. Ancak pin sıralaması üreticiden üreticiye değişmektedir. Aşağıda örnek bir DHT11 sensör modülünün bağlantı şeması vardır.
Aşağıda örnek bir DHT22 sensör modülünün bağlantı şeması vardır.
Kaynak kod
Bu çalışmada, DHT serisi sensörden alınan sıcaklık ve nem bilgisi Arduino seri port ekranında gösterilmiştir. Programın ilk satırında DHT.h sensör kütüphanesi çağrılmıştır. DHT.h kütüphanesini indirmek için tıklayınız. Sıkıştırılmış kütüphaneyi, Belgelerim>Arduino>Libraries klasörüne yükleyerek ekleyebilirsiniz.
#include "DHT.h" //DHT kütüphanesini çağır int DHTPIN 7 // DHT sensörün bağlı olduğu pini tanımla DHT dht(DHTPIN, DHT11); // dht adında sensör nesnesi tanımla. void setup() { Serial.begin(9600); //Seri portu aç dht.begin(); //dht sensörü başlat } void loop() { delay(2000); // Sensörden bir sonraki veriyi almak için 2sn bekle float nem = dht.readHumidity(); // Nem miktarını oku float sicaklik = dht.readTemperature(); //Sıcaklık bilgisini oku // Seri port ekranına okunan değerleri yazdır. Serial.print("Nem: Yüzde "); Serial.print(nem ); Serial.print(" Sıcaklık: "); Serial.print(sicaklik); Serial.println(" C"); }
DHT11 sensör kullanılıyorsa “dht” adlı sensör nesnesi
DHT dht(DHTPIN, DHT11)
şeklinde tanımlanır. Ancak DHT22 kullanılıyorsa
DHT dht(DHTPIN, DHT22)
şeklinde tanımlanır.
float nem = dht.readHumidity()
komutu ile nem bilgisi,
float sicaklik = dht.readTemperature()
komutu ile de sıcaklık bilgisi okunmaktadır.