30 Aralık 2023 Cumartesi

Arduino ile DHT11 Sıcaklık ve Nem Sensörü

 

DHT11 sıcaklık ve nem sensörü gelişmiş bir sıcaklık ve nem algılayıcıdır. 
Daha önce gördüğümüz LM35 adındaki sıcaklık sensöründen daha gelişmiştir ve daha kesin sonuçlar verir. Ayrıca sıcaklık yanında nem değeri verir ve bu değerleri kütüphanesinden tek bir komut ile görebilirsiniz. Diğer LM35 sensöründe bize doğrudan sıcaklığı vermiyordu. Data ucundan verdiği değeri sıcaklığa çevirmek için bazı formüller uyguluyorduk.

Yukarıda görüldüğü gibi 4 uçlu olan bu DHT11 sensörünün 3 ucunu kullanıyoruz. Bunlar 5V ve GND ile güç besleme ve bir de değerleri okuduğumuz data uçları. Aşağıdaki resimde de sensörün Arduino'ya bağlantısı görülmektedir. Data ucu Arduino'da herhangi bir dijital pine bağlanır. 5V ve GND ise Arduino'daki 5V ve GND pinlerine bağlanmaktadır. Hassas ölçümler için data ucuna bir direnç paralel bağlanabilir.

Gelelim Arduino kodlarına; öncelikle DHT11 sensörünün kütüphanesini Arduino programına eklemek gerekmektedir. DHT11 kütüphanesini buraya tıklayarak indirebilirsiniz. İndirdiğiniz zip dosyasını Arduino programındaki menüden Library Ekle ya da Kütüphane Ekle seçeneği içinde zip kütüphanesi ekle seçeneğinden ekleyerek DHT11'i Arduino'da aktif etmiş oluruz.


Bu işlemden sonra aşağıdaki kodları Arduino'da çalıştırarak seri port ekranında sensörden alınan bilgileri görebiliriz.

#include <dht11.h>
dht11 sensorum;
int spin=13;

void setup() {
Serial.begin(9600);
}

void loop() {
  sensorum.read(spin);
  Serial.print("Sıcaklık=");
  Serial.println((float)sensorum.temperature, 1);
  Serial.print("Nem")
  Serial.println((float)sensorum.humidity, 1);
  delay(300);
}

Kodlar çalıştıktan sonra seri port ekranında aşağıdaki gibi sonuç ya da sonuçlar görünür. Seri port ekranını Arduino karta yükleme yaptıktan sonra Araçlar sekmesinden açabiliriz.

Kodların açıklamalı halleri aşağıdaki gibidir.
#include <dht11.h> //dht11 kütüphanesini ekledik
dht11 sensorum; //sensöre sensorum diye isim verdik
int spin=13; //sensörü 13 numaralı pine bağladık
//bu yüzden bir spin adında değişken tanımladık int ise tam sayı olduğunu belirtir

void setup() {
Serial.begin(9600); //bilgisayar ile arduinonun seri haberleşmesi için komut
}

void loop() {
  sensorum.read(spin); //spin yani 13. pine bağlı olan sensörü okuttuk
  Serial.print("Sıcaklık="); //ekrana sıcaklık yazdı ama alt satıra geçmedi
//print komutu bir alt satıra geçmeden bekler
  Serial.println((float)sensorum.temperature, 1);
//ekrana sensörden okuduğu sıcaklığı 1 ondalıklı sayı olarak yazdı.
//bir alt satıra geçti println komutu sayesinde
//temperature komutu santigrat cinsinden sıcaklığı verir
//fahrenheit ve kelvin olarak da sıcaklık değerleri okunabilir gerekli komutlarla
  Serial.print("Nem=")
  Serial.println((float)sensorum.humidity, 1);
//ekrana nem oranını yazdı humidity komutu sayesinde yazdı.
  delay(300);
}

Hiç yorum yok:

Yorum Gönder