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→ ArduinoD2VCC→ Arduino5VGND→ ArduinoGND
I2C LCD Bağlantısı:
SDA→ ArduinoA4SCL→ ArduinoA5VCC→ Arduino5VGND→ ArduinoGND
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
- Arduino'yu USB ile bilgisayara bağlayın
- Jumper Hub'da kodu derleyin ve yükleyin
- Seri monitörü açın (hata mesajları için)
- LCD'de "NexMaker DHT11" yazısı görünmeli
- 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.