ArduinoKodlama Etkinlikleri

Arduino ile Akıllı Sera Sistemi

Arduino ve sensörleri ile yapılan akıllı sera sisteminde çatı yağmurun durumuna göre otomatik kapanmaktadır.

Toprağın suya olan ihtiyacına göre toprağı sulamakta ve gerekli olan suyu yağmur suyundan karşılamaktadır.Bunun için yağmur suları bir depoda toplanarak su birikimi yapılmaktadır.

Sisteme bir adet switch anahtar ile manuel kontrol eklenmiştir. Çatının açılıp kapanmasını otomatik kontrolün yanı sıra manuel olarak ta kapatmak mümkündür. Çünkü çatı sadece yağmurun durumuna göre çatıyı kapatmaktadır. Bu dezavantaj olmasın diye oluşabilecek diğer nedenlerin sonucunda da çatıyı kapatmak için bu yöntemi düşünülmüştür. Manuel kontrol ile çatı açıldı veya kapandı ise çatı artık manuel olarak çalışır yani demek istediğim manuel konumda otomatik olarak kapanma açılma yapmaz.Tekrar otomatik olarak açılıp kapanması için manuel switch anahtarı orta konumuna getirmemiz gerekmektedir.

  • Arduino uno
  • Yagmur sensörü
  • Toprak sensörü
  • Dc 200 rpm motor
  • Su pompası
  • Röle
  • Direnç 330 ohm
  • Lcd ekran
  • Buzzer
  • Buton
  • Switch anahtar
  • 7825
  • L293D
malzemeler
sersa devreşeması_bb
sersa devreşemasııı_şema

Toprak ve Yağmur Sensörlerimizi Arduinomuzun anolog girişine bağlıyoruz. Sensörlerimizden okunan 0 ile 255 arası değerlere göre yağmurun yağdığını veya toprağın susuz kaldığını tespit edip motorlarımızı çalıştırıyoruz. Su pompası 12 volt ile çalıştığı için röle yardımı ile kontrol edilmektedir. Bu işlemi transistör ile de yapabilirsiniz. Zaten tek yönlü çalışacağından herhangi bir sorun olmayacaktır. Çatının kontrolü için gerekli motoru L293D motor sürücü yardımı ile kontrol ediyorum.Bunun nedeni ise motorumuz geri ve ileri yönde hareket ederek çatıyı açacak veya kapatacaktır.Çatının açık veya kapalı bilgisini çatının üzerinde bulunan iki adet anahtar sayesinde okuayabiliyoruz. Ve motoru bu bilgilere göre hareket ettiriyoruz. Yani çatı açılana kadar çalış çatı açılınca dur gibi. Sensörlerden okunan değerleri ve o an oluşan olaylarıda lcd ekranda takip edebiliyoruz.

#include <LiquidCrystal.h>


//               (Rs, E, D4, D5, D6 ,D7)
LiquidCrystal lcd(13 , 12, 11 , 10 , 9 , 8);

int motorileri = 2;
int motorhiz = 3;
int motorgeri = 4;
int buzzer = 5;
int led = 7;
int supompasi = 6;
int toprak = 0;
int yagmur = 0;

