Arduino Akıllı Sera Sistemi

Arduino ve sensörleri ile yapacağım 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 ekledim. Çatının açılıp kapanmasını otomatik kontrolün yanı sıra manuel olarak ta kapatmak istedim. Çü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üşündüm. 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.

 

video

malzeme

  • 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

devre

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.

yazilim

#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);
    } 
    
  }
  

}

 

sonhali

 

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

Sosyal Medyada Paylaş Facebook Twitter Google+

Etiketler: , , , , ,
Eklenme Tarihi: 6 Şubat 2017

Konu hakkında yorumunuzu yazın

Arduino Akıllı Sera Sistemi (37 Yorum)

  1. Merhabalar benim yapmak istediğim proje ısı sensörü ve yağmur sensörü içeriyor, amacım ısı sensörü kullanarak değerleri lcd de görüntülemek yağmur sensörü kullanarak kapıyı veya pencereyi kapatmak buna uygun yazılımı yazabilir misiniz acaba, bu arada kullanacağım devre kartı beaglebone black.

  2. Merhaba…Hocam tasarımda kullanılan tahta parçaların boyutlarının listesini öğrenebilir miyim?… Teşekkürler..

    • Tamamen doğaçlama. En boy oranın da bir satndartim yok.Bazen 20×35 bazen 25×40 önemli olan çatı kısmını ayarlamak. Hareket edecek kısım için kanal yapmak.

  3. hocam bu tahtaların kesım vıdeosu veya nasıl monte edıcegımız nelerın gerektıgını anlatan bı vıdeonuz vamrı

  4. Lcd ekranda değerler gösteriliyor ama yapmur sensörünü ıslattığımda 50 ni üzerine geçince yağmur yağıyor çatı kapatılıyor demiyor motor hareket etmiyor kodda mı sıkıntı var acaba sizin kodunuzu kullanıyorum ama nedir sebebi acaba

  5. motor çatıyı kapattığında motorun durması için micro switchin bir bacağınaA1 i diğer bacağına ise + bağlıyorum ama yapmur durdu diyor çatı açılıyor ama anahtarı bastığımda motor durmuyor aynı zamanda dirençin bir bacağını A1 e diğer bacağını – vermemiz gerekiyor ama diğer bacağı – ye bağladığımda lcd de yazı hepten gidiyor aynı zamanda lcd de yazı gidip gidip geliyo yapmur durdu çatı açılıyor diyor sonra toprak ve yapmur değerlerini gösteriyor bu çok kısa aralıklarla oluyor o yüzden motor çok kısa aralıklarla çalışıp duruyor yağmur yağdığında da yapmur yağıyor çatı kapanıyor diyor ama o yazıda çok kısa aralıklarla yanıp yanıp sönüp gidiyor yüne yapmur ve toprak sideğerlerini gösteriyor bu diğer A 2 yi bapladığım anahtar içinde geçerli manuel için bağladığım anahtarda da – yi baplayınca dirence gidiyor

    • A1 den gnd ye direnç çekmelisiniz. Bunu yapınca lcd de yazılar gidiyor sa bağlantıyı kontrol ediniz.

  6. Bu projeyi board üzerinde kurdum tek eksk malzemem catıyı kontroll eden 2 anahtar ama yağmur sensörüne su deydirdiğimde toprak sulaması yapıyor diyor toprak sensörün de ise hiç tepki yok bir de çizimlerinizde s + – kısımları olan malzeme yağmur sensörü olarak kullanmışsınız ve 1 şeklinizde s yi ardunioya diğerinde + ya bağlamışsnız bir de bu projede butonun kullanılma amacınıda açıklarsanız çok sevinirim.

    • Toprak sensörünü vcc gnd data kablosu gider. Bu kabloları sensörün bacaklarına dikkat ederek yerleştirin. Devre semasina buna dikkat etmemişim

    • Yazılım da hangi sensörün hangi pine gideceği devre şemasından daha açık. Yazılıma bakarak düzenleme yapınız

      • Sizin dediğiniz gibi yazılıma göre yaptım bütün bağlantıları gücü verdiğimde yağmur sensörünü ıslattığımda toprak sulaması yapılıyor diyor bazen de sadece çatı manuel olarak açılıyor diyor buzze çalışıyor ama motor hareket etmiyor şemaya göre bütün bağıntıları yaptım devrenin sensölere göre açılması manuel olarak kontrol edilmesi gereken switchide lcd nin 3.bacağına bağladım bir yerde eksikler var ama bir türlü anlamadım.7805 e bağladuğınız harici olarak + – nedir?

        • Yazılımda,

          int topraksensoru = analogRead(A0);
          manuelac = analogRead(A4);
          manuelkapa = analogRead(A5);
          kapandi = analogRead(A1);
          acildi = analogRead(A2);
          int yagmursensoru = analogRead(A3);
          Dikkat ederseniz
          toprak A0 pininde
          Yagmur A3 pininde
          Catı aç A4
          Çatı kapat A5
          Kapandı bilgisi için eklenen sewich A1
          Açıldı bilgisi icin eklenen siwich A3 te tanimlı.
          Manuel kontrolün lcd 3. digital pinde yeri yok ki zaten o pinde lcdnin parlaklığını ayarlamak için 10k eklidir.
          7805 dışardan besleme yapılıyor

  7. Merhaba bende bu projenin aynısı yapcam ama ek olarak İnternet üzerinden kontrol ve Sıcaklık ölçüp Sıcaklıga göre fanları otomatık çalışcak bu konuda bize yardımcı olurmusunuz? veya sistemi hazır olarak alabiliyormuyuz maketsiz

  8. Röle olsun yeter modül olayı sizin tercihiniz.
    Röle sadece su motorunu açıp kapatmada kullanılacak .
    7805 ile su motoru icin 5v elde ettik.Ve bu 5v tu röle ile kontrol ederek su motorunu aktif aktif.
    Yağmur Sensörü direkt bağlanacak
    Toprak sensoru modülü ile bağlanacak.

  9. Çok sağolun cevaplarınız için peki rölemiz Arduino 5V DC Röle Modül ü olmalı bir de çizimleriniz de yağmur sensörü ve kontrol modülü demişsiniz ama malzemeleri alınca kontrol modülü toprak sensörü ile geliyor bunuda açıklayabilirmisiniz bir sorum daha olucak çizimlerinizde röle ile 7825 e güç gibi bir şey bağlamışsınız o nedir

  10. 6v motor yerine 12 v’luk motor kullanılabilir mi
    ardunio’yo kaç v ile besliyoruz 12 v’luk adaptörlemi

    • 12v motor da kullanılabilir ama 7805 i devreden kaldırmak lazım. Ve arduinoyu 12v adaptör ile beslemek gerekir.
      Şu an ki hali ile 9v 1A adaptör ile çalıştırmaktayım.

  11. Projede kullandığınız motor 12 V mu bir de devrede kondansatör var mı bir de devreyi 9 V ile mi besliyoruz

  12. Hocam bu paylaşım için çok teşekkür ediyorum. sizden bir konuda bir yardım isteyecektim. ben de akıllı sera yapıyorum ama bir konuda çıkmaza girdim. sizin kullandığınız gibi bende yağmur sensörü kullanacağım. yağmur yağmadığında bir DC motor yardımıyla çatıda bulunan pencereye benzer bir sistem açıklık aralığı 10cm olana kadar açılacak ve yeterli süreden sonra duracak. Çatı açıkken yağmur yağdığında ise bu sistem tam tersi durumda yine aynı yeterli süre sonunda kapanacak. YADA yine aynı yağmur yağmadığında bu sistem açılacak ve 10cm sonra sistemin üzerinde duran sınır anahtarına( Bu Bir Tür Buton) değdiğinde bu anahtar aktif olacak ve açılma işlemiDC motor) duracak ve çatı açıkken yağmur yağarsa aynı şekilde kapanacak. Bu konuda sizden Kod yardımı istiyorum. Şimdiden teşekkürler…

HOŞ GELDİNİZ

Youtube kanalıma Abone Olabilirsiniz.