Arkadaşlar merhaba, bu yazımızda arduino ile akıllı ev sistemi nasıl yapılır bunlardan bahseceğiniz Bu proje sayesinde evinizi akıllı hale getirebileceksiniz.

Arduino ile Akıllı Ev Sistemi Projesinin Özellikleri:

  • Yangın Olup Olmadığını LCD’ye Yazdırır.
  • Gaz Kaçağı Olup Olmadığını LCD’ye Yazdırır.
  • Dışarıda Yağmur Yağıp Yağmadığını LCD’ye Yazdırır.
  • Hava Sıcaklığını LCD’ye Yazdırır.
  • Saksılarınızdaki Bitkilerin Nem Oranını LCD’ye Yazdırır Ve Eğer Nemsiz Ve Kuruysa Otomatik Sular.

Malzemeler:

Pin Bağlantıları

  • Yağmur Sensörü: A0
  • Yağmur Ledi: D5
  • Toprak Ve Nem Sensörü Pini: A1
  • Toprak Kırmızı Led: D3
  • Toprak Yeşil Led: D4
  • Toprak Sarı Led: D1
  • Toprak Su Motoru: D6
  • MQ-6 Gaz Sensörü: A2
  • Gaz Sensörü Buzzer: D7
  • Gaz Sensörü Yeşil Led: D9
  • Gaz Sensörü Kırmızı Led: D10
  • LCD Ekran I2C Pinleri:
  • SCL = A5
  • SDA = A4
  • Alev Sensörü: D11
  • Alev Sensörü Yesil Led: D12
  • Alev Sensörü Kırmızı Led: D13
  • Alev Sensörü Buzzer: D8
  • DHT11 Sensörü: D2
  • Boş Pinler;
  • Analog 3 pin ve Dijital 0 Pinleri Boştur
  • Arkadaşlar Alev Sensörünün D0(Dijital 0)pinini Arduinoda Dijital 11 Pine Bağlıyoru
  • Gaz Sensörünün A0(Analog 0)pinini Arduinoda A2 Pinine Bağlıyoruz
  • Toprak Ve Nem Sensörünün A0(Analog 0)pinini Arduinoda A1 Pinine Bağlıyoruz
  • Yağmur Sensörünün A0(Analog 0)pinini Arduinoda A0 Bağlıyoruz
  • DHT11 Sensörünün Sinyal Pinini Arduinoda D2 Pinine Bağlıyoruz
  • LCD Ekranın SCL Pinini Arduinoda A5 Pinine Bağlıyoruz
  • LCD Ekranın SDA Pinini Arduinoda A4 Pinine Bağlıyoruz
  • Bütün GND’ler Ve VCC’ler Ortaktır
  • VCC’ler +5V Bağlanılacak
  • GND’ler GND Pinine Bağlanacak

Devre Şeması ve Kodlar:

Arkadaşlar Devre Şemasını Proteus Ve Fritzing Olarak Paylaşıyorum Proteusta Paylaştığım Devre ile Baskı Devre Çıktısı Alıp Kalıcı Bir Şekilde Kullanabilirsiniz

Proteus Baskı Şeması;

Fritzing Şeması;

