Arduino ile Hava Durumu İstasyonu: Sıcaklık, Nem ve Basınç Ölçümü

Arduino ile Hava Durumu İstasyonu: Sıcaklık, Nem ve Basınç Ölçümü

Arduino ile Hava Durumu İstasyonu: Sıcaklık, Nem ve Basınç Ölçümü

Merhaba sevgili Arduino severler!

Bu yazımızda, Arduino kullanarak basit ama etkili bir hava durumu istasyonu kurmayı öğreneceğiz. Bu istasyon sayesinde ortam sıcaklığını, nemini ve basıncını ölçebilecek ve bu verileri bir LCD ekranda görüntüleyebileceğiz. Projemiz özellikle hava durumuyla ilgilenen öğrenciler ve hobi amaçlı projeler geliştirmek isteyenler için ideal. Hadi başlayalım!

Gerekli Malzemeler

  • Arduino Uno (veya uyumlu bir kart)
  • BMP180 veya BMP280 Barometrik Basınç Sensörü (sıcaklık da ölçer)
  • DHT11 veya DHT22 Sıcaklık ve Nem Sensörü
  • 16x2 LCD Ekran
  • I2C LCD Adaptörü (isteğe bağlı, kablolamayı kolaylaştırır)
  • Jumper Kabloları
  • Breadboard (isteğe bağlı, prototip için kullanışlı)

Kablolama

Sensörleri ve LCD ekranı Arduino'ya nasıl bağlayacağımızı adım adım inceleyelim:

DHT11/DHT22 Bağlantısı:

  • DHT11/DHT22 VCC pini -> Arduino 5V
  • DHT11/DHT22 DATA pini -> Arduino Dijital Pin 2 (veya istediğiniz bir dijital pin)
  • DHT11/DHT22 GND pini -> Arduino GND

BMP180/BMP280 Bağlantısı:

Eğer I2C kullanıyorsanız (önerilir):

  • BMP180/BMP280 VIN pini -> Arduino 3.3V veya 5V (sensörün spesifikasyonuna bakın)
  • BMP180/BMP280 GND pini -> Arduino GND
  • BMP180/BMP280 SDA pini -> Arduino A4 (SDA)
  • BMP180/BMP280 SCL pini -> Arduino A5 (SCL)

Eğer SPI kullanıyorsanız, sensörün dökümantasyonuna göre bağlantıları yapın.

LCD Ekran Bağlantısı (I2C ile):

  • LCD VCC pini -> Arduino 5V
  • LCD GND pini -> Arduino GND
  • LCD SDA pini -> Arduino A4 (SDA)
  • LCD SCL pini -> Arduino A5 (SCL)

Arduino Kodu

Şimdi de Arduino kodunu inceleyelim. Bu kod, sensörlerden verileri okuyacak ve LCD ekrana yazdıracak:


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

 #define DHTPIN 2     // DHT veri pini
 #define DHTTYPE DHT11   // DHT modeli (DHT11, DHT22, DHT21)

 DHT dht(DHTPIN, DHTTYPE);
 Adafruit_BMP280 bmp; // I2C

 LiquidCrystal_I2C lcd(0x27, 16, 2);  // LCD adresini kontrol edin, gerekirse değiştirin.

 void setup() {
  Serial.begin(9600);
  lcd.init();
  lcd.backlight();
  dht.begin();
  if (!bmp.begin(0x76)) { // BMP280 adresini kontrol edin, gerekirse değiştirin.
    Serial.println(F("BMP280 bulunamadı, bağlantıları kontrol edin!"));
    while (1) delay(10);
  }
  Serial.println(F("BMP280 bulundu!"));
}

 void loop() {
  // Sensörlerden veri okuma
  float sicaklik = dht.readTemperature();
  float nem = dht.readHumidity();
  float basin = bmp.readPressure() / 100.0F;  // HPa cinsinden basınç

  // Veri kontrolü
  if (isnan(sicaklik) || isnan(nem) || isnan(basin)) {
    Serial.println(F("Sensör okuma hatası!"));
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Hata!");
    delay(2000);
    return;
  }

  // LCD ekrana yazdırma
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Sicaklik: ");
  lcd.print(sicaklik);
  lcd.print(" C");

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

  // Seri port'a yazdırma (isteğe bağlı)
  Serial.print("Sicaklik: ");
  Serial.print(sicaklik);
  Serial.print(" C, Nem: ");
  Serial.print(nem);
  Serial.print(" %, Basin: ");
  Serial.print(basin);
  Serial.println(" hPa");

  delay(2000); // 2 saniyede bir ölçüm yap
 }
 

Kod Açıklaması

  • Kütüphaneler: Gerekli kütüphaneler (`Wire.h`, `LiquidCrystal_I2C.h`, `DHT.h`, `Adafruit_BMP280.h`) eklenir.
  • Pin Tanımları: DHT sensörünün bağlı olduğu pin numarası ve DHT sensörünün modeli tanımlanır.
  • Nesne Oluşturma: DHT, BMP280 ve LCD nesneleri oluşturulur. LCD adresini kontrol etmeyi unutmayın (genellikle 0x27 veya 0x3F).
  • `setup()` Fonksiyonu: Seri port başlatılır, LCD başlatılır ve arka ışığı açılır, DHT sensörü başlatılır ve BMP280 sensörü başlatılır. BMP280 sensörünün bulunup bulunmadığı kontrol edilir.
  • `loop()` Fonksiyonu:
    • Sensörlerden sıcaklık, nem ve basınç değerleri okunur.
    • Okunan verilerin geçerli olup olmadığı kontrol edilir (`isnan()`).
    • Veriler LCD ekrana yazdırılır.
    • Veriler seri porta (isteğe bağlı) yazdırılır.
    • 2 saniye beklenir.

Ek Bilgiler ve İpuçları

  • LCD Adresi: LCD ekranınızın adresini bulmak için I2C tarayıcı kodu kullanabilirsiniz.
  • Sensör Seçimi: DHT11 daha ucuzdur ancak DHT22 daha hassas ölçümler yapar. BMP180 ve BMP280 de benzer şekilde farklı hassasiyetlere sahiptir.
  • Kalibrasyon: Daha doğru sonuçlar için sensörleri kalibre edebilirsiniz.
  • Geliştirme: Bu projeyi daha da geliştirmek için, verileri bir SD karta kaydedebilir, bir web sunucusuna gönderebilir veya bir grafik arayüzü oluşturabilirsiniz.

Umarım bu proje size ilham verir ve Arduino ile hava durumu istasyonu kurma konusunda yardımcı olur. Herhangi bir sorunuz olursa, yorumlarda sormaktan çekinmeyin!

Bol projeli günler!

Etiketler: arduino, hava durumu istasyonu, sıcaklık, nem, basınç, bmp180, bmp280, dht11, dht22, lcd, i2c, sensör, proje, elektronik, hobi

```

0 yorum: