Ana Sayfa · Akademi · Robotik ve Kodlama · Arduino · Proje: Mini Otomatik Sulama Prototipi

Proje: Mini Otomatik Sulama Prototipi

Nem sensörü ve küçük bir pompayla toprak kuruyunca güvenle sulayan bir prototip yap.

PROJE PUSULASI

Bu sayfayı ne için kullanacaksın?

Ana fikir

Toprak nem sensörüyle toprağın kuruyup kurumadığını ölçen ve kuruyunca küçük bir pompayı kısa süre çalıştırarak sulama yapan bir Arduino prototipi kuruyoruz.

Üretilecek kanıt

Sistemi biraz daha akıllı yap. Şu anki kod delay(sulamaSuresi) kullanırken hiçbir şey yapamaz. Bunun yerine millis() ile bloklamayan bir bekleme kur ve iki sulama arasında en az bir dakika geçmesini zorunlu kıl. Böylece toprak suyu emmeden sistem tekrar sulamaz. Başlangıç fikri: unsigned long sonSulama = 0; const unsigned long bekleme = 60000; // 60 saniye…

Kontrol tuzağı

İlk denememde pompa çalışıyor ama bir türlü durmuyordu. Seri ekranda nem değeri hep eşiğin üstündeydi. Sorunu adım adım aradım: Amac: Toprak kuruyunca 3 saniye sulamak Sorun: Pompa surekli acik kaliyor Kontrol: Sensor ile pompa ayni bardak suyun icindeydi Neden: Su elektronigi etkiliyor, olcum bozuluyordu Duzeltme:…

Sonraki bağlantı

Robotik Sistemler modülü: Sensör, karar ve hareketi birleştiren daha büyük robot sistemlerini tasarlamaya başlıyoruz.

Modül kaynakları: Python Tutorial · Arduino Learn

SeviyeBaşlangıç
Yaş10–16
Süre45–75 dk
Ön koşulProje: Çizgi İzleyen Robotun Mantığı
İçerikProje rehberi · 1.670 kelime
Son güncelleme

Bir cümlelik özet

Toprak nem sensörüyle toprağın kuruyup kurumadığını ölçen ve kuruyunca küçük bir pompayı kısa süre çalıştırarak sulama yapan bir Arduino prototipi kuruyoruz.

Neden önemli?

Bir bitkiyi düzenli sulamak kolay görünür, ama tatile gittiğinde ya da okulda yoğun bir hafta yaşadığında unutmak çok kolaydır. Fazla sulamak da az sulamak kadar zararlıdır. Burada bilgisayarların en iyi olduğu şey devreye girer: bir durumu sabırla ölçmek ve bir kurala göre karar vermek.

Bu proje, önceki derslerde ayrı ayrı öğrendiğimiz parçaları tek bir sistemde birleştirir: sensörle ölçmek, bir koşulla karar vermek ve bir çıkışı (pompayı) kontrol etmek. Aynı fikir gerçek seralarda, akıllı tarımda ve ev bahçelerinde kullanılır. Biz küçük ve güvenli bir kopyasını yapıyoruz.

Bu içerik başlangıç seviyesindedir ve su ile elektroniği bir araya getirdiği için mutlaka bir yetişkinle birlikte uygulanmalıdır.

Sistem nasıl çalışır?

Üç aşamalı düşünce

Neredeyse her otomasyon sistemi üç aşamadan oluşur:

  1. Ölç (girdi): Toprak nem sensörü toprağın ne kadar nemli olduğunu okur.
  2. Karar ver (işlem): Arduino, okunan değeri bir eşikle karşılaştırır.
  3. Uygula (çıktı): Toprak kuruysa pompa kısa bir süre çalışır ve su verir.

Bu döngü tekrar tekrar çalışır. İnsan hayatından bir örnek: Kışın bir odayı ısıtan termostat da aynı şekilde çalışır. Sıcaklığı ölçer, hedeften düşükse kaloriferi açar, hedefe ulaşınca kapatır. Bizim sistemimizde “sıcaklık” yerine “toprak nemi”, “kalorifer” yerine “pompa” var.

Nem değeri ve eşik

Sensör, Arduino'ya 0 ile 1023 arasında bir sayı gönderir. Kullandığımız sensörde toprak kuruyken değer yüksek, ıslakken düşüktür. Hangi sayının “kuru” sayılacağına biz karar veririz; buna eşik (threshold) denir.

Eşiği bulmanın yolu denemedir: Sensörü önce kuru toprağa, sonra sulanmış toprağa batırıp seri ekrandaki değerleri okuruz. İkisinin ortasında bir sayı seçeriz. Bu, günlük hayattaki “çamaşır kaç günde bir yıkanmalı” kararına benzer: Kesin bir sayı yoktur, gözlemle ayarlanır.

Malzeme ve bağlantı

Malzeme listesi

Bağlantı mantığı

Tam sketch

Önce ölçüp seri ekrana yazan, kuruysa pompayı kısa süre çalıştıran temel sürüm:

