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:
- Ölç (girdi): Toprak nem sensörü toprağın ne kadar nemli olduğunu okur.
- Karar ver (işlem): Arduino, okunan değeri bir eşikle karşılaştırır.
- 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
- Arduino Uno (USB ile bilgisayara bağlı)
- Toprak nem sensörü (analog çıkışlı)
- Küçük 5 V daldırma su pompası
- 1 adet NPN transistör (örn. 2N2222) veya hazır motor/röle sürücü modülü
- 1 adet 1N4007 diyot (pompa için ters akım koruması)
- 1 adet 1 kΩ direnç (transistör bazı için)
- 1 adet LED + 220 Ω direnç (sulama göstergesi için)
- Ayrı bir düşük gerilim güç kaynağı (örn. 4 kalem pilli paket)
- Breadboard ve jumper kablolar, bir bardak su, küçük bir saksı
Bağlantı mantığı
- Nem sensörü: VCC → 5 V, GND → GND, çıkış (AO) → A0.
- LED: uzun bacak → 9. pin üstünden 220 Ω direnç ile, kısa bacak → GND.
- Pompa doğrudan Arduino pinine bağlanmaz. Pompayı ayrı pil paketi besler; Arduino yalnızca transistörün bazını (1 kΩ direnç üzerinden 8. pin) kontrol eder. Transistör bir anahtar gibi çalışır.
- Diyot, pompanın uçlarına ters yönde bağlanır ve motor dururken oluşan zararlı akımı emer.
- Ortak GND: Pil paketinin eksi ucu ile Arduino GND birbirine bağlanmalıdır, yoksa transistör anahtarlaması çalışmaz.
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
- Pompayı suya koymadan önce sadece sensörü ve kodu test et. Seri ekranı (
Serial Monitor, 9600) aç ve değerleri izle. - Sensörü kuru toprağa batır: değer eşikten büyük olmalı. Bardak suya batır: değer düşmeli.
- Değerlere bakarak
kuruEsiksayısını kendi toprağına göre ayarla. - Pompayı bir bardak suya koy, çıkış hortumunu saksıya yönlendir ve elektronik parçaları sudan uzak, yüksek bir yere sabitle.
- 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
- Kartın 5 V veya 3,3 V çalışma sınırı doğru mu?
- Pin numaraları kod ve devrede eşleşiyor mu?
- Seri monitör ölçümü beklenen aralıkta mı?
- Motor veya servo karttan doğrudan aşırı akım çekiyor mu?
- Güç kesildiğinde sistem güvenli duruma dönüyor mu?
“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
| Test | Koşul | Beklenen | Gerçek sonuç | Sonraki karar |
|---|---|---|---|---|
| Normal | Standart giriş ve tam bağlantı | Temel görev tamamlanır | Test sırasında doldur | Koru veya küçük iyileştirme yap |
| Sınır | En düşük ya da en yüksek kabul edilen değer | Sistem kararlı kalır | Test sırasında doldur | Eşiği veya kuralı gözden geçir |
| Hata | Eksik, yanlış ya da beklenmeyen giriş | Güvenli ve anlaşılır tepki | Test sırasında doldur | Hata yönetimi ekle |
| Tekrar | Aynı koşulda en az üç deneme | Benzer sonuçlar | Test sırasında doldur | Tutarsı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
- Su ve elektronik ayrı kalır. Arduino, breadboard, piller ve kablolar sudan uzakta, yüksekte durmalı. Su sıçraması olabilecek her yere havlu koy.
- Yalnızca düşük gerilim kullan: USB veya kalem pilli paket. Şebeke (priz) elektriğiyle asla su pompası çalıştırılmaz.
- Pompayı doğrudan Arduino pininden besleme. Motor ve pompalar sürücü/transistör ve ayrı güç kaynağı ister.
- Islak elle devreye dokunma.
- Pompayı düşük akışla ve kısa sürelerle başlat; taşma olup olmadığını izle.
- Bu proje yetişkin gözetiminde yapılır. Bağlantıları çalıştırmadan önce bir yetişkine kontrol ettir.
Ders özeti
- Otomatik sulama sistemi üç aşamayla çalışır: ölç, karar ver, uygula.
- Nem sensörü analog bir değer verir; “kuru” kararını veren eşiği biz belirler ve deneyerek ayarlarız.
- Pompa asla doğrudan Arduino pininden değil, ayrı güçle ve bir transistör/sürücü ile çalıştırılır.
- Kısa sulama süresi, bekleme süresi ve
millis()ile bloklamayan zamanlama sistemi güvenli ve akıllı yapar. - Su ile elektroniği ayrı tutmak hem doğru ölçüm hem de güvenlik için şarttır.
Kontrol soruları
- Bir otomatik sulama sisteminin üç temel aşaması nedir?
- Kullandığımız sensörde toprak kuruyken nem değeri yüksek mi düşük mü olur?
- Neden pompayı doğrudan Arduino pinine bağlamıyoruz?
kuruEsikdeğerini nasıl doğru şekilde belirleriz?delay()yerinemillis()kullanmanın avantajı nedir?
Cevaplar
- Ölçmek (girdi), karar vermek (işlem) ve uygulamak/çıktı (pompayı çalıştırmak).
- Yüksek olur; ıslak toprakta değer düşer. Bu yüzden
nem > kuruEsikkoşulu kuruluğu gösterir. - Pompa Arduino pininin verebileceğinden çok daha fazla akım çeker; pini bozar. Ayrı güç ve transistör gerekir.
- Sensörü kuru ve ıslak toprakta seri ekrandan okuyup iki değerin arasında bir sayı seçerek; yani deneyerek.
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.