DIY ELECTRONICSEN

← Tüm projeler

LCD'li Termometre

Başlangıç30 dk

Sıcaklığı ve nemi Seri Monitör yerine 16x2 LCD ekranda gösteren, bilgisayara bağlı kalmadan masada durabilen küçük bir cihaz. DHT11 iki saniyede bir okunur; ekranın üst satırında sıcaklık, alt satırında nem görünür. I2C ile yalnızca iki veri kablosuyla ekran sürmeyi, iki kütüphaneyi birlikte kullanmayı ve ekranda bir satırı silmeden güncellemeyi öğretir. Kitaplık Yöneticisi'nden "LiquidCrystal I2C" ve "DHTlib" kütüphaneleri kurulur.

Uygulamada adım adım yap

Gerekli malzemeler

Bağlantı adımları

  1. 1

    Güç sıralarını bağla (5V ve GND)

    Güç sıralarını bağla (5V ve GND)

    Kırmızı jumper kabloyu Arduino'nun güç başlığındaki 5V pinine tak, diğer ucunu breadboard'un alttaki kırmızı çizgili (+) güç sırasına bağla. Siyah kabloyu aynı başlıktaki GND pinlerinden birine tak, diğer ucunu alttaki mavi çizgili (−) güç sırasına bağla. Uno'da tek 5V pini var; bu iki sıra 5V ve GND'yi hem sensöre hem ekrana dağıtacak.

    • Arduino 5V → alttaki kırmızı çizgili (+) sıra (kırmızı kablo)
    • Arduino GND → alttaki mavi çizgili (−) sıra (siyah kablo)
  2. 2

    DHT11'i tak ve bağla

    DHT11'i tak ve bağla

    DHT11 modülünü breadboard'un alt yarısına tak: + pini 6., DATA pini 7., − pini 8. sütuna gelsin. Kısa kırmızı bir kabloyla 6. sütunu alttaki (+) sıraya, kısa siyah bir kabloyla 8. sütunu alttaki (−) sıraya bağla. Sonra mavi kabloyla Arduino'nun 2 numaralı pinini 7. sütuna bağla (DHT_PIN 2). Modülün üzerinde gerekli direnç hazır olduğu için ayrıca direnç gerekmez.

    • DHT11 + pini → 6. sütun, alt yarı
    • DHT11 DATA pini → 7. sütun, alt yarı
    • DHT11 − pini → 8. sütun, alt yarı
    • 6. sütun, alt yarı → alttaki kırmızı çizgili (+) sıra (kırmızı kablo)
    • 8. sütun, alt yarı → alttaki mavi çizgili (−) sıra (siyah kablo)
    • Arduino pin 2 → 7. sütun, alt yarı (mavi kablo)
  3. 3

    LCD ekranı bağla

    LCD ekranı bağla

    Ekranı breadboard'a takma; arkasındaki I2C modülünün dört pinine erkek-dişi jumper kabloların dişi uçlarını tak. VCC'yi alttaki (+) sıraya, GND'yi alttaki (−) sıraya bağla. SDA'yı sarı kabloyla Arduino'nun A4 pinine, SCL'yi yeşil kabloyla A5 pinine bağla. I2C sayesinde ekranın 16 pini yerine yalnızca bu iki veri kablosu yeter; Uno'da aynı SDA ve SCL hatları AREF'in yanındaki iki pinde de vardır.

    • LCD GND → alttaki mavi çizgili (−) sıra (siyah kablo)
    • LCD VCC → alttaki kırmızı çizgili (+) sıra (kırmızı kablo)
    • Arduino A4 → LCD SDA (sarı kablo)
    • Arduino A5 → LCD SCL (yeşil kablo)

Arduino kodu

// Kitaplık Yöneticisi'nden kurulacaklar:
// "LiquidCrystal I2C" ve "DHTlib"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <dht.h>

// DHT11'in veri (DATA) pini
const int DHT_PIN = 2;
// Ölçümler arası süre (ms): DHT11 yavaş
const unsigned long READ_EVERY = 2000;

// I2C adresi çoğunda 0x27, bazısında 0x3F
LiquidCrystal_I2C lcd(0x27, 16, 2);
dht DHT;

void setup() {
  lcd.init();
  lcd.backlight();
  lcd.print("Olculuyor...");
  Serial.begin(9600);
}

void loop() {
  delay(READ_EVERY);
  int chk = DHT.read11(DHT_PIN);

  if (chk != DHTLIB_OK) {
    // Okunamadı: ekranda da söyle
    lcd.setCursor(0, 0);
    lcd.print("Sensor hatasi   ");
    lcd.setCursor(0, 1);
    lcd.print("Kablolara bak   ");
    Serial.println("Sensör okunamadı");
    return;
  }

  // LCD'de Türkçe harf yok: "Sicaklik"
  lcd.setCursor(0, 0);
  lcd.print("Sicaklik: ");
  lcd.print(DHT.temperature, 0);
  // 223: LCD'nin derece işareti
  lcd.print((char)223);
  // Sondaki boşluklar eski yazıyı siler
  lcd.print("C  ");

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

  Serial.print("Sıcaklık: ");
  Serial.print(DHT.temperature, 0);
  Serial.print(" °C  Nem: ");
  Serial.print(DHT.humidity, 0);
  Serial.println(" %");
}

Seri Monitörde göreceğin

SERIAL MONITOR · 9600 BAUD
Sıcaklık: 24 °C  Nem: 45 %
Sıcaklık: 24 °C  Nem: 46 %
Sıcaklık: 25 °C  Nem: 46 %

Bir kablo yerinde değilse

SERIAL MONITOR · 9600 BAUD
Sensör okunamadı

Sonuç

Açılışta ekranda "Olculuyor..." yazar; iki saniye sonra üst satırda sıcaklık (örneğin Sicaklik: 24°C), alt satırda nem (Nem: 45 %) görünür ve iki saniyede bir güncellenir. Sensörü avucuna alırsan sıcaklığın ve nemin yavaşça arttığını görürsün. Ekran yanıyor ama yazı yoksa, I2C modülünün üzerindeki küçük vidayı (kontrast) tornavidayla yazı belirene kadar çevir. Yine de yazı çıkmıyorsa ekranın adresi 0x3F olabilir: koddaki 0x27'yi 0x3F yap. Ekranda "Sensor hatasi" yazıyorsa mavi kablonun pin 2 ile 7. sütun (DATA) arasında olduğuna, 6. ve 8. sütunların doğru sıralara bağlandığına bak.

Uygulamada her bağlantıyı tek tek işaretle, envanterindeki parçalarla eşleştir ve kaldığın yerden devam et.

Uygulamada adım adım yap