/*
* Bu Projeyi Geliştirebilirsiniz
* Yapımcı Bunyamin Oksuz
* Kodu Çalıp Kendiniz Yapmışsınız Gibi Paylaşmayınız
* Github Sayfasında Hangi Pinin Hangi Sensöre Veya Lede Bağlı Olduğu Yazıyor.
* Kullanan arkadaşlara Teşekkürler.
*/
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
#include "DHT.h" // DHT 11 kütüphanesi
#define DHTPIN 2 //DHT Pini
#define DHTTYPE DHT11   // DHT 11 Tanımı
DHT dht(DHTPIN, DHTTYPE);
// Pinleri Tanımlıyoruz
int yagmurPin = A0;
int yagmurledPin = 5;
int nemdeger = 0;
// şuanda boşta olan pin sayısı Dijital: D0 Analog: A3
//Toprak Ve Nem
int Tkirmiziled = 11;
int Tyesilled = 7;
int Tsariled = 1;
// Alev Ve Gaz Sensorlerinin Pinler
int Gkirmiziled1 = 10;
int Gyesilled1 = 9;
int Gbuzzer1 = 4; 
int gazpin = A2;
int Akirmiziled2 = 13;
int Ayesilled2 = 12;
int Abuzzer2 = 8;
int alevpin = 3;
//toprak ve nem sensor
int topsensor = A1;
const int sumotor = 6;
// sensör esik değerleri
int gazsensoresigi = 400;
int yagmurdegeri;
int yagmurEsikdegeri = 800; 
void setup() {
lcd.begin();
// yagmur 
pinMode(yagmurPin, INPUT); // Pin Çıkışları Ve Girişleri
pinMode(yagmurledPin, OUTPUT);
//Toprak Ve Nem
pinMode(topsensor, INPUT);
pinMode(Tkirmiziled, OUTPUT);
pinMode(Tyesilled, OUTPUT);
pinMode(Tsariled, OUTPUT);
pinMode(Tkirmiziled, OUTPUT);
// alev ve gaz 
pinMode(Gkirmiziled1, OUTPUT);  
pinMode(Akirmiziled2, OUTPUT);
pinMode(Gyesilled1, OUTPUT);
pinMode(Ayesilled2, OUTPUT);
pinMode(Gbuzzer1, OUTPUT);
pinMode(Abuzzer2, OUTPUT);
pinMode(gazpin, INPUT);
pinMode(alevpin, INPUT); 
Serial.begin(9600); 
Serial.println("Akıllı Ev Sistemi"); // Seri Port Ekranına Yazılacak Başlıklar
lcd.clear();      
lcd.setCursor(0,0); 
lcd.print("Akilli Ev");
lcd.setCursor(0,1); 
lcd.print("Sistemi");
delay(2000); 
// dht 11 
Serial.println(F("DHT Sensör Testi")); // Sensör Testi
Serial.println("-------------------------");
Serial.println("");
dht.begin();
}
void loop() {
lcd.clear();
// DHT 11 Kısmı Ve Hava Durumu Kısmı
// DHT11 İçin Ondalıklı Değişken Belirleyip Sıcaklığı Ve Nemi Okuyoruz 
float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature(true);
if (isnan(h) || isnan(t) || isnan(f)) { // Eger Dht 11 İçin belirlediğimiz değişkenlerden 1 tanesi okumuyorsa
Serial.println(F("---------------------"));
Serial.println(F("DHT SENSORU CALISMIYOR")); // Seri Ekrana DHT SENSORU ÇALIŞMIYOR Yazdırsın
Serial.println(F("---------------------\n"));
lcd.clear();      
lcd.setCursor(0,0); 
lcd.print("DHT SENSORU");
lcd.setCursor(0,1); 
lcd.print("CALISMIYOR!!!");
delay(3000); 
return;
}
float hif = dht.computeHeatIndex(f, h);
float hic = dht.computeHeatIndex(t, h, false);
// DHT 11 Seri Ekrana Yazdırılıcak Kısım
Serial.print("---------------------");
Serial.print("\nHava Durumu; ");
Serial.print(F("\nNem: %"));
Serial.print(h);
Serial.print(F("\nSıcaklık: "));
Serial.print(t);
Serial.print(F("C "));
Serial.print(f);
Serial.print(F("F \nOrtalama Sıcaklık: ")); 
Serial.print(hic);
Serial.print(F("C "));
Serial.print(hif);
Serial.println(F("F"));
Serial.print("---------------------\n");
delay(1000);
//DHT11 Verilerini LCD ekrana Yansıtıyoruz
lcd.clear();      
lcd.setCursor(0,0);
lcd.print("Sicaklik:"); 
lcd.print(t);
lcd.print("C");
lcd.setCursor(0,1); 
lcd.print("Nem:%");
lcd.print(h);
delay(7000); 
//Yağmur Sensörünün Olduğu Kısım
yagmurdegeri = analogRead(yagmurPin);
if(yagmurdegeri > 980){
Serial.print("---------------------");
Serial.print("\n");
Serial.println("Hava Durumu: ");
delay(500);
lcd.clear();
lcd.setCursor(0,0); 
lcd.print("Hava Durumu:");
lcd.setCursor(0,1); 
lcd.print("Gunesli");
delay(3000);
}
if(yagmurdegeri > 700 && yagmurdegeri <= 979){
Serial.print("\n---------------------"); 
Serial.print("\n");
Serial.println("Hava Durumu: Hafif Sağanak Yağmur");
delay(500);
lcd.clear();
lcd.setCursor(0,0); 
lcd.print("Hava Durumu: Hafif ");
lcd.setCursor(0,1); 
lcd.print("Hafif Saganak");
delay(3000); 
}
if(yagmurdegeri > 351 && yagmurdegeri <= 699){
Serial.print("\n---------------------"); 
Serial.print("\n");
Serial.println("Hava Durumu: Sağanak Yağmur");
delay(500);
lcd.clear();   
lcd.setCursor(0,0); 
lcd.print("Hava Durumu:");
lcd.setCursor(0,1); 
lcd.print("Saganak Yagmur");
delay(3000); }
if(yagmurdegeri > 151 && yagmurdegeri <= 350){
Serial.print("\n---------------------"); 
Serial.print("\n");
Serial.println("Hava Durumu: Şiddetli Sağanak");
delay(500);
lcd.clear();
lcd.setCursor(0,0); 
lcd.print("Hava Durumu:");
lcd.setCursor(0,1); 
lcd.print("Siddetli Saganak");
delay(3000);}
if(150 > yagmurdegeri){
Serial.print("\n---------------------"); 
Serial.print("\n");
Serial.println("Hava Durumu: Gök Gürültülü Fırtınalı ");
delay(500);
lcd.clear();
lcd.setCursor(0,0); 
lcd.print("Hava Durumu: Gok");
lcd.setCursor(0,1); 
lcd.print("Gurultulu Firtinali");
delay(3000);  }
if(yagmurdegeri < yagmurEsikdegeri) //Yagmur Değeri yağmur Eşik Değerinden Küçükse Led'i Yakıcak 
{
digitalWrite(yagmurledPin, HIGH);
}
else // Eger Yagmur Degeri Büyükse Led Sönücek
{
digitalWrite(yagmurledPin, LOW);
}
delay(2000); 
nemdeger = analogRead(A1); // Burası Toprak Ve Nem Sensörünün Olduğu Kısım
if(nemdeger > 901){ 
Serial.print("\n---------------------");
Serial.print("\n");
Serial.println("Durum: Toprak Kuru");
digitalWrite(Tkirmiziled,HIGH);
lcd.setCursor(0,0); 
lcd.print("Durum:");
lcd.setCursor(0,1); 
lcd.print("Toprak Kuru");
delay(2000);
// Toprak Kuru ise Su pompası Çalışacak Ve LCD Ekrana Yazdırılacak
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Su Motoru Acildi");
digitalWrite(sumotor, HIGH);
delay(3000);
//Su Motorunun Kapandığını Yazdırdık Ve Su Motorunu Kapattık
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Su Motoru Kapandi");
delay(500);
digitalWrite(sumotor, LOW);
delay(500);
} 
if(nemdeger > 251 && nemdeger <= 900){
Serial.print("\n---------------------");
Serial.print("\n");
Serial.println("Durum: Toprak Nemli");
digitalWrite(Tyesilled, HIGH);
delay(500);
lcd.clear();
lcd.setCursor(0,0); 
lcd.print("Durum:");
lcd.setCursor(0,1); 
lcd.print("Toprak Nemli");
delay(3000);}
if(250 > nemdeger){
Serial.print("\n---------------------");
Serial.print("\n");
Serial.println("Durum: Toprak Yas");
digitalWrite(Tsariled, HIGH);
delay(500);
lcd.clear();
lcd.setCursor(0,0); 
lcd.print("Durum:");
lcd.setCursor(0,1); 
lcd.print("Toprak Yas"); 
delay(3000);}
// Alev Ve Gaz Sensor
int gazsensor = analogRead(gazpin);
int alevsensor = digitalRead(alevpin);
Serial.println("-------------------------");
Serial.print("Gaz sensör degeri: ");
Serial.println(gazsensor);
Serial.print("alev sensör değeri: ");
Serial.println(alevsensor);
delay(1000);
if (gazsensor > gazsensoresigi  && alevsensor==LOW){
Serial.print("---------------------\n");
Serial.print("Yangın: Yangın Var");
Serial.print("\nGaz: Gaz Kaçağı Var");
digitalWrite(Gkirmiziled1, HIGH);
digitalWrite(Akirmiziled2, HIGH);
digitalWrite(Gbuzzer1, HIGH);
digitalWrite(Abuzzer2, HIGH);
digitalWrite(Ayesilled2, LOW);
digitalWrite(Gyesilled1, LOW);
lcd.clear();  
lcd.setCursor(0,0); 
lcd.print("Gaz Kacagi Var!!");
lcd.setCursor(0,1); 
lcd.print("Yangin Var!!");
delay(5000); 
}
else if (gazsensor > gazsensoresigi)
{
Serial.print("---------------------\n");
Serial.print("Gaz: Gaz Kacağı Var");
digitalWrite(Gkirmiziled1, HIGH);
digitalWrite(Akirmiziled2, LOW);
digitalWrite(Gbuzzer1, HIGH);
digitalWrite(Abuzzer2, LOW);
digitalWrite(Ayesilled2, LOW);
lcd.clear();  
lcd.setCursor(0,0); 
lcd.print("Durum:");
lcd.setCursor(0,1); 
lcd.print("Gaz Kacagi Var!!!");
delay(5000); 
}
else if (alevsensor==LOW){ // yangın VAR
Serial.print("---------------------\n");
Serial.println("Yangın Var\n");
digitalWrite(Akirmiziled2, HIGH);
digitalWrite(Gkirmiziled1, LOW);
digitalWrite(Gbuzzer1, LOW);
digitalWrite(Abuzzer2, HIGH); 
digitalWrite(Ayesilled2, LOW);
digitalWrite(Gyesilled1, LOW);
lcd.clear();  
lcd.setCursor(0,0); 
lcd.print("Durum:");
lcd.setCursor(0,1); 
lcd.print("Yangin Var!!!");
delay(5000);  
}
else
{
Serial.print("---------------------\n");
Serial.print("Gaz: Gaz Kaçağı Yok\n");
Serial.print("Yangın Yok");;
digitalWrite(Gkirmiziled1, LOW);
digitalWrite(Akirmiziled2, LOW);
digitalWrite(Gbuzzer1, LOW);
digitalWrite(Abuzzer2, LOW);
digitalWrite(Gyesilled1, HIGH);   
digitalWrite(Ayesilled2, HIGH);
lcd.clear();  
lcd.setCursor(0,0); 
lcd.print("Gaz Kacagi Yok");
lcd.setCursor(0,1); 
lcd.print("Yangin Yok");
delay(3000); 
}
}

Arkadaşlar Proteus Ve Fritzing Dosyaları;

https://drive.google.com/file/d/1dQP7hGZxF8Q7cr5iUDBAAH933rRZLJLh/view?usp=sharing

Projemizin sonuna geldik. Bu proje hakkında herhangi bir sorunuz olursa bu gönderiye yorum olarak yazabilir veya mail adresimden bana ulaşabilirsiniz.

İyi çalışmalar dilerim.

https://github.com/Bunyaminoksuz

https://www.youtube.com/bunyaminoksuz

1 Yorum

  1. iyi günler projenizi arduno öğrenme amaçlı yapmak istiyoruz elektronik teknolojisi okuyoruz devrede kullandığınız dirençler youtube videosunda farklı sitede farklı fritzing dosyasında farklı gözüküyor anlayamadık. ve devrei breadboard üzerinde kurarak calıstırabilir miyiz şu ana kadar sonuç alamadık temas etmiyor olabilir yardımcı olur musunuz

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz