thermostat Arduino Projeleri
schedule 15 dakika okuma

Oda Sıcaklık-Nem Göstergesi

Arduino Uno, DHT11 sensörü ve I2C LCD ile pratik bir sıcaklık ve nem ölçüm cihazı yapalım. İlk elektronik projeniz için mükemmel başlangıç!

memory ARD-UNO-R3
sensors DHT11 Sensörü
display_settings I2C LCD

Giriş

Elektronik dünyasına adım atan herkesin ilk projesi genellikle basit bir LED yakma veya sensör okuma olur. Bu proje tam da bu amaca hizmet ediyor: DHT11 sensöründen aldığımız sıcaklık ve nem değerlerini 16×2 LCD ekranda satır satır görüyoruz. Sensör nedir, LCD'ye yazı yazmak nasıl olur, kabloları doğru bağladım mı… gibi aklınızdaki soruların hepsi bu küçük uygulamada pratik bir karşılık buluyor.

Üstelik LCD'nin I2C arayüzlü olması sayesinde 4-bit/8-bit paralel pin karmaşası yaşamıyoruz; iki kabloyla (SDA/SCL) bütün iletişim yürüyor. Bu yazıda I2C adresi (çoğunlukla 0x27), ilk kütüphane kurulumu, "NaN" sensör hatası gibi sık karşılaşılan konuları da açıklıyoruz.

Öğreneceklerin

  • I2C adres mantığı (0x27/0x3F)
  • Sensör okuma ve "NaN" kontrolü
  • PlatformIO'da bağımlılık ekleme
  • LCD ekran kontrolü
  • Arduino programlama temelleri

Gerekli Parçalar

🖥️

Arduino Uno R3

Ana mikrodenetleyici kartı

🌡️

DHT11 Sensörü

Sıcaklık ve nem ölçümü

📱

16×2 I2C LCD

Veri göstergesi

Bağlantı Şeması

DHT11 Sensörü Bağlantısı:

  • SIG → Arduino D2
  • VCC → Arduino 5V
  • GND → Arduino GND

I2C LCD Bağlantısı:

  • SDA → Arduino A4
  • SCL → Arduino A5
  • VCC → Arduino 5V
  • GND → Arduino GND
⚠️ LCD I2C Adresi: Çoğunlukla 0x27, bazen 0x3F olabilir. Kodu buna göre ayarlayın.

PlatformIO Konfigürasyonu

Bu projeyi Jumper Hub üzerinden PlatformIO ile geliştireceğiz. Yeni bir proje oluşturup platformio.ini dosyasını şu şekilde düzenleyin:

[env:uno]
platform = atmelavr
board = uno
framework = arduino
lib_deps =
  adafruit/Adafruit Unified Sensor @ ^1.1.14
  adafruit/DHT sensor library @ ^1.4.6
  marcoschwartz/LiquidCrystal_I2C @ ^1.1.4

Arduino Kodu

Şimdi ana kod dosyasını (src/main.cpp) oluşturalım:

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

// DHT11 sensörü için pin tanımlaması
#define DHTPIN 2
#define DHTTYPE DHT11

// I2C LCD adresi (çoğunlukla 0x27, bazen 0x3F)
LiquidCrystal_I2C lcd(0x27, 16, 2);
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  // LCD'yi başlat ve backlight'i aç
  lcd.init();
  lcd.backlight();

  // DHT sensörünü başlat
  dht.begin();

  // LCD'ye başlangıç mesajı yaz
  lcd.setCursor(0, 0);
  lcd.print("NexMaker DHT11");
  lcd.setCursor(0, 1);
  lcd.print("Basladi...");
}

void loop() {
  // DHT11'den sıcaklık ve nem değerlerini oku
  float h = dht.readHumidity();     // Nem değeri
  float t = dht.readTemperature();  // Sıcaklık değeri (Celsius)

  // Sensör okuma hatası kontrolü
  if (isnan(h) || isnan(t)) {
    lcd.setCursor(0, 1);
    lcd.print("Sensor hatasi  ");
    delay(800);
    return;
  }

  // LCD'yi temizle ve yeni değerleri yaz
  lcd.setCursor(0, 1);
  lcd.print("T:");
  lcd.print(t, 1);  // 1 ondalık basamak
  lcd.print("C ");
  lcd.print("H:");
  lcd.print(h, 0);  // Tam sayı olarak
  lcd.print("% ");

  // 1 saniye bekle
  delay(1000);
}

Test Etme ve Sorun Giderme

İlk Test

  1. Arduino'yu USB ile bilgisayara bağlayın
  2. Jumper Hub'da kodu derleyin ve yükleyin
  3. Seri monitörü açın (hata mesajları için)
  4. LCD'de "NexMaker DHT11" yazısı görünmeli
  5. Alt satırda sıcaklık ve nem değerleri güncellenmeli

Sık Karşılaşılan Hatalar

LCD Görünmüyor

  • Çözüm: LCD adresini 0x3F olarak değiştirin
  • Neden: Bazı LCD modüllerinde I2C adresi farklı olabilir

DHT11 "Sensor hatasi" Veriyor

  • Çözüm: VCC/GND bağlantılarını kontrol edin
  • Neden: Sensör beslemesi yetersiz olabilir

"NaN" Değerleri

  • Çözüm: Kütüphanelerin doğru yüklendiğinden emin olun
  • Neden: DHT sensör kütüphanesi eksik veya hatalı olabilir

Projenin Çalışma Mantığı

Bu proje temel olarak üç bileşenden oluşur:

1. DHT11 Sensörü

DHT11, dijital bir sıcaklık ve nem sensörüdür. Arduino ile tek kablolu (single-wire) protokol kullanarak iletişim kurar. Sensör, 2 saniyede bir okuma yapabilir ve sıcaklığı 0-50°C arasında ±2°C hassasiyetle, nemi ise 20-90% RH arasında ±5% hassasiyetle ölçer.

2. I2C LCD Ekran

16×2 karakter LCD, I2C protokolü sayesinde sadece 4 kablo ile kontrol edilebilir. Bu da Arduino'nun pinlerini daha verimli kullanmamızı sağlar. Ekran backlight desteği ile karanlık ortamlarda da rahat okunabilir.

3. Arduino Uno

Arduino Uno R3, ATmega328P mikrodenetleyicisi üzerine kurulu geliştirme kartıdır. 14 dijital pin, 6 analog pin ve USB bağlantısı ile hem başlangıç seviyesinde hem de gelişmiş projelerde kullanılabilir.

Genişletme Önerileri

Basit Geliştirmeler

  • Röle Ekle: Sıcaklık belirli bir değerin üstüne çıktığında fan çalıştır
  • LED Göstergesi: Nem durumu için renkli LED'ler ekle
  • Buton Kontrolü: Manuel ölçüm butonu ekle

İleri Seviye Geliştirmeler

  • SD Kart Kayıt: Ölçümleri SD karta kaydet
  • WiFi Entegrasyonu: ESP8266 ile internete bağlan
  • Mobil Uygulama: Bluetooth ile telefon kontrolü

Sonuç

Bu proje, elektronik ve programlama dünyasına adım atmak için mükemmel bir başlangıç noktasıdır. Temel kavramları öğrenirken aynı zamanda çalışır bir cihaz elde edersiniz. Proje, daha karmaşık sistemlerin temelini oluşturacak kadar da genişletilebilir özellikler içerir.

Unutmayın: Elektronik projelerde en önemli şey sabır ve sistemli çalışmaktır. Her bağlantıyı kontrol edin, kütüphaneleri doğru yükleyin ve adım adım ilerleyin. Başarılar! 🚀

✅ Proje Tamamlandı!

Artık kendi oda sıcaklık-nem göstergenizi yaptınız! Bu proje size elektronik ve programlama temellerini öğretecek ve daha karmaşık projelere zemin hazırlayacak.