void setup() {
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.clear();
  lcd.setCursor (0, 0);
  lcd.println("  AKILLI  SERA  ");
  lcd.setCursor (0, 1);
  lcd.println("    PROJESI     ");
  delay(1000);
}
void loop() {

  int topraksensoru = analogRead(A0);
  int kapandi = 0;
  int acildi = 0;
  int manuelac =0;
  int manuelkapa =0;
 manuelac = analogRead(A4);
 manuelkapa = analogRead(A5);

  kapandi = analogRead(A1);
  acildi = analogRead(A2);

  int yagmursensoru = analogRead(A3);
  yagmur = map(abs(yagmursensoru), 0, 1024, 0, 100);
  toprak = map(abs(topraksensoru), 0, 1024, 100, 0);
  lcd.begin(16, 2);
  
  
  
  
  if (acildi > 1000)
  {
  lcd.clear();
  lcd.setCursor (0, 0);
  lcd.print("CATI--YAGMUR =");  lcd.print(yagmur); lcd.println("           ");
  lcd.setCursor (0, 1);
  lcd.print("ACIK--TOPRAK =");  lcd.print(toprak); lcd.println("            ");
  delay (100);
  analogWrite(motorhiz, 0);
  digitalWrite(motorileri, LOW);
  digitalWrite(motorgeri, LOW);
  }
  if (kapandi > 1000)
  {
  lcd.clear();
  lcd.setCursor (0, 0);
  lcd.print("CATI--YAGMUR =");  lcd.print(yagmur); lcd.println("           ");
  lcd.setCursor (0, 1);
  lcd.print("KAPALI-TOPRAK=");  lcd.print(toprak); lcd.println("            ");
  delay (100);
  analogWrite(motorhiz, 0);
  digitalWrite(motorileri, LOW);
  digitalWrite(motorgeri, LOW);
  }
  Serial.println (yagmur);
while (manuelac > 1000)
    {
      while (acildi < 1000)

      { analogWrite(motorhiz, 255);
        digitalWrite(motorileri, LOW);
        digitalWrite(motorgeri, HIGH);
        digitalWrite(buzzer, HIGH);
        delay (50);
       digitalWrite(buzzer, LOW);
        delay (50);
       
     
        Serial.println (acildi);
        lcd.clear();
        lcd.setCursor (0, 0);
        lcd.print("MANUEL OLARAK   ");
        lcd.setCursor (0, 1);
        lcd.print("CATI ACILIYOR  ");
        kapandi = analogRead(A1);
        acildi = analogRead(A2);

      }
      analogWrite(motorhiz, 0);
      digitalWrite(motorileri, LOW);
      digitalWrite(motorgeri, LOW);
      lcd.clear();
      lcd.setCursor (0, 0);
      lcd.print("MANUEL OLARAK   ");
      lcd.setCursor (0, 1);
      lcd.print("CATI ACILDI     ");
      delay (1000);
        digitalWrite(buzzer, LOW);
       
      manuelac = analogRead(A4);
 manuelkapa = analogRead(A5);
    }

    Serial.println (manuelkapa);
    while (manuelkapa > 1000)
    {
      while (kapandi < 1000)
      { analogWrite(motorhiz, 255);
        digitalWrite(motorileri, HIGH);
        digitalWrite(motorgeri, LOW);
        digitalWrite(buzzer, HIGH);
        delay (50);
       digitalWrite(buzzer, LOW);
        delay (50);
       
        Serial.println (kapandi);
        lcd.clear();
        lcd.setCursor (0, 0);
        lcd.print("MANUEL OLARAK   ");
        lcd.setCursor (0, 1);
        lcd.print("CATI KAPANIYOR  ");
        kapandi = analogRead(A1);
        acildi = analogRead(A2);
      }  digitalWrite(buzzer, LOW);
      analogWrite(motorhiz, 0);
      digitalWrite(motorileri, LOW);
      digitalWrite(motorgeri, LOW);
      lcd.clear();
      lcd.setCursor (0, 0);
      lcd.print("MANUEL OLARAK   ");
      lcd.setCursor (0, 1);
      lcd.print("CATI KAPATILDI  ");
      delay (1000);
      manuelac = analogRead(A4);
 manuelkapa = analogRead(A5);
    }
  

    //**************************************************************************************************
 
 while (toprak <= 54)
    { lcd.clear();
      lcd.setCursor (0, 0);
      lcd.print("TOPRAK SULAMASI ");
      lcd.setCursor (0, 1);
      lcd.print("    YAPILIYOR   ");
      digitalWrite(supompasi, HIGH);
      digitalWrite(led, HIGH);
      //    digitalWrite(buzzer, HIGH);
      delay (5000);
      digitalWrite(supompasi, LOW);
      digitalWrite(buzzer, LOW);
      Serial.println (toprak);
     
delay (2000);
      int topraksensoru = analogRead(A0);
      toprak = map(abs(topraksensoru), 0, 1024, 100, 0);
    }
 //**************************************************************************************************
 
  if (yagmur > 50) // yagmur var
  {

    Serial.print ("yagmur var=");
    int kapandi = analogRead(A1);

    while (kapandi == 0)
    {
         lcd.clear();
      lcd.setCursor (0, 0);
      lcd.print("YAGMUR BASLADI. ");
      lcd.setCursor (0, 1);
      lcd.print("CATI KAPANIYOR  ");
     digitalWrite(buzzer, HIGH);
        delay (50);
       digitalWrite(buzzer, LOW);
        delay (50);
      analogWrite(motorhiz, 255);
      digitalWrite(motorileri, HIGH);
      digitalWrite(motorgeri, LOW);

       
    
      kapandi = analogRead(A1);
      acildi = analogRead(A2);
    }


  }
  //**************************************************************************************************
 
  if (yagmur <= 50)//yagnur yok
  { 
    int acildi = analogRead(A2);
  
    while (acildi == 0)
    {
      lcd.clear();
      lcd.setCursor (0, 0);
      lcd.print("YAGMUR DURDU.   ");
      lcd.setCursor (0, 1);
      lcd.print("CATI ACILIYOR   ");
       digitalWrite(buzzer, HIGH);
        delay (50);
       digitalWrite(buzzer, LOW);
        delay (50);
      analogWrite(motorhiz, 255);
      digitalWrite(motorileri, LOW);
      digitalWrite(motorgeri, HIGH);
      //      digitalWrite(buzzer, HIGH);
     
      kapandi = analogRead(A1);
      acildi = analogRead(A2);
    } 
    
  }
  

}
20161224_191811
20161224_191816
20161224_195825
20161224_200103
20161224_195830
20161224_221210
20161224_221215
20161224_230959
20161224_231009
20161224_231022
20161227_124753
20161227_124757
20161227_124801
20161227_150629
20161227_150635
20161227_150654

Kaynak: http://www.robotdevreleri.com

Etiketler
Daha Fazla Göster

Mehmet Ural

Trabzon Yomra İlçe Milli Eğitim Müdürlüğü Fatih Projesi Eğitmeni

İlgili Makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu
Kapalı
Kapalı