Stap 6: Controller - de logica
Nu, over de logica in de Arduino controller: de pulsen, tellen als ze boven een drempel, trigger de drenken. De logica is simpel, nietwaar? Behalve na mijn eerste iteratie ontdekte ik dat het is niet alleen eenvoudig maar ook te simplistisch. De tekortkomingen:
- je kunt niet houden de bodem meten proces uitgevoerd voortdurend als u batterijen als uw krachtbron. Tijdens het meten, de controller verbruikt ongeveer 35-40mA (meer zal worden getrokken wanneer drenken). Een set van twee 4R25X 6V accu's (aka "lantaarn batterijen") waren uitgeput in ongeveer twee weken – vermenigvuldig dit met het aantal drenken punten en je zult zien is het niet langer goedkope. Nemen beter vocht metingen met uren tussen hen – gebruik uw gezond verstand, de tijd tussen twee maatstaven zal variëren op het seizoen, de temperatuur, de hoeveelheid bodem rond uw installaties, enz.
- Eens sterker nog, je kan niet houden je Arduino volledig in leven tussen de twee metingen, zonder te doen iets tussen de twee metingen; een Pro Mini zal nog steeds tekenen 20 — 25mA – dus een batterij-set slechts 3-4 weken zal duren. Beter zet het in diepe slaap – in mijn ervaring, deze schijven omlaag het verbruik tot een loutere 3mA, genoeg voor de dezelfde batterijen kunnen duren ongeveer 20 weken (slechts later ik over De garnalen en andere extreem lage stroomkringen ATM368, die verlengen de levensduur van de batterij van een lantaarn ingesteld leerde zou op langer dan de fysieke leven van de batterijen zelf. Nou, zal er een volgende keer)
- u kan niet beslissen hoeveel water u afzien door simpelweg het lezen van de sonde totdat u "het NAT genoeg" - overwegen omdat het duurt enige tijd op het water te infiltreren in de bodem, daarom zult u ofwel beslist het te vroeg (als de sonde is dichtbij waar het water de grond, raakt zodat de bodem te snel NAT) of te laat (als de sonde een beetje te ver is en het duurt enige tijd voor het water om te infiltreren eigenlijk de bodem). Beter stok met de rechtsstaat "als het te droog, giet een vooraf bepaalde hoeveelheid water, stoppen en wachten op een goede terwijl voordat het opnieuw testen"
- u kan niet vooraf thuis het water parameters, ga dan in het veld en verwachten zo goed als u 'afgestemd' om te werken. Elke bodem zal hebben eigen gehalte aan mineralen, de structuur, de compactheid, de capaciteit te behouden water, etc-die de parameters aanzienlijk zal beïnvloeden. Een of andere manier, ik zag mezelf gaan het veld waarin de laptop met mij alleen om setup elk drenken punt met de waarden van de zeer specifieke parameters.
Hoe dan ook, het bovenstaande blijkt dat de configuratie van de domeincontroller logica minstens 3 parameters moet en zeer wenselijk, deze 3 parameters instelbare moeten zonder het gebruik van een computer:
- de "droogheid drempel" - het niveau een acht drenken noodzakelijk
- de hoeveelheid tijd te passen drenken – dit correleert met de hoeveelheid water verstrekt voor de plant
- de tijd tussen twee opeenvolgende vochtigheid lezingen (tussen de Arduino zal diepe slaap worden gebracht)
Natuurlijk is er ook de kwestie van de sonde lezingen (na het uploaden van het programma), als alleen omwille van de diagnose van wat er gaande is.
Verwijzen naar het schema in de "de controller - schema", dit is waar de PProg0/Rgnd0/Pgnd0 – laten we pompeuze noemen het "de configuratie van bestuur" (lowish rechts van het schema) en CONN_Settings1/CONN_Supply1 (top van schema, boven Arduino connectoren) komen aan het spelen: tijdens het opstarten, de analoge pinnen A0-A3 van de Arduino board zijn geconfigureerd, zoals INPUT_PULLUP gedurende de fase van de installatie en de logica de 4 pennen controleert en interpreteren van het resultaat als een opdracht van de mogelijke 16. Daarom, om "duidelijk" een pin, alleen moet u verbinding maken met een pin op de grond met behulp van de "configuratie van bestuur" (de Pgnd0 DuPont-pin van het "configuratie board" stok in de grond pin van de CONN_Supply1, en vervolgens met de andere Pprog0 pinnen te trekken van de overeenkomstige Arduino configuratie pinnen op de elektrische grond).
Opmerking: natuurlijk het hele ding kon gedaan te zijn met 4 knevel micro-switches en misschien worden ze paste op het bord. Maar ik liever houden de dingen zo goedkoop mogelijk (en op een "macro" dimensie - in mijn ogen niet wat ze gebruikt worden).
De lijst van commando's setup - met de volgorde van codes in de {A0, A1, A2, A3}:
- operationele modus - {0,0,0,0} - geen setup, de normale werking
- set drenken tijd - {1,0,0,0} - de controller zal overschakelen op de pomp en houd het op, totdat de draad is teruggetrokken uit de geheime code; op dat moment de controller slaat de opgenomen water duur en gebruikt voor de volgende cycli;
- set drempel vochtigheidsniveau - {0,1,0,0} - de controller lezen van het huidige vochtigheidsniveau, interpreteert het als het minimale niveau en zal leiden tot het water wanneer de waarde deze waarde (de volgende cyclus van de maatregel bereikt)
- 3 minuten tussen vocht testen - {1,1,0,0} - Hiermee stelt u de periode tussen twee opeenvolgende vocht indringende cycli op 3 minuten – nuttig voor testdoeleinden, niet aanbevolen voor lange termijn ingaat
- 1 uur tussen vocht testen - {0,0,1,0} - Hiermee stelt u de periode tussen twee opeenvolgende vocht indringende cycli tot 1 uur.
- 2 uur tussen vocht testen - {1,0,1,0} - Hiermee stelt u de periode tussen twee opeenvolgende vocht indringende cycli tot 2 uur.
- 3 uur tussen het vocht testen - {0,1,1,0} - Hiermee stelt u de periode tussen twee opeenvolgende vocht indringende cycli tot 3 uur.
- 4 uur tussen vocht testen - {1,1,1,0} - Hiermee stelt u de periode tussen twee opeenvolgende vocht indringende cycli tot 4 uur.
- 6 uur tussen vocht testen - {0,0,0,1} - Hiermee stelt u de periode tussen twee opeenvolgende vocht indringende cycli tot 6 uur.
- 8 uur tussen vocht testen - {1,0,0,1} - Hiermee stelt u de periode tussen twee opeenvolgende vocht indringende cycli tot 8 uur.
- 12 uur tussen het vocht testen - {0,1,0,1} - Hiermee stelt u de periode tussen twee opeenvolgende vocht indringende cycli tot 12 uur.
- diagnose modus - {1,1,0,1} - voert vochtigheid indringende elke 5 seconden en het aantal geregistreerde pulsen via de seriële interface van USB - handig voor systeemdiagnose
- voorbehouden - {0,0,1,1} - gereserveerd voor toekomstige uitbreidingen
- voorbehouden - {1,0,1,1} - gereserveerd voor toekomstige uitbreidingen
- voorbehouden - {0,1,1,1} - gereserveerd voor toekomstige uitbreidingen
- Reset naar fabrieksinstellingen - bepaalt de drempel naar iets dat geen bodem (ongeacht hoe droog) zal leiden tot drenken, het interval tussen 2 vochtigheid sonderen op 6 uur en het drenken tijd tot 5 seconden (dat wil zeggen een configuratie die zeker aan verandering nuttig doel behoefte zal vaststelt)
U kunt de broncode downloaden vanaf de projectpagina op github.