const int nemPin = A0;      // nem sensoru
const int pompaPin = 8;     // transistor bazi
const int ledPin = 9;       // sulama gostergesi
const int kuruEsik = 600;   // bu degerin ustu = kuru
const unsigned long sulamaSuresi = 3000; // 3 saniye

void setup() {
  Serial.begin(9600);
  pinMode(pompaPin, OUTPUT);
  pinMode(ledPin, OUTPUT);
  digitalWrite(pompaPin, LOW); // pompa baslangicta kapali
}

Ana döngü ölçer, karar verir ve gerekiyorsa sular:

void loop() {
  int nem = analogRead(nemPin);
  Serial.print("Nem degeri: ");
  Serial.println(nem);

  if (nem > kuruEsik) {          // toprak kuru mu?
    digitalWrite(ledPin, HIGH);
    digitalWrite(pompaPin, HIGH); // pompa acik
    delay(sulamaSuresi);          // kisa sure sula
    digitalWrite(pompaPin, LOW);  // pompa kapali
    digitalWrite(ledPin, LOW);
  }
  delay(5000); // 5 saniye bekle, sonra tekrar olc
}

Kodun mantığı basittir: oku, karşılaştır, gerekiyorsa kısa süre sula, bekle. sulamaSuresi değişkenini küçük tutmak güvenlik için önemlidir; pompa hiçbir zaman uzun süre açık kalmaz.

Test ve doğrulama

  1. Pompayı suya koymadan önce sadece sensörü ve kodu test et. Seri ekranı (Serial Monitor, 9600) aç ve değerleri izle.
  2. Sensörü kuru toprağa batır: değer eşikten büyük olmalı. Bardak suya batır: değer düşmeli.
  3. Değerlere bakarak kuruEsik sayısını kendi toprağına göre ayarla.
  4. Pompayı bir bardak suya koy, çıkış hortumunu saksıya yönlendir ve elektronik parçaları sudan uzak, yüksek bir yere sabitle.
  5. Kısa bir sulama gör, LED'in yanıp söndüğünü ve pompanın 3 saniye sonra durduğunu doğrula.

Bir hata ve düzeltmesi

İlk denememde pompa çalışıyor ama bir türlü durmuyordu. Seri ekranda nem değeri hep eşiğin üstündeydi. Sorunu adım adım aradım:

Amac: Toprak kuruyunca 3 saniye sulamak
Sorun: Pompa surekli acik kaliyor
Kontrol: Sensor ile pompa ayni bardak suyun icindeydi
Neden: Su elektronigi etkiliyor, olcum bozuluyordu
Duzeltme: Sensoru saksiya, pompayi ayri su kabina koy

Ders şuydu: Su ve ölçüm birbirine karışırsa sistem yanlış karar verir. Sensör toprağı ölçmeli, pompa ayrı bir kaptan su çekmelidir.

Mini uygulama

Sistemi biraz daha akıllı yap. Şu anki kod delay(sulamaSuresi) kullanırken hiçbir şey yapamaz. Bunun yerine millis() ile bloklamayan bir bekleme kur ve iki sulama arasında en az bir dakika geçmesini zorunlu kıl. Böylece toprak suyu emmeden sistem tekrar sulamaz.

Başlangıç fikri:

unsigned long sonSulama = 0;
const unsigned long bekleme = 60000; // 60 saniye

void loop() {
  int nem = analogRead(nemPin);
  if (nem > kuruEsik && millis() - sonSulama > bekleme) {
    digitalWrite(pompaPin, HIGH);
    delay(3000);              // kisa sulama
    digitalWrite(pompaPin, LOW);
    sonSulama = millis();     // zamani kaydet
  }
}

Ek görev: Sulama sayısını bir değişkende say ve seri ekrana yaz. Günde kaç kez sulandığını gözlemle.

Projeyi güçlendirme planı

Proje: Mini Otomatik Sulama Prototipi için yalnız çalışan bir gösterim hazırlamak yeterli değildir. İyi bir proje; hedefi, kullanıcıyı, sınırları, test koşullarını ve başarısız denemeleri de görünür kılar. Bu genişletme çalışmasında toprak nemini okuyup pompa yerine güvenli bir LED ile karar gösteren sulama prototipi bağlamını kullanarak bağlantı şeması, derlenebilen Arduino kodu, seri monitör kaydı ve test sonucu oluştur. Dersin hedefi “Nem sensörü ve küçük bir pompayla toprak kuruyunca güvenle sulayan bir prototip yap” olsa da proje sayfasında ölçülmemiş bir sonucu kesin başarı gibi yazma.

1. Proje özeti ve kapsam

Önce üç cümle yaz: Çözmek istediğin sorun nedir, bu sorun kimin için önemlidir ve ilk sürüm özellikle neyi yapmayacaktır? Kapsam dışını belirtmek projeyi küçültmez; tamamlanabilir hâle getirir. Sistem nasıl çalışır? ile Nem değeri ve eşik arasındaki ilişkiyi projenin temel varsayımı olarak yaz ve bu varsayımı hangi testin doğrulayacağını belirt.

2. Kabul ölçütleri

“Proje: Mini Otomatik Sulama Prototipi” için kabul ölçütlerini “çalışıyor” gibi belirsiz sözcüklerle bırakma. Süre, mesafe, doğru deneme sayısı, ekran genişliği veya kullanıcı adımı gibi gözlenebilir bir ölçü seç. Ölçüm mümkün değilse en azından üç ardışık denemede aynı davranışın görülüp görülmediğini kaydet.

3. Test matrisi

3. Test matrisi tablosu
TestKoşulBeklenenGerçek sonuçSonraki karar
NormalStandart giriş ve tam bağlantıTemel görev tamamlanırTest sırasında doldurKoru veya küçük iyileştirme yap
SınırEn düşük ya da en yüksek kabul edilen değerSistem kararlı kalırTest sırasında doldurEşiği veya kuralı gözden geçir
HataEksik, yanlış ya da beklenmeyen girişGüvenli ve anlaşılır tepkiTest sırasında doldurHata yönetimi ekle
TekrarAynı koşulda en az üç denemeBenzer sonuçlarTest sırasında doldurTutarsızlığın kaynağını araştır

4. Sürüm günlüğü

“Proje: Mini Otomatik Sulama Prototipi” projesinin her sürümü için tarih, değiştirdiğin tek ana karar, değişikliğin nedeni ve test sonucu yaz. İlk sürümün çalışmaması başarısızlık değildir; Sistem nasıl çalışır? veya Nem değeri ve eşik ile ilgili hangi varsayımın yeniden düşünülmesi gerektiğini gösteren veridir. Görsel kullanırken kişisel bilgi ve özel arka plan ayrıntılarını paylaşma.

5. Sunum ve öz değerlendirme

“Proje: Mini Otomatik Sulama Prototipi” projesini iki dakikada anlatacak şekilde hazırlan: sorun, çözüm yaklaşımı, toprak nemini okuyup pompa yerine güvenli bir LED ile karar gösteren sulama prototipi için en önemli test sonucu ve bir sonraki adım. “Tamamlandı” demek yerine hangi kısmın doğrulandığını ve hangi kısmın hâlâ geliştirilmesi gerektiğini açıkla.

Sık yapılan hatalar

Pompayı doğrudan Arduino pinine bağlamak

Bir Arduino pini yalnızca çok küçük bir akım verebilir. Pompa daha fazlasını çeker ve pini kalıcı olarak bozabilir. Pompa her zaman ayrı güçle beslenir; Arduino sadece bir transistörle onu açıp kapatır.

Ortak GND'yi unutmak

Pil paketi ile Arduino'nun GND'si bağlı değilse transistör anahtarlaması çalışmaz. İki güç kaynağının “sıfır noktası” ortak olmalıdır.

Eşiği denemeden yazmak

Her toprak ve her sensör farklıdır. kuruEsik değerini gerçek okumalara bakmadan seçersen sistem ya hiç sulamaz ya da durmadan sular.

Uzun sulama süresi vermek

sulamaSuresi değerini büyük tutmak saksıyı taşırabilir. Kısa süre + bekleme süresi daha güvenlidir.

Güvenlik notu

Ders özeti

Kontrol soruları

  1. Bir otomatik sulama sisteminin üç temel aşaması nedir?
  2. Kullandığımız sensörde toprak kuruyken nem değeri yüksek mi düşük mü olur?
  3. Neden pompayı doğrudan Arduino pinine bağlamıyoruz?
  4. kuruEsik değerini nasıl doğru şekilde belirleriz?
  5. delay() yerine millis() kullanmanın avantajı nedir?

Cevaplar

  1. Ölçmek (girdi), karar vermek (işlem) ve uygulamak/çıktı (pompayı çalıştırmak).
  2. Yüksek olur; ıslak toprakta değer düşer. Bu yüzden nem > kuruEsik koşulu kuruluğu gösterir.
  3. Pompa Arduino pininin verebileceğinden çok daha fazla akım çeker; pini bozar. Ayrı güç ve transistör gerekir.
  4. Sensörü kuru ve ıslak toprakta seri ekrandan okuyup iki değerin arasında bir sayı seçerek; yani deneyerek.
  5. millis() beklerken programı durdurmaz; Arduino bu sırada ölçüm yapmaya ve başka işleri yürütmeye devam edebilir.

Kaynak ve doğrulama notu

“Proje: Mini Otomatik Sulama Prototipi” dersi için doğrulama odağı Sistem nasıl çalışır? ile Nem değeri ve eşik arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Arduino uyumlu kartlarda pin, gerilim ve akım sınırları modele göre değişebilir. Kod derlense bile devre güvenli olmayabileceğinden, motor ve servo gibi yükler uygun sürücü ve harici besleme ile kullanılmalıdır.

Sonraki ders

Robotik Sistemler modülü: Sensör, karar ve hareketi birleştiren daha büyük robot sistemlerini tasarlamaya başlıyoruz.

Quiz’i BaşlatArduino bölümüne dön
SORU HAVUZU

Bu dersi 10 soruyla pekiştir

Bu ders için 20 soruluk bir havuz hazırlandı. Her başlangıçta 10 soru ve seçenekler yeniden karıştırılır.