Bu projemizde Arduino ve DHT22 sıcaklık ve nem sensörünü kullanarak basit bir havalandırma projesi yapacağız.
Kullanılacak Malzemeler:
Arduino
DHT22 sıcaklık ve nem sensörü
Fan motoru
BC547 transistör
1N4007 diyot
10k direnç
Projeye başlamadan önce, yabancı olduğunuzu düşündüğüm DHT22 sıcaklık ve nem sensörü ile ilgili birkaç bilgi vereceğim. Aşağıda DHT sıcaklık ve nem sensörünün önden görünüşü ve pin isimleri verilmiştir.
DHT22 sıcaklık ve nem sensörü dijital çıkış veren gelişmiş bir sensördür.
DHT serisinin yüksek performanslı modellerindendir.
Çalışma gerilimi 3.3 – 5 V DC dir.
Ölçüm aralığı : Nem : 0 / 100 %RH
Sıcaklık : -40 / 80 c
Hassasiyet: Nem: +/- %3 (Max %5) RH
Sıcaklık: < +/- 1°C
Ölçüm periyodu : 2 sn
Not: Vcc ile çıkış pini arasında pull-up direncine ihtiyaç duyulmaktadır. Bu sebeple 4.7K ile 10K arasında bir direnç ile beraber kullanmanız gerekmektedir.
Ortamdaki sıcaklık ve nem bilgisini okumak ve bu bilgiyi seri monitör ya da LCD de görüntülemek için DHT22 sıcaklık ve nem sensörü ile Arduino kullanabilirsiniz. DHT22 sıcaklık ve nem sensörü yerine yine DHT serisi diğer sensörleri de kullanabilirsiniz. Ama DHT22 serisi
doğruluğu ve ölçüm aralığı çok iyi olan bir sensördür.
Not: DHT22 sıcaklık ve nem sensörünü Arduino ile kullanmak için sensörün kütüphanesini Arduino ya eklememiz gerekmektedir.
Aşağıda devre şeması verilmektedir.
#include "DHT.h" // DHT sıcaklık ve nem sensörü kütüphanesi #define dht_pin 2 // Sensördeki Data pini Arduino nun 2. pinine bağlanacak #define dht_tipi DHT22 // DHT 22 (AM2302) kullanılacak #define fan 4 // Fan Arduino nun 4. pinine bağlanacak int max_nem = 60; int max_sicaklik = 40; DHT dht(dht_pin, dht_tipi); void setup() { pinMode(fan, OUTPUT); Serial.begin(9600); dht.begin(); } void loop() { delay(2000); // Sensörün ölçüm periyodu 2 sn olduğu için gecikme verildi float nem = dht.readHumidity(); // Sensörden okunan nem değeri nem değişkenine atanıyor float sicaklik = dht.readTemperature(); // Sensörden okunan sıcaklık değeri sicaklik değişkenine atanıyor // Sensörün okumasında hata olup olmadığı kontrol ediliyor if (isnan(nem) || isnan(sicaklik)) { Serial.println("DHT sensörün okumasında hata var!"); // Hata olduğu zaman çalışacak komut return; } if(nem > max_nem || sicaklik > max_sicaklik) { digitalWrite(fan, HIGH); // Sıcaklık ya da nemden biri max değerleri aşarsa fan çalıştırılacak } else { digitalWrite(fan, LOW); } Serial.print("Nem: "); Serial.print(nem); Serial.print(" %\t"); Serial.print("Sıcaklık: "); Serial.print(sicaklik); Serial.println(" *C "); }
Kaynak : http://www.electroschematics.com/11291/arduino-dht22-am2302-tutorial-library/
Elinize sağlık hocam. Çok güzel bir yazı olmuş.
Merhaba sensörü sorunsuz bir şekilde 1 hafta kullandım. Sonrasında breadboarddan çıkarıp kablolara lehimledim. Lehimlemeden sonra %40 olan nem değeri %68 lere çıktı, 19 derece olan sıcaklık ise 26 derecelere çıktı. ortama başka termometre koyup ölçüm yaptım ortam 19 derece. Lehimleri söktüm hemen tekrar breadboarda taktım fakat nafile ölçümler yine yüksek çıktı. Acaba bildiğiniz bir kalibrasyon yöntemi var mı yoksa DHT22’im çöp mü oldu artık?