Arduino ile programlama - 6: DHT 11 ile seri monitörden sıcaklık ve nem bilgisi okuma

Seviye: resimresimresim

Ortam sıcaklığı ve nem bilgisinin ölçülmesi, meteorolojik verilerin toplanmasından ev otomasyonuna kadar birçok uygulamada kullanılabilmektedir. Bu uygulamada sıcaklık ve nem yüzdesini ölçen bir sensor (DHT-11) ile Arduino sensor kartını kullanarak sıcaklık ve nem bilgisinin ekranda (serial monitör) görüntülenmesi sağlayacağız. Serial monitörün kullanımı ile ilgili detaylı bilgiyi buradan edinebilirsiniz.

Gerekli malzemeler

  • Arduino sensor kartı

  • DHT-11 ısı ve nem sensoru

DHT-11 ısı ve nem sensoru

Nem, etrafınızdaki hava ile karışan su buharıdır ve yüzde olarak ölçülür. Yani, eğer nem yüzde 60 ise (ki bu ortalama nemdir), o zaman etrafımızdaki havanın yüzde 60’ı su buharıdır. DHT-11 sensoru dijital olarak sinyal veren bir sıcaklık ve nem algılayıcıdır. İçeriğinde bulunan 8 bit’lik bir mikroişlemci ile algıladığı sıcaklık ve nem bilgisini dijital sinyale dönüştürür. 0 ile 50°C arasında 2°C hata payı ile sıcaklık ölçen birim, 20-90% RH (Relative humidity) arasında 5% RH hata payı ile nem yüzdesini ölçer. DHT-11 modülü, 5V, data ve GND pinleri üzerinden karta bağlanır. Data pini Arduino shield üzerinde bulunan herhangi bir sayısal pine bağlanabilir.
resim

Devre kurulumu

Uygulama için aşağıda verilen şekilde devreyi kuruyoruz.

resim

Programlama

Arduino IDE’ye “Adafruit_Sensor.h” ve “DHT.h” kütüphanelerini ekleyin. Bu kütüphaneleri aşağıdaki linklerden edinebilirsiniz.

Aşağıda yer alan program kodunu Arduino sensor kartına yükleyin.

/* 
DHT sıcaklık ve nem sensörü uygulaması
Kaynak: Adafruit industries
Gerekli kütüphaneleri aşağıdaki linklerden indirebilirsiniz:
DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library
Adafruit Sensor Lib: https://github.com/adafruit/Adafruit_Sensor
*/

#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>

#define DHTPIN 2   // DHT sensörün bağlandığı dijital pin numarası
#define DHTTYPE  DHT11   // DHT sensör tipi

DHT_Unified dht(DHTPIN, DHTTYPE);
void setup() {
  Serial.begin(9600);
  dht.begin(); // sensörü başlatma komutu
}
 
void loop() {
  //Ölçüm aralığındaki gecikme süresi
  delay(2000);

  // Sıcaklık ölçümü ve seri ekrana yazdırma
  sensors_event_t event;
  dht.temperature().getEvent(&event);
  if (isnan(event.temperature)) {
    Serial.println(F("Sicaklik olcumunde hata!"));
  }
  else {
    Serial.print(F("Sicaklik: "));
    Serial.print(event.temperature);
    Serial.println(F("°C"));
  }
  // Nem ölçümü ve seri ekrana yazdırma
  dht.humidity().getEvent(&event);
  if (isnan(event.relative_humidity)) {
    Serial.println(F("Nem olcumunde hata!"));
  }
  else {
    Serial.print(F("Nem: "));
    Serial.print(event.relative_humidity);
    Serial.println(F("%"));
  }
}