Arduino ile Toprak Nem Sensörü (YL-69 / HL-69) Kullanımı

👤 Yazar: ozcan 📅 Tarih: 19.07.2026 08:26 👁️ Görüntüleme: 6

Arduino ile Toprak Nem Sensörü (YL-69 / HL-69) Kullanımı

Akıllı tarım teknolojileri, otomatik bitki sulama sistemleri veya ev tipi saksı takip projelerinin en temel bileşeni toprak nem sensörleridir. Piyasada en yaygın bulunan YL-69 (veya HL-69) modeli, iki ana parçadan oluşur: Toprağa saplanan çatal şeklindeki prob ve bu probdan gelen verileri işleyen küçük bir elektronik karşılaştırıcı kart (LM393 sürücüsü). Sensör, toprağın içindeki su miktarı arttıkça elektrik iletkenliğinin artması (direncin düşmesi) prensibine dayanarak çalışır.

Arduino ile Toprak Nem Sensörü bağlantı şeması

En Büyük Donanım Problemi (Korozyon ve Elektroliz): Bu tarz dirençsel (resistive) sensörlerin probları toprağa sürekli çakılı kaldığında ve üzerinden kesintisiz elektrik akımı geçtiğinde hızlıca oksitlenir ve korozyona uğrayarak birkaç ay içinde kullanılmaz hale gelir. Sitenizdeki projelerde bu ömrü uzatmak için sensörün VCC (güç) bacağını doğrudan Arduino'nun 5V pinine bağlamak yerine dijital bir pine (Örn: D7) bağlayıp, sadece ölçüm yapacağınız anda o pini YÜKSEK yapıp ölçüm biter bitmez elektriği kesmek en profesyonel çözümdür.

Dinamik Güç Yönetimli ve Kalibrasyonlu Tam Kod Bloğu

Aşağıdaki kod kurgusu, sensörün korozyona uğramasını engellemek için güç kontrol mimarisi içerir ve topraktan okuduğu 0-1023 arasındaki ham analog veriyi, haritalama (map) fonksiyonu ile anlaşılır bir yüzde (%) nem değerine dönüştürür:

// Pin Tanımlamaları
const int sensor_analog_pin = A0; // Nem verisini okuyacağımız analog pin
const int sensor_guc_pin = 7;     // Sensöre sadece ölçüm anında güç vereceğimiz dijital pin
const int led_pin = 13;           // Düşük nem uyarısı için dahili LED

// Kalibrasyon Değerleri (Kendi sensörünüzü suya ve kuru toprağa sokarak bu değerleri güncelleyin)
const int KURU_ESIK = 850;  // Sensör tamamen havadayken/kuru topraktayken okunan değer
const int ISLAK_ESIK = 250; // Sensör tamamen suyun içindeyken okunan değer

void setup() {
  Serial.begin(9600);
  
  pinMode(sensor_guc_pin, OUTPUT);
  pinMode(led_pin, OUTPUT);
  
  // Başlangıçta sensörün elektriğini kapalı tutuyoruz
  digitalWrite(sensor_guc_pin, LOW);
  
  Serial.println("Toprak Nem Takip Sistemi Baslatildi.");
}

void loop() {
  // 1. ADIM: Sensöre güç veriyoruz ve kararlı hale gelmesi için kısa bir süre bekliyoruz
  digitalWrite(sensor_guc_pin, HIGH);
  delay(10); 
  
  // 2. ADIM: Analog değeri okuyoruz
  int ham_deger = analogRead(sensor_analog_pin);
  
  // 3. ADIM: Ölçüm biter bitmez korozyonu önlemek için sensörün gücünü kapatıyoruz
  digitalWrite(sensor_guc_pin, LOW);
  
  // 4. ADIM: Ham değeri yüzdeye haritalıyoruz. 
  // Direnç mantığından dolayı kurulukta değer yükselir (1023'e yaklaşır), ıslaklıkta düşer.
  // Bu yüzden haritalamayı ters (KURU -> %0, ISLAK -> %100) kuruyoruz.
  int nem_yuzdesi = map(ham_deger, KURU_ESIK, ISLAK_ESIK, 0, 100);
  
  // Yüzde değerinin %0 ile %100 sınırlarının dışına taşmasını engelliyoruz
  nem_yuzdesi = constrain(nem_yuzdesi, 0, 100);
  
  // Verileri seri port ekranına yazdırıyoruz
  Serial.print("Ham ADC Degeri: ");
  Serial.print(ham_deger);
  Serial.print(" | Toprak Nem Orani: %");
  Serial.println(nem_yuzdesi);
  
  // Eğer nem oranı %30'un altına düşerse sulama uyarısı ver ve LED'i yak
  if (nem_yuzdesi < 30) {
    digitalWrite(led_pin, HIGH);
    Serial.println("-> UYARI: Toprak kuru, bitkiyi sulayin!");
  } else {
    digitalWrite(led_pin, LOW);
  }
  
  // Toprağın nemi çok hızlı değişmeyeceği için 5 saniyede bir ölçüm yapıyoruz
  // (Gerçek sistemlerde bu süreyi dakika veya saat seviyesine çekebilirsiniz)
  delay(5000); 
}

Sürücü Kartı Üzerindeki Pinler ve Dijital Çıkış (DO) Mantığı

Prob kontrol kartının üzerinde mikrodenetleyiciye bağlanan 4 adet pin yer alır:

GND: Toprak hattıdır, doğrudan Arduino'nun ortak GND hattına bağlanır.

VCC: Güç girişidir. Korozyon önleme kodumuza uygun olarak Arduino'nun D7 pinine bağlanmalıdır.

AO (Analog Out): Toprağın anlık nem oranını lineer voltaj olarak verir. Yukarıdaki koda göre Arduino'nun A0 pinine bağlanır.

DO (Digital Out): Eğer projenizde analog değerlerle veya yüzde hesaplarıyla uğraşmak istemiyorsanız bu pini kullanabilirsiniz. Sürücü kartı üzerindeki mavi potansiyometreyi tornavida ile çevirerek fiziksel bir eşik değeri belirlersiniz. Toprak nemi o eşiğin altına düştüğünde DO pini anlık olarak lojik YÜKSEK (5V) çıkışı verir. Bu çıkış doğrudan bir röle modülünü veya alarm buzzer'ını tetiklemek için oldukça pratiktir.

💬 Yorumlar

Henüz yorum yapılmamış. İlk yorumu siz yapın!

Bir Yorum Bırakın

Güvenlik Kontrolü:

Yenidir.com
↑ Sayfa Başı
📞 İletişim ✉ E-Posta Gönder 🟥 YouTube
© 2026 Yenidir.com
Yenidir CMS V0.1