DHT11 Sıcaklık ve Nem Sensörü Kullanımı
DHT11 sensörü ile sıcaklık ve nem değerlerini okuyup Seri Port Ekranı’nda görüntüleyeceğiz.
DHT11 sıcaklık ve nem sensörü, ortamdaki sıcaklık ve nem değerlerini ölçerek dijital pin üzerinden Arduino’ya aktarabilen, kullanımı ve Arduino bağlantısı oldukça basit olan bir sensördür.
DHT11 düşük fiyatıyla birçok Arduino projesi için tercih edilen bir sıcaklık ve nem sensörüdür. Sadece sensör olarak satılabildiği gibi, üzerinde gerekli dirençleri bulunan hazır modül halinde de satılmaktadır.
DHT11 sensörü genellikle 0-50°C aralığında sıcaklık ve %20-80 aralığında nem ölçümü için kullanılır. Temel hobi projeleri için uygundur; yüksek hassasiyet gereken projelerde DHT22 gibi daha hassas sensörler tercih edilebilir.
Bu örnekte DHT11 sensörünün veri pini Arduino’nun 2 numaralı dijital pinine bağlanır. Modül kullanılıyorsa VCC pini 5V’a, GND pini GND hattına ve DATA pini dijital 2 numaralı pine bağlanabilir.
Çıplak DHT11 sensörü kullanılıyorsa veri hattı ile VCC arasına genellikle 4.7K-10K aralığında pull-up direnç bağlanması gerekir. Hazır modüllerde bu direnç çoğunlukla kart üzerinde bulunur.
Kodda DHT11 kütüphanesi kullanılarak sensörden sıcaklık ve nem değerleri okunur. Okunan değerler Seri Port Ekranı’na yazdırılır.
Örnekte nem oranı, sıcaklık değeri, Fahrenheit ve Kelvin dönüşümleri ile çiğ oluşma noktası Seri Port Ekranı’nda gösterilir. Sensör değerleri 2 saniyede bir güncellenir.
Verdiğin koddaki #include <dht11 .h=""> satırı HTML tarafından bozulmuş. Doğru kullanım #include <dht11.h> şeklindedir. Kullanılan kütüphaneye göre hata sabitlerinin isimleri değişebilir.
#include <dht11.h>
int DHT11_pin = 2;
dht11 DHT11_sensor;
void setup() {
Serial.begin(9600);
Serial.println("www.kodlakafa.com");
Serial.println("Teknoloji bu kafada!");
Serial.println("*********************");
}
void loop() {
int chk = DHT11_sensor.read(DHT11_pin);
if (chk == DHTLIB_OK) {
Serial.print("Nem Orani (%): ");
Serial.println((float)DHT11_sensor.humidity, 2);
Serial.print("Sicaklik (Celcius): ");
Serial.println((float)DHT11_sensor.temperature, 2);
Serial.print("Sicaklik (Kelvin): ");
Serial.println(DHT11_sensor.kelvin(), 2);
Serial.print("Sicaklik (Fahrenheit): ");
Serial.println(DHT11_sensor.fahrenheit(), 2);
Serial.print("Cig Olusma Noktasi: ");
Serial.println(DHT11_sensor.dewPoint(), 2);
} else {
Serial.print("Sensor okuma hatasi. Kod: ");
Serial.println(chk);
}
Serial.println("------------------");
delay(2000);
}
#include <dht11.h>
const int DHT11_PIN = 2;
dht11 dht11Sensor;
void setup() {
Serial.begin(9600);
Serial.println("DHT11 Sicaklik ve Nem Sensoru");
Serial.println("-----------------------------");
}
void loop() {
int okumaDurumu = dht11Sensor.read(DHT11_PIN);
if (okumaDurumu == DHTLIB_OK) {
float nem = dht11Sensor.humidity;
float sicaklik = dht11Sensor.temperature;
Serial.print("Nem (%): ");
Serial.println(nem, 2);
Serial.print("Sicaklik (C): ");
Serial.println(sicaklik, 2);
Serial.print("Sicaklik (F): ");
Serial.println(dht11Sensor.fahrenheit(), 2);
Serial.print("Sicaklik (K): ");
Serial.println(dht11Sensor.kelvin(), 2);
Serial.print("Cig Olusma Noktasi: ");
Serial.println(dht11Sensor.dewPoint(), 2);
} else {
Serial.print("DHT11 okunamadi. Hata kodu: ");
Serial.println(okumaDurumu);
}
Serial.println("-----------------------------");
delay(2000);
}
Bu sürümde değişken adları daha okunabilir hale getirildi ve sensör okunamadığında Seri Port Ekranı’na hata kodu yazdırıldı.