Başa dön
Arduino Toprak Nem Sensörü Nedir? Kullanımı, Projesi, Bağlantısı (Toprak Nemi Ölçer Ölçüm Cihazı)

Arduino Toprak Nem Sensörü Kullanımı, Projesi, Bağlantısı (Nem Ölçer)

Merhaba Arkadaşlar Bugün Arduino Toprak Nem Sensörü Nedir? Kullanımı, Projesi, Bağlantısı, Toprak Nemi Ölçer Ölçüm Cihazı ve Algılama Sensörü Projesini yani Arduino İle Toprak Nem Sensörü Kullanarak Nem Ölçer Yapımı Öğrenelim.

Toprak Nem Sensörü Satın Al

Arduino Akıllı Sera Proje Seti Satın Al

 

‘Akıllı Sera’ terimini duyduğunuzda aklınıza ilk gelen şey toprak nemini ölçen (arduino toprak nemi ölçüm cihazı – nem ölçer) ve bitkilerinizi otomatik olarak sulayan bir sistemdir.

Bu tür bir sistemle, bitkilerinizi yalnızca gerektiğinde sulayabilir, aşırı sulama veya yetersiz sulamadan kaçınabilirsiniz.

Böyle bir sistem kurmak istiyorsanız kesinlikle bir Toprak Nem Sensörüne ihtiyacınız olacaktır.

Toprak Nemi Ölçer Sensör Nasıl Çalışır?

Toprak nem sensörünün çalışması oldukça basittir.

Açıkta kalan iki iletkenli çatal biçimli prob, direnci topraktaki su içeriğine göre değişen, değişken bir direnç (tıpkı bir potansiyometre gibi) görevi görür .

Toprak nemi ile direnç ters orantılıdır:

  • Topraktaki fazla su daha iyi iletkenlik anlamına gelir ve daha düşük bir direnç ile sonuçlanır.
  • Topraktaki az su zayıf iletkenlik anlamına gelir ve daha yüksek dirençle sonuçlanır.

Sensör, dirence göre bir çıkış voltajı üretir.

Toprak Nemi Ölçer Sensör Donanımına Genel Bakış

Tipik bir toprak nem sensörünün iki bileşeni vardır.

  • Prob

Sensörün toprak nemini ölçmek için toprağa batırılan iki iletken (çatal prob) şeklindeki parçasıdır.

  • Modül

Probu Arduino’ya bağlayan elektronik parçadır.

Modül, probun direncine göre bir çıkış voltajı üretir ve Analog Çıkış (AO) pini üzerinden arduinoya iletir.

 

Aynı sinyal, sayısallaştırmak için bir LM393 Yüksek Hassasiyetli Karşılaştırıcıya beslenir ve bir Dijital Çıkış (DO) pininde bulunur.

Modül, dijital çıkış pini (DO) hassasiyet ayarlaması için yerleşik bir potansiyometreye sahiptir.

Nem seviyesi eşik değerine aştığında, modül LOW, aksi takdirde HIGH çıkacaktır.

 

Bu işlem, belirli bir eşik değere ulaşıldığında ve bir eylemi tetiklemek istediğinizde çok kullanışlıdır. Örneğin, topraktaki nem seviyesi ayarladığınız eşiği geçtiğinde, su pompalamaya başlamak için röleyi etkinleştirebilirsiniz.

İpucu: Hassasiyeti artırmak için düğmeyi saat yönünde, azaltmak için saat yönünün tersine çevirin.

Bunun dışında modülde iki LED bulunur. Modüle güç verildiğinde Güç LED‘i yanar. Dijital çıkış LOW olduğunda Status LED yanar.

Toprak Nemi Ölçer Sensör Modülü Pinout

Toprak nem sensörünün kullanımı kolaydır ve sadece 4 pine sahiptir.

A0 (Analog Çıkış) pini, arduino’nuzdaki analog girişlerden birine bağlanır.

DO (Dijital Çıkış) pinini, arduino’daki herhangi bir dijital pinine veya doğrudan 5V röleye bağlayabilirsiniz.

VCC pini sensöre güç sağlar. Sensörü 3.3V – 5V arasında çalıştırmanız önerilir. Analog çıkışın sensör için hangi voltajın sağlandığına bağlı olarak değişeceğini lütfen unutmayın.

GND bir toprak bağlantısıdır.

Analog Çıkışı Kullanarak Toprak Nemi Algılama

Modülün hem analog hem de dijital çıkış sağladığını bildiğinizden, ilk denememiz için analog çıkışı okuyarak toprak nemini ölçeceğiz.

Kablolama

Toprak nem sensörünü Arduino’ya bağlayalım.

Önce sensöre güç sağlamanız gerekir. Bunun için modüldeki VCC pimini Arduino’daki 5V’ye bağlayabilirsiniz.

Bununla birlikte, bu sensörler ile yaygın olarak bilinen bir sorun, nemli bir ortama maruz kaldıklarında kısa ömürlü olmalarıdır.

Bunun üstesinden gelmek için, sensöre sürekli güç vermemenizi, ancak sadece okumaları aldığınızda güç vermenizi öneririz.

Bunu yapmanın kolay bir yolu, VCC pimini bir Arduino’nun dijital pimine bağlamak ve gereksiniminize göre HIGH veya LOW olarak ayarlamaktır.

Ayrıca modül tarafından çekilen toplam güç (her iki LED yanıyorsa) yaklaşık 8 mA’dir. Bu nedenle modülü Arduino’daki dijital bir pimden kapatmak uygundur.

Modüldeki GND piminin 7 no’lu dijital pimine yani toprağa bağlayalım.

Son olarak, modül üzerindeki A0 pinini Arduino’nuzdaki ADC pinine bağlayın.

Aşağıdaki görselde kablolama gösterilmektedir.

Ayarlama

Toprak nem sensörünüzden doğru ölçümler elde etmek için, öncelikle izlemeyi planladığınız belirli toprak türü için kalibre etmeniz önerilir.

Farklı toprak türleri sensörü etkileyebilir, bu nedenle kullandığınız toprak türüne bağlı olarak sensörünüz az çok hassas olabilir.

Toprak neme tamamen doygun hale geldiğinde, toprak mümkün olduğunca kuru olduğunda sensörünüzün hangi değerleri verdiğini not etmek için aşağıdaki kodu kullanın.

<span class="com">// Sensor pins</span>
#define sensorPower 7
#define sensorPin A0

<span class="kwd">void</span> <span class="func">setup</span>() {
	<span class="func">pinMode</span>(sensorPower, OUTPUT);
	
	<span class="com">// Initially keep the sensor OFF</span>
	<span class="func">digitalWrite</span>(sensorPower, LOW);
	
	Serial.<span class="func">begin</span>(<span class="lit">9600</span>);
}

<span class="kwd">void</span> <span class="func">loop</span>() {
	<span class="com">//get the reading from the function below and print it</span>
	Serial.<span class="func">print</span>(<span class="str">"Analog output: "</span>);
	Serial.<span class="func">println</span>(<span class="func">readSensor</span>());
	
	<span class="func">delay</span>(<span class="lit">1000</span>);
}

<span class="com">//  This function returns the analog soil moisture measurement</span>
<span class="kwd">int</span> <span class="func">readSensor</span>() {
	<span class="func">digitalWrite</span>(sensorPower, HIGH);	<span class="com">// Turn the sensor ON</span>
	<span class="func">delay</span>(<span class="lit">10</span>);							<span class="com">// Allow power to settle</span>
	<span class="kwd">int</span> val = <span class="func">analogRead</span>(sensorPin);	<span class="com">// Read the analog value form sensor</span>
	<span class="func">digitalWrite</span>(sensorPower, LOW);		<span class="com">// Turn the sensor OFF</span>
	<span class="kwd">return</span> val;							<span class="com">// Return analog moisture value</span>
}

Kodu çalıştırdığınızda, aşağıdaki değerlere yakın değerler görürsünüz:

  • Toprak Kuruduğunda (~ 850)
  • Toprak Tamamen Islakken (~ 400)

Bu test biraz deneme yanılma gerektirebilir. Bu okumaları iyi bir şekilde ele aldığınızda, bir eylemi tetiklemek istiyorsanız bunları eşik olarak kullanabilirsiniz.

Son Kodlama

Kalibrasyon değerlerine dayanarak, aşağıdaki program toprağın durumunu belirlemek için aralıkları tanımlar:

  • <500 çok ıslak
  • 500-750 hedef aralıktır
  • > 750 sulanacak kadar kuru
<span class="com">/* Change these values based on your calibration values */</span>
#define soilWet 500   <span class="com">// Define max value we consider soil 'wet'</span>
#define soilDry 750   <span class="com">// Define min value we consider soil 'dry'</span>

<span class="com">// Sensor pins</span>
#define sensorPower 7
#define sensorPin A0

<span class="kwd">void</span> <span class="func">setup</span>() {
	<span class="func">pinMode</span>(sensorPower, OUTPUT);
	
	<span class="com">// Initially keep the sensor OFF</span>
	<span class="func">digitalWrite</span>(sensorPower, LOW);
	
	Serial.<span class="func">begin</span>(<span class="lit">9600</span>);
}

<span class="kwd">void</span> <span class="func">loop</span>() {
	<span class="com">//get the reading from the function below and print it</span>
	<span class="kwd">int</span> moisture = <span class="func">readSensor</span>();
	Serial.<span class="func">print</span>(<span class="str">"Analog Output: "</span>);
	Serial.<span class="func">println</span>(moisture);

	<span class="com">// Determine status of our soil</span>
	<span class="kwd">if</span> (moisture &lt; soilWet) {
		Serial.<span class="func">println</span>(<span class="str">"Status: Soil is too wet"</span>);
	} <span class="kwd">else</span> <span class="kwd">if</span> (moisture &gt;= soilWet &amp;&amp; moisture &lt; soilDry) {
		Serial.<span class="func">println</span>(<span class="str">"Status: Soil moisture is perfect"</span>);
	} <span class="kwd">else</span> {
		Serial.<span class="func">println</span>(<span class="str">"Status: Soil is too dry - time to water!"</span>);
	}
	
	<span class="func">delay</span>(<span class="lit">1000</span>);	<span class="com">// Take a reading every second for testing</span>
					<span class="com">// Normally you should take reading perhaps once or twice a day</span>
	Serial.<span class="func">println</span>();
}

<span class="com">//  This function returns the analog soil moisture measurement</span>
<span class="kwd">int</span> <span class="func">readSensor</span>() {
	<span class="func">digitalWrite</span>(sensorPower, HIGH);	<span class="com">// Turn the sensor ON</span>
	<span class="func">delay</span>(<span class="lit">10</span>);							<span class="com">// Allow power to settle</span>
	<span class="kwd">int</span> val = <span class="func">analogRead</span>(sensorPin);	<span class="com">// Read the analog value form sensor</span>
	<span class="func">digitalWrite</span>(sensorPower, LOW);		<span class="com">// Turn the sensor OFF</span>
	<span class="kwd">return</span> val;							<span class="com">// Return analog moisture value</span>
}

Her şey yolundaysa, ekran da aşağıdaki çıkışı görmelisiniz.

Dijital Çıkışı Kullanarak Toprak Nemi Algılama

İkinci deneyimiz için dijital çıktıyı kullanarak toprağın durumunu belirleyeceğiz.

Kablolama

Önceki örnekteki devreyi kullanacağız. Bu sefer sadece ADC pinine olan bağlantıyı çıkarmamız ve modüldeki DO pinini Arduino’daki 8 numaralı dijital pine bağlamamız gerekiyor.

Devrenizi aşağıda gösterildiği gibi bağlayın:

Ayarlama

Modül, dijital çıkışı (DO) kalibre etmek için yerleşik bir potansiyometreye sahiptir.

Potansiyometrenin düğmesini çevirerek bir eşik ayarlayabilirsiniz. Nem seviyesi eşik değerini aştığında, Durum LED’i yanacak ve modül LOW çıkacaktır.

Şimdi sensörü kalibre etmek için, bitki sulanmaya hazır olduğunda probu toprağa yerleştirin ve durum LED’i yanacak şekilde potu saat yönünde ayarlayın ve ardından LED sönene kadar potu saat yönünün tersine ayarlayın.

Sensörünüz artık kalibre edilmiş ve kullanıma hazırdır.

Arduino Kodu

Devre kurulduktan sonra, aşağıdaki kodu Arduino’nuza yükleyin.

<span class="com">// Sensor pins</span>
#define sensorPower 7
#define sensorPin 8

<span class="kwd">void</span> <span class="func">setup</span>() {
	<span class="func">pinMode</span>(sensorPower, OUTPUT);

	<span class="com">// Initially keep the sensor OFF</span>
	<span class="func">digitalWrite</span>(sensorPower, LOW);

	Serial.<span class="func">begin</span>(<span class="lit">9600</span>);
}

<span class="kwd">void</span> <span class="func">loop</span>() {
	<span class="com">//get the reading from the function below and print it</span>
	<span class="kwd">int</span> val = <span class="func">readSensor</span>();
	Serial.<span class="func">print</span>(<span class="str">"Digital Output: "</span>);
	Serial.<span class="func">println</span>(val);

	<span class="com">// Determine status of our soil moisture situation</span>
	<span class="kwd">if</span> (val) {
		Serial.<span class="func">println</span>(<span class="str">"Status: Soil is too dry - time to water!"</span>);
	} <span class="kwd">else</span> {
		Serial.<span class="func">println</span>(<span class="str">"Status: Soil moisture is perfect"</span>);
	}

	<span class="func">delay</span>(<span class="lit">1000</span>);	<span class="com">// Take a reading every second for testing</span>
					<span class="com">// Normally you shoul take reading perhaps every 12 hours</span>
	Serial.<span class="func">println</span>();
}

<span class="com">//  This function returns the analog soil moisture measurement</span>
<span class="kwd">int</span> <span class="func">readSensor</span>() {
	<span class="func">digitalWrite</span>(sensorPower, HIGH);  <span class="com">// Turn the sensor ON</span>
	<span class="func">delay</span>(<span class="lit">10</span>);              <span class="com">// Allow power to settle</span>
	<span class="kwd">int</span> val = <span class="func">digitalRead</span>(sensorPin); <span class="com">// Read the analog value form sensor</span>
	<span class="func">digitalWrite</span>(sensorPower, LOW);   <span class="com">// Turn the sensor OFF</span>
	<span class="kwd">return</span> val;             <span class="com">// Return analog moisture value</span>
}

Her şey yolundaysa, seri monitörde aşağıdaki çıkışı görmelisiniz.

 
Hepsi bu kadar. Umarım Arduino İle Toprak Nemi Sensörü Kullanımı – Nem Ölçer Ölçüm Cihazı makalemizi beğenmiş ve yeni bir şeyler öğrenmişsinizdir.
Memnun kaldıysanız aşağıda bulunan “yukarı ok“a tıklayarak +1 puan verebilirsiniz.
Diğer Güncel Arduino Projeleri için BURAYA TIKLAYABİLİRSİNİZ.

Sizde Robotlara ve Maker’lığa Meraklıysanız Robotik Marketimiz ROBOCOMBO‘yu Ziyaret Edebilirsiniz.

 
Okuduğunuz İçin Teşekkürler.

 

 

 
Kaynak : lastminuteengineers.com/soil-moisture-sensor-arduino-tutorial/