DHT11 sıcaklık ve nem ölçmekte kullandığımız bir sensör, ben de DHT11 kullanımları ile ilgili gün içinde birkaç yazı halinde uygulamalar paylaşmayı düşünüyorum. Peki Arduino ve DHT11'i birlikte kullanarak neler yapabiliriz derseniz örneğin evimizdeki sıcaklığı ve nem derecesini ölçmenin ötesinde birden çok odada istasyonlar kurarak sıcaklık farklarını inceleyebilir, bluetooth ile evde telefon ile sıcaklık ve nem düzeylerini takip edebilir, daha da güzeli evde değilken de wi-fi modülü ile evdeki odalardaki sıcaklıkları telefonumuzdan kontrol edebiliriz. Sırayla başlayalım ve bu uygulamanın konusu sadece DHT11 ile sıcaklık değerini ölçmek olsun.
Sıcaklık ölçme aletine bildiğimiz gibi termometre adı veriliyor, biz de DHT11 modülünün sıcaklık sensörü özelliğini kullanarak Arduino ile bir termometre hazırlayacağız, henüz Arduino'ya ekran bağlamak gibi uygulamalar yapmadığımız için şimdilik sıcaklık değerlerini bilgisayarımızdaki terminal üzerinden görüntüleyeceğiz.
1. DHT11 modülünü kullanabilmek için Arduino'ya kütüphane yüklememiz gerekiyor. Bu işlem için Sketch > Include Library > Manage Libraries menüsünü açıyoruz
2. Adafruit tarafından geliştirilen DHT sensor library kütüphanesini yüklüyoruz, ben bu yazıyı yazdığım tarihte güncel sürüm 1.3.9 olduğu için bu sürümü yüklüyorum.
3. Install ekranında dependency olan kütüphaneler ile ilgili bir uyarı alırsanız Install All seçeneğini seçerek gerekli ek kütüphaneleri de kurmuş olursunuz.
4. Kütüphane, kemdi içerisinde hazır örnek kodlarla yüklendiği için bu örnek kodlardan faydalanabiliriz. File > Examples > DHT Sensor Library > DHTtester örnek kodlarını açıyoruz.
5. Çift slash (//) ile başlayan satırlar programlama dillerinde yorum olarak ifade edilirler ve iki amaçla kullanılırlar: bilgilendirme yapmak ve kodu pasit hale getirmek için. Benim kullandığım sıcaklık sensörü DHT11 olduğu için kodları DHT11'i aktive edecek şekilde güncelliyorum. Data pin'i olarak 2. pini kullanacağım için 2 olan DHTPIN değerini değiştirmedim. Nem değerlerini bu örnekte görmek istemediğim için de sadece sıcaklık (celsius olarak) değerlerini korudum.
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
}
void loop() {
delay(5000);
float t = dht.readTemperature();
if (isnan(t)) {
Serial.println(F("Sensor okuma hatası"));
return;
}
Serial.print(F("Sıcaklık: "));
Serial.print(t);
Serial.println(F("°C "));
}
6. Gelelim bağlantılara. DHT11'in üç adet pini var. Bu pinlerden + ucu 5V beslemeye, - ucu GND toprak pinine, out pini de data hattına gidecek. Birer dişi-dişi jumper kablo ile erkek olan çıkışları dişiye dönüştürdükten sonra breadboard kullanmadan doğrudan Arduino Uno'ya bağlıyorum.
7. Artık kodlarımızı upload ederek sıcaklık derecelerimizi ölçebiliriz. Serial monitor'ü açıyoruz ve sıcaklık sensörünü bulunduğu yerden bilgisayarın fan çıkışına doğru yaklaştırıyoruz ve sıcaklığın artıp artmadığını kontrol ediyoruz, her 5 saniyede bir sıcaklığın nasıl arttığını aşağıdaki sıcaklık değerlerinnden de görebilirsiniz.
8. Şimdi kodlarımızı aşağıdaki gibi güncelledikten sonra bir de Serial Plotter aracı ile sıcaklıkm grafiğini kontrol edelim.
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
}
void loop() {
delay(1000);
float t = dht.readTemperature();
if (isnan(t)) {
Serial.println(F("Sensor okuma hatası"));
return;
}
Serial.println(t);
}