Nem etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

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

```

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 Kendi Hava Durumu İstasyonunuzu Kurun!

Merhaba sevgili Arduino severler!

Bugün, hepimizin merak ettiği hava durumunu kendi imkanlarımızla ölçebileceğimiz bir proje üzerinde çalışacağız: Arduino ile Hava Durumu İstasyonu! Bu proje sayesinde ortam sıcaklığını, nemini ve hatta hava basıncını ölçebilecek, elde ettiğiniz verileri bir LCD ekranda görüntüleyebileceksiniz. Hem eğlenceli, hem de öğretici bu projeye gelin birlikte göz atalım.

Gerekli Malzemeler

* Arduino UNO (veya benzeri bir Arduino kartı) * BMP180 Barometrik Basınç Sensörü (Sıcaklık ölçümü de yapabilir) * DHT11 veya DHT22 Sıcaklık ve Nem Sensörü * 16x2 LCD Ekran * 10k Potansiyometre (LCD kontrast ayarı için) * Jumper Kablolar * Breadboard

Devre Şeması ve Bağlantılar

Bağlantıları doğru yapmak, projenin sağlıklı çalışması için çok önemli. İşte dikkat etmeniz gerekenler:

  • BMP180 Sensörü Bağlantıları:
    • VCC pini -> Arduino 3.3V pinine
    • GND pini -> Arduino GND pinine
    • SDA pini -> Arduino A4 pinine (SDA)
    • SCL pini -> Arduino A5 pinine (SCL)
  • DHT11 Sensörü Bağlantıları:
    • VCC pini -> Arduino 5V pinine
    • DATA pini -> Arduino Dijital 2 numaralı pinine (Örneğin)
    • GND pini -> Arduino GND pinine
  • LCD Ekran Bağlantıları:
    • VSS pini -> Arduino GND pinine
    • VDD pini -> Arduino 5V pinine
    • VO pini -> 10k Potansiyometrenin orta ucuna
    • RS pini -> Arduino Dijital 12 numaralı pinine (Örneğin)
    • RW pini -> Arduino GND pinine
    • E pini -> Arduino Dijital 11 numaralı pinine (Örneğin)
    • D4 pini -> Arduino Dijital 5 numaralı pinine (Örneğin)
    • D5 pini -> Arduino Dijital 4 numaralı pinine (Örneğin)
    • D6 pini -> Arduino Dijital 3 numaralı pinine (Örneğin)
    • D7 pini -> Arduino Dijital 2 numaralı pinine (Örneğin)
    • A pini (Arka Işık Anot) -> Arduino 5V pinine (100-220 Ohm direnç ile)
    • K pini (Arka Işık Katot) -> Arduino GND pinine

Bu bağlantıları bir breadboard üzerinde kurmak, işinizi oldukça kolaylaştıracaktır. Potansiyometreyi LCD ekranın kontrastını ayarlamak için kullanacağız. Bağlantıları tamamladıktan sonra kod kısmına geçebiliriz.

Arduino Kodu

Aşağıdaki Arduino kodunu kullanarak sensörlerden verileri okuyabilir ve LCD ekranda görüntüleyebilirsiniz. Kod, BMP180 ve DHT11 sensörleri için gerekli kütüphaneleri içermektedir. Bu kütüphaneleri Arduino IDE'nize yüklemeyi unutmayın.


#include <Wire.h>
#include <LiquidCrystal.h> // LCD kütüphanesi
#include <DHT.h>        // DHT sensörü kütüphanesi
#include <BMP180.h>   // BMP180 sensörü kütüphanesi

// LCD pin tanımlamaları
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

// DHT11 pin tanımlaması
#define DHTPIN 7    // DHT11 sensörünün bağlı olduğu pin
#define DHTTYPE DHT11   // DHT11 sensör tipi (DHT22 kullanıyorsanız DHT22 olarak değiştirin)
DHT dht(DHTPIN, DHTTYPE);

// BMP180 nesnesi oluşturma
BMP180 bmp180;

void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2); // LCD'yi başlat
  lcd.print("Hava Durumu");
  delay(2000);
  lcd.clear();

  // BMP180 başlatma
  if (!bmp180.begin()) {
    Serial.println("BMP180 başlatılamadı!");
    lcd.print("BMP180 Hatasi");
    while (1);
  }

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

void loop() {
  // DHT11'den sıcaklık ve nem okuma
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();

  // BMP180'den basınç okuma
  double pressure = bmp180.readPressure();
  double altitude = bmp180.readAltitude(); // deniz seviyesinden yükseklik (isteğe bağlı)

  // Hata kontrolü
  if (isnan(humidity) || isnan(temperature)) {
    Serial.println("DHT sensöründen veri okunamadı!");
    lcd.clear();
    lcd.print("DHT Hatasi");
  } else {
      // LCD'ye verileri yazdırma
      lcd.setCursor(0, 0); // İlk satır, ilk sütun
      lcd.print("Sicaklik: ");
      lcd.print(temperature);
      lcd.print(" C");

      lcd.setCursor(0, 1); // İkinci satır, ilk sütun
      lcd.print("Nem: ");
      lcd.print(humidity);
      lcd.print(" %");
  }

  Serial.print("Sicaklik: ");
  Serial.print(temperature);
  Serial.print(" *C, Nem: ");
  Serial.print(humidity);
  Serial.print(" %, Basinc: ");
  Serial.print(pressure / 100, 2);  // Basıncı hPa cinsinden göster
  Serial.println(" hPa");

  delay(2000);
  lcd.clear();

  lcd.setCursor(0,0);
  lcd.print("Basinc: ");
  lcd.print(pressure / 100, 2);
  lcd.print(" hPa");

  lcd.setCursor(0,1);
  lcd.print("Yukseklik: ");
  lcd.print(altitude);
  lcd.print(" m");
  delay(2000);
  lcd.clear();
}

Bu kodu Arduino IDE'nize kopyalayıp yükleyin. LCD ekranda sıcaklık, nem ve basınç değerlerini görmeye başlayacaksınız.

Sonuç

Tebrikler! Arduino ile kendi hava durumu istasyonunuzu başarıyla kurdunuz. Bu proje, sensörler hakkında bilgi edinmek ve Arduino programlama becerilerinizi geliştirmek için harika bir başlangıç. Daha da ileri gitmek isterseniz, bu verileri bir SD karta kaydedebilir, internete yükleyebilir veya daha gelişmiş bir arayüz oluşturabilirsiniz.

Unutmayın, bu sadece bir başlangıç! Arduino dünyası keşfedilmeyi bekleyen sayısız proje ile dolu. Bir sonraki projede görüşmek üzere!

Etiketler: Arduino, Hava Durumu İstasyonu, Sıcaklık, Nem, Basınç, BMP180, DHT11, LCD, Proje, Elektronik, Kendin Yap

```