Arduino ile Sıcaklık ve Nem Ölçer Yapımı – DHT11 ve LCD Ekran (Malzemeler ve Kodlar)

Arduino ile sıcaklık ve nem ölçer projesi kapak görseli

Proje ne yapıyor?

Odanın sıcaklığını ve nem oranını ölçüp 16×2 LCD ekranda gösteren küçük bir hava istasyonu yapıyoruz. DHT11 sensörü her iki saniyede bir ölçüm yapar; değerler ekranda ve bilgisayardaki Seri Port Ekranı’nda görünür.

  • Yaş grubu: 11 yaş ve üzeri
  • Seviye: Başlangıç / orta
  • Süre: Yaklaşık 45 dakika
  • Bu projede öğrenecekleriniz: Kütüphane kurmak, dijital sensör okumak, I2C LCD ekrana yazı yazmak

Malzeme listesi

MalzemeAdet
Arduino Uno (veya muadili)1
DHT11 sıcaklık ve nem sensörü (3 pinli modül)1
16×2 LCD ekran (I2C modüllü)1
Breadboard1
Erkek-erkek ve erkek-dişi jumper kablo~10
USB kablo1

Devre bağlantıları

Arduino ile DHT11 ve LCD ekranlı sıcaklık ve nem ölçer devre şeması
BileşenBileşen piniArduino pini
DHT11VCC (+)5V
DHT11DATA (OUT)D2
DHT11GND (–)GND
I2C LCDVCC5V
I2C LCDGNDGND
I2C LCDSDAA4
I2C LCDSCLA5

Gerekli kütüphaneler

Arduino IDE’de Araçlar → Kütüphaneleri Yönet menüsünü açıp şu iki kütüphaneyi aratın ve kurun:

  • DHT sensor library (Adafruit) – kurarken “Adafruit Unified Sensor” kütüphanesini de kurmayı kabul edin.
  • LiquidCrystal I2C (Frank de Brabander)

Kodlar

// Arduino Sıcaklık ve Nem Ölçer - ozandamci.com

#include <DHT.h>
#include <LiquidCrystal_I2C.h>

#define DHTPIN 2
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2); // ekran çalışmazsa 0x3F deneyin

void setup() {
  Serial.begin(9600);
  dht.begin();
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Olcum basliyor");
  delay(2000);
}

void loop() {
  float nem = dht.readHumidity();
  float sicaklik = dht.readTemperature();

  lcd.clear();

  if (isnan(nem) || isnan(sicaklik)) {
    lcd.setCursor(0, 0);
    lcd.print("Sensor hatasi!");
    Serial.println("DHT11 okunamadi");
  } else {
    lcd.setCursor(0, 0);
    lcd.print("Sicaklik: ");
    lcd.print(sicaklik, 1);
    lcd.print((char)223); // derece işareti
    lcd.print("C");

    lcd.setCursor(0, 1);
    lcd.print("Nem: %");
    lcd.print(nem, 0);

    Serial.print("Sicaklik: ");
    Serial.print(sicaklik);
    Serial.print(" C  Nem: %");
    Serial.println(nem);
  }

  delay(2000); // DHT11 en fazla 2 saniyede bir ölçüm yapabilir
}

Adım adım yapılışı

  1. Kütüphaneleri kurun. Yukarıdaki iki kütüphaneyi Arduino IDE’ye yükleyin.
  2. DHT11’i bağlayın. Modülün + pinini 5V’a, – pinini GND’ye, OUT/DATA pinini D2’ye bağlayın.
  3. LCD’yi bağlayın. Ekranın arkasındaki I2C modülünün VCC’sini 5V’a, GND’sini GND’ye, SDA’sını A4’e, SCL’sini A5’e bağlayın. 5V ve GND’yi breadboard’un güç hatları üzerinden paylaştırabilirsiniz.
  4. Kodu yükleyin. Kartınızı ve portu seçip Yükle‘ye basın.
  5. Kontrastı ayarlayın. Ekran yanıyor ama yazı görünmüyorsa I2C modülünün üzerindeki mavi potansiyometreyi küçük bir tornavidayla çevirin.
  6. Test edin. Sensöre hafifçe nefes verin; nem değerinin yükseldiğini görmelisiniz.

Sorun giderme

  • Ekranda sadece kareler var veya hiçbir şey yok: Kodda 0x27 yerine 0x3F yazıp tekrar deneyin. Yine olmazsa SDA ve SCL kablolarını kontrol edin.
  • “Sensor hatasi!” yazıyor: DHT11’in DATA pininin D2’ye bağlı olduğundan emin olun. 4 pinli çıplak sensör kullanıyorsanız DATA ile 5V arasına 10 kΩ direnç gerekir.
  • Türkçe karakterler bozuk çıkıyor: LCD ekranlar Türkçe karakterleri desteklemez; ı, ş, ğ yerine i, s, g kullanın.

Kendiniz deneyin

  • Sıcaklık 28 °C’yi geçince yanan bir kırmızı LED ve uyarı sesi ekleyin.
  • Ekranda en yüksek ve en düşük sıcaklığı da gösterin.

Daha fazla proje için: Bu ve benzeri projeleri adım adım anlattığım Arduino Projeleri kitabıma göz atabilirsiniz.

Bir Cevap Yazın