
Automatische Arduino tuinsproeier
In een eerder artikel beschreef ik al eens hoe je de conditie van je tuinaarde kunt monitoren met een Arduino. Nu de zomer er weer aan komt breid ik deze grondvochtigheidssensor uit met een automatische Arduino tuinsproeier.
Moestuin automatisch water geven
Op zich is het water geven van je tuinplanten en gazon een kleine moeite. Alleen als je een vers aangelegd gazon hebt, of als het hoog zomer is, heb je een goed sproeiregime nodig. Een moestuin is echter een ander verhaal. Zeker als de plantjes nog jong zijn mag je ze geen dag vergeten! Gelukkig kan ook hier de techniek ons helpen. Met behulp van de zelfgebouwde grondvochtigheidssensor of deze kant-en-klaar oplossing krijg je een goed inzicht in het vochtgehalte van de bodem. Vervolgens zetten we met behulp van een magneetklep (Engels: solenoid valve) de kraan open en weer dicht.
Druppelslang voor de moestuin
De beste manier van water geven is bij de wortels. Zeker als het niet heel warm is, en het water dus niet snel verdampt, moet je voorkomen dat er water op de bladeren van je planten achterblijft. De plant kan dan eerder gaan rotten/schimmelen en is zo eerder vatbaar voor ziektes. Ook in de volle zon wil je liever niet op de bladeren van je kwetsbare plantjes sproeien. De druppels vormen een soort vergrootglaasjes en kunnen zo, met behulp van de felle zon, gaatjes in de bladeren branden! Water geven doe je dus altijd aan de grond, zo dicht mogelijk bij de wortels.

Een druppelslang, ook wel zweetslang genoemd, is dé oplossing voor het beregenen van moestuinen en borders. De verspilling door vervliegen en verdamping is minimaal en de hierboven genoemde negatieve effecten worden voorkomen. De druppelslang kan eenvoudig worden aangestuurd door een Arduino met behulp van een magneetklep, die in Nederland stervensduur zijn maar we gelukkig voor een vriendelijk prijsje uit China kunnen laten overvliegen. Let op: gebruik deze solenoid valve's niet voor drinkwatertoepassingen, hiervoor zijn ze niet gekeurd!
Zwenksproeier voor het gazon

Ook het gazon kan door de Arduino automatisch beregend worden. Hiervoor gebruik ik een pulssproeier maar een zwenksproeier kan ook. Het gazon wordt wel van bovenaf bewaterd, het is ondoenlijk om hier een heel netwerk van mini-druppelslangetjes voor aan te leggen. Je gazon sproei je bij voorkeur in de ochtend als de zon nog niet op het gazon staat of nog zwak is. Zo heeft je gazon de hele dag profijt van het kostbare vocht en voorkom je verbranding van de bladeren. Sproei liever niet 's avonds omdat de bladeren dan de hele nacht nat blijven met kans op schimmel en verrotting tot gevolg.
Arduino tuinsproeier aansturing

Zoals eerder genoemd kun je een vloeistofstroom controleren met een magneetklep. Omdat dergelijke magneetkleppen qua constructie veel lijken op relais geldt ook hier dat ze niet rechtstreeks door de Arduino aangestuurd kunnen worden: ze trekken te veel stroom. De solenoids vragen ongeveer 300 mA in aangetrokken toestand, en dan ook nog eens bij 12 Volt. De Arduino levert maximaal 20 mA bij 5V op een digitale uitgang.
Het uitgangssignaal van de Arduino kunnen we, net als in het LED-strip artikel, versterken met een MOSFET. De IRF3205 MOSFET’s zijn goed verkrijgbaar en logic-level geschikt. Omdat een magneetklep een spoel bevat geeft hij bij uitschakelen een stroompuls terug richting de FET en Arduino. Om te voorkomen dat deze componenten beschadigd raken door deze 'terugslag' plaats ik een blus-diode tussen de 12V en ground van de magneetklep. Let goed op de richting van het streepje op de diode!

De intelligente sprinklersoftware
De Aduino tuinsproeier wordt natuurlijk pas echt intelligent met de juiste code. Hierboven heb ik al diverse vuistregels gegeven voor wat betreft het sproeien van de tuin. Kort samengevat wil ik dus dat mijn programma het volgende doet: 's ochtends op het optimale tijdstip controleert de software de buitentemperatuur, luchtvochtigheid en het grondvochtgehalte, als de temperatuur hoog genoeg is, het niet te vochtig is, en de grond droog is start een eerste watercyclus van 15 minuten, na 15 minuten controleert de software nogmaals de condities en last eventueel een tweede cyclus van 15 minuten in. Daarna gaat de waterkraan sowieso dicht om schade door bijvoorbeeld lekkage te voorkomen.
Een niet-blokkerende timer programmeer je in de Arduino IDE zonder delay(). Zo blijft je programma gewoon doordraaien om bijvoorbeeld tussentijds de sensors uit te lezen. De timer bestaat uit een boolean (variabele) waarin je de status van de timer opslaat, en een unsigned long (variabele) waarin je de starttijd opslaat. De timer start je als volgt:
// open valve and save starttime
digitalWrite(sprinklerValve, HIGH);
Sprinkler = true;
timerSprinkler = millis();
In de loop() van je programma voer je vervolgens allerlei andere taken uit en elke cyclus check je met behulp van onderstaande code of je timer al verstreken is:
if (Sprinkler && (millis() - timerSprinkler > 900000)) {
// close valve and reset sprinkler
digitalWrite(sprinklerValve, LOW);
Sprinkler = false;
}