3 min read

Arduino Uygulamaları-4 Toprak Nemi Algılayan Alarm Devresi

Arduino Uygulamaları-4 Toprak Nemi Algılayan Alarm Devresi

Toprak nem sensörü, toprağın içerisindeki nem miktarını veya ufak ölçekte bir sıvının seviyesini ölçmek için kullanabileceğiniz bir sensördür. Nem ölçer problar ölçüm yapılacak ortama batırılarak kullanılır. Toprağın veya içine batırılan sıvının meydana getirdiği dirençten dolayı, prob uçları arasında bir gerilim farkı oluşur. Bu gerilim farkının büyüklüğüne göre de nem miktarı ölçülebilir. Topraktaki nem oranı arttıkça iletkenliği de artmaktadır. Kart üzerinde yer alan trimpot sayesinde hassasiyet ayarı yapılabilmektedir. Arduino veya farklı mikrodenetleyiciler ile rahatlıkla kullanılabilir.


-->Malzeme listemiz;

1-Arduino Uno Kart

2-HL-69 higrometre toprak nem sensörü modülü

3-Jumper bağlantı kabloları

4-Buzzer

5-LED


-->Devrenin Montajı

Sensörün analog çıkışını Arduino Uno'daki A0 analog girişine takıyoruz. Sırasıyla sensörün Vcc çıkışını Arduino 5V bacağına ve Gnd ucunuda yine Gnd bacağına takıyoruz.

Buzzer'ın kırmızı kablosunu Digital 11 bacağına ve siyah kablosunu da GND bacağına taktık.

LED'inde uzun olan (anod+) bacağını  Digital 13 bacağına; kısa (katot-) olan bacağınıda yine Arduino üzerindeki GND'ye takıyoruz.

-->Nasıl Çalışır?

Sensörümüz nemi algıladıktan sonra analog değer üreterek Arduino ile iletişimini sağlıyor. Ayrıca eklediğimiz Buzzer ve Led sayesinde, nem olmadığı zaman sesli ve ışıklı uyarı vererek bizim bu sistemi kontrol ve takip etmemizi sağlıyor. Gelelim bu devrenin en önemli olan kod kısmına;

const int moistureAO= 0;
int AO = 0; //Arduino'daki A0a bağlı pin
int tmp = 0; //Analog pinin değeri
int buzzPin = 11; //Buzzer'ı bağladığımız pin
int LED = 13; //LED'i bağladığımız pin

void setup () {
Serial.begin(9600); // Seri Portla haberleşmek için girilen değer
Serial.println("Toprak Nem Sensörü");
pinMode(moistureAO, INPUT); // Pini giriş olarak ayarladık
pinMode(buzzPin, OUTPUT); // Pini çıkış olarak ayarladık
pinMode(LED, OUTPUT); // Pini çıkış olarak ayarladık
}
void loop () {
tmp = analogRead( moistureAO);
if( tmp !=AO ){
AO = tmp;
Serial.println("A = "); //Sensörün IDE'deki direnç değerini göster

Serial.println(AO);

}

delay(1000);

if(analogRead(0)>900) { //Okunan değer 900'den büyükse
digitalWrite(buzzPin, HIGH); //Buzzer'ı çal
digitalWrite(LED, HIGH); //LED'i yak
delay(1000); //1 Saniye bekle
digitalWrite(buzzPin, LOW); //Buzzer'ı kapat
digitalWrite(LED, HIGH); //LED'i yak
}
else{
digitalWrite(buzzPin, LOW); //Okunan değer900'den küçükse Buzzer Kapalı
digitalWrite(LED, LOW); //LED kapalı
}
}

Kod kısmında neyi neden yazdığımız hemen yanındakindeki yazılarda takıldığınız noktalara bakabilirsiniz.

*—Önemli not olarak Modül üstündeki potansiyometreyi çevirerek çıkışı istediğimiz gibi ayarlayabiliriz.

**– Extra olarak toprak nemli olduğunda bize bunu bildiren bir sistem yapabiliriz. Örneğin yeşil bir LED ekleyip, yine sensörden aldığımız değerlere göre INPUT,OUTPUT şeklinde ayarlayabiliriz.