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.
- 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
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); } } }
Etiketler: akıllı sera, akıllı sera nasıl yapılır, arduino sera, sera, sera projesi, sera yapımı
Eklenme Tarihi: 6 Şubat 2017
Merhaba bende bu projenin aynısı yapıcam ama ek olarak telefon üzerinden kontrol ve Sıcaklık ölçümü yapıp Sıcaklıga göre fanlar otomatık çalışacak bu konuda bize yardımcı olurmusunuz?
Merhaba.Whatsapp tan yazınız 0553 404 81 14 detayları konuşalım.
Selamun aleyküm hocam ben aynı sistemi yapıcam da yağmur sensörü yerine ışık sensörü kullanıcam kodlarda ve bağlantıda yardımcı olabilirmisiniz
Hocam bunun ares çizimi var mı acaba?
Güncelleme yaptım. Yakında video gelecek o projenin dokümanlarını paylaşacağım
hocam biz sizin maketin benzerinİ yapıyoruzxprojemiz var da bize ulaşabilir misiniz birz yardıma ihtiyavcımız var kodlarla ilgili
Whatsaap tan bana ulaşabilirsiniz.
0553 404 81 14
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.
Daha önce beaglebone blac çalışmadım bilgim yok Kart hakkında.
Hocam bu devre malzemeleri olarak 7825 demişsiniz o nedir
7805 🙂
hocam bu sistemin proteus baskı devresi hakkında ayrıntılı bilgi verebilirmisiniz
hocam saygılar hangi tip role kullandınız
5v satandart röle
hocam yukarıda kodlarda lcd println bolumu yagmurun veya suyun degerini mi gosteriyor
Evet
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.
Merhaba. Projenin anahtar teslim bilgisini alabilir miyim?
Tarafınıza mesaj atılmıştır.
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ı
Malesef sanayide doğrama ustası ile yapıyorum tahta kısmını
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
0553 404 8114 whatsapp tan video atabilirsiniz. Kod benim kullandığım orjinal kod.
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.
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.
Butonlar aslında çatının konumunu belirlemek için gerekli olan swich ler.
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
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
İletişime gecebileceğim mail adresi veya telefon numarası
info@robotdevreleri.com
0553 404 81 14
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.
Ç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
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.
Projede kullandığınız motor 12 V mu bir de devrede kondansatör var mı bir de devreyi 9 V ile mi besliyoruz
6v 200 rpm motor kullanıldı.
Kondansatör yok.
9v 1A adaptör ile beslenir
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…
Thanks, great article.
Thanks