Bu projemizde Toprak Nem Ölçme Sensörünü kullanarak bitkinin sulamasını nemine göre yapacağız. Röle yardımıyla bu işlem gerçekleşirken topraktaki nemin değerini LCD ekranda gözlemleyebileceğiz. Proje için kullanacağımız malzemeler aşağıda verilmiştir.
Arduino Uno
Röle Modülü
Toprak Nem Sensörü
LCD (16x2)
9V Pil
Pil Başlığı
Jumper Kablolar
10K Potansiyometre
Breadboard
Mini Su Pompası
Devre şemasını aşağıdaki gibi kuruyoruz.
Kodlama kısmına geçiyoruz. İlk önce LCD için kütüphanemizi Arduino IDE'de yüklüyoruz. Aşağıda verilen şekildeki gibi 'Kütüphaneleri Yönet' seçeneğinden LiquidCrystal Kütüphanesini yüklüyoruz. Ve kodumuzu yazmaya başlıyoruz.
Kütüphaneleri ekledikten sonra LCD ekranın, Toprak Nem Sensörünün ve Rölenin pinlerini tanımlıyoruz.
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int role = 13;
int nemsensoru = A5;
Sulama işleminin başlaması için bazı ölçümler yapıldı. Nemli bir ortamda sensörün gösterdiği değer 250-450 arasında bir değer, kuru ortamda ise 950-1000 arasında bir değer vermektedir. Öyleyse 450 sınır değeri olarak belirlenip 450 ve üzeri değerlerde sulama işleminin başlamasını sağlamalıyız.
int sinir_degeri = 450;
void setup() içerisinde Röle ve Toprak Nem Sensörünün giriş veya çıkış işlemlerini bildiriyoruz. LCD ekrana sabit bir yazı yazdırma işlemini kodluyoruz.
void setup() {
pinMode(role,OUTPUT);
pinMode(nemsensoru,INPUT);
digitalWrite(role,HIGH);
Serial.begin(9600);
lcd.begin(16,2);
lcd.print("Otomatik Sulama");
}
void loop() içerisinde Rölenin ne zaman açılıp açılmayacağını if içerisinde sınır değerine bağlıyoruz. Röle açılıp kapanırken LCD ekranda Rölenin durumunu gösteriyoruz.
if(nem <= sinir_degeri)
{
digitalWrite(role,LOW);
delay(1000);
lcd.setCursor(0,1);
lcd.print("Role Kapali");
delay(150);
}
Son olarak LCD ekranda sürekli olarak ölçülen nem değerinin yazılması için kodumuzu yazıyoruz.
lcd.setCursor(0,1);
lcd.print(nem);
Kodların tamamı aşağıda verilmiştir.
#include<Wire.h>
#include<LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int role = 13;
int nemsensoru = A5;
int sinir_degeri = 450;
void setup() {
pinMode(role,OUTPUT);
pinMode(nemsensoru,INPUT);
digitalWrite(role,HIGH);
Serial.begin(9600);
lcd.begin(16,2);
lcd.print("Otomatik Sulama");
}
void loop() {
int nem = analogRead(nemsensoru);
Serial.println(nem);
if(nem <= sinir_degeri)
{
digitalWrite(role,LOW);
delay(1000);
lcd.setCursor(0,1);
lcd.print("Role Kapali");
delay(150);
}
else
{
digitalWrite(role,HIGH);
lcd.setCursor(0,1);
lcd.print("Role acildi");
delay(150);
}
lcd.setCursor(0,1);
lcd.print(nem);
}
Projede LCD ekran çıktıları aşağıdaki gibi olmuştur.
Comments