34,0569$% 0.21
37,6649€% -0.04
44,6429£% -0.08
2.738,15%0,37
2.503,16%0,24
9.699,56%-0,73
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.
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); } } }
Kaynak: http://www.robotdevreleri.com
CodY – Kodlama Oyunu şimdi PlayStore’da
cok iyi