Automatiska bevattningssystem med kapacitiv sond och Arduino på billiga (och jag menar det) (6 / 10 steg)
Steg 6: Controller - logik
Nu, om logiken i den Arduino controller: räkna pulser, om de får över en tröskel, utlösa den vattning. Logiken är enkel, är inte det? Utom efter min första iteration upptäckte jag det är inte bara enkelt utan också alltför förenklat. Brister:
- Du kan inte hålla jorden mäta processen körs kontinuerligt om du använder batterier som din kraftkälla. Medan mätning använder registeransvarige om 35-40mA (mer kommer att dras när vattning). En uppsättning av två 4R25X 6V batterier (aka "lantern batterier") var tömda i ungefär två veckor – multiplicera detta med antalet vattning poäng och du ser det inte längre är billigt. Bättre ta fukt mätningar med timmar mellan dem – Använd ditt sunda förnuft, tiden mellan två åtgärder varierar på säsongen, temperatur, mängden jord runt din anläggning etc.
- Ännu mer, kan inte du ens hålla din Arduino fullt levande mellan två mätningar, utan att göra något mellan två mätningar. en Pro Mini kommer fortfarande att dra 20 — 25mA – så ett batteri som varar endast 3-4 veckor. Bättre lägga den in i djup sömn – min erfarenhet är detta enheter ner förbrukningen till en ren 3mA, nog för att samma batterierna sista ca 20 veckor (endast senare lärde jag mig om The räkor och andra extremt låga nuvarande ATM368 kretsarsom skulle förlänga livslängden på en lykta batteri inställd längre än det fysiska livet batterier själva. Tja, blir det en nästa gång)
- Du kan inte bestämma hur mycket vatten du avstå från genom att helt enkelt läsa sonden tills du överväga "det är vått nog" - eftersom det tar tid för vattnet att infiltrera marken, därför ska du antingen besluta det för tidigt (om sonden är nära där vattnet träffar marken, så att jorden blir våt för snabbt) eller för sent (om sonden är lite för långt och det tar tid för vattnet att faktiskt infiltrera den smutsa). Bättre minne med rättsstatsprincipen "om det är för torrt, häll en förutbestämd mängd vatten, stoppa och vänta en bra stund innan testa igen"
- Du kan inte förinställda parametrarna vattning hemma, sedan gå i fältet och förvänta sig att fungera så bra som du "trimmad" det till. Varje jord kommer att ha sin egen mineralhalt, struktur, kompakthet, förmåga att behålla vatten, etc-som kommer att påverka parametrarna ganska betydligt. På något sätt, jag såg mig själv gå det fältet med den bärbara datorn med mig bara att installera varje vattning punkt med sina mycket specifika parametrar värden.
Hur som helst, ovanstående visar att controller logik konfigurationen kommer att behöva minst 3 parametrar och mycket att föredra, dessa 3 parametrar bör inställningsbara utan att kräva användning av en dator:
- "torrhet tröskeln" - nivån en anser vattning behövs
- tid att tillämpa vattna – detta korrelerar väl med mängden vatten som doseras för anläggningen
- tiden mellan två på varandra följande luftfuktighet behandlingar (mellan Arduino kommer att sättas in i djup sömn)
Det är naturligtvis också frågan om sonden avläsningar (efter uppladdning programmet), om bara för att diagnostisera vad som pågår.
Hänvisar till schemat i den "controller - schema", det är där PProg0/Rgnd0/Pgnd0 – låt oss pompöst kallar det "konfiguration styrelsen" (lowish höger i schemat) och CONN_Settings1/CONN_Supply1 (överst på schema, ovanför Arduino kopplingar) kommer det spela: vid uppstart, analog stiften A0-A3 av Arduino styrelsen är konfigurerade som INPUT_PULLUP under setup scenen och logik kontrollerar de 4 stift och tolka resultatet som ett kommando av möjliga 16. Därför, för att "signal" en PIN-kod, du behöver bara ansluta en PIN-kod till marken med hjälp av "konfiguration board" (sticka Pgnd0 DuPont pin styrelsens"konfiguration" till den mark pin av CONN_Supply1 och sedan använda andra Pprog0 stiften för att dra motsvarande Arduino konfiguration stift till elektriska marken).
Obs: naturligtvis hela kunde ha gjorts med 4 mikro-vippströmbrytare och kanske de kunde vara passar på styrelsen. Men jag föredrog att hålla saker så billigt som möjligt (och på en "makro" dimension - mina ögon är inte vad de brukade vara).
Listan över installationen kommandon - med koder i {A0, A1, A2, A3} beställa:
- arbetsläge - {0,0,0,0} - inga inställningar, normal drift
- ställa in vattning tid - {1,0,0,0} - styrenheten kommer att slå på pumpen och håller det på tills linan dras ut från stift; i det ögonblicket, styrenheten sparar inspelade vattning varaktighet och använder det för nästa cykler;
- ställa in fukt tröskelvärdet - {0,1,0,0} - styrenheten läsa den aktuella fuktnivå, tolkar det som minimal nivå och utlöser den vattnas när värdet når detta värde (nästa åtgärd cykel)
- 3 minuter mellan fukt provning - {1,1,0,0} - anger perioden mellan två på varandra följande fukt sondering cykler till 3 minuter – användbar för teständamål, inte rekommenderas för lång sikt kör
- 1 timme mellan fukt provning - anger {0,0,1,0} - perioden mellan två på varandra följande fukt sondering cykler till 1 timme.
- 2 timmar mellan fukt provning - anger {1,0,1,0} - perioden mellan två på varandra följande fukt sondering cykler till 2 timmar.
- 3 timmar mellan fukt provning - anger {0,1,1,0} - perioden mellan två på varandra följande fukt sondering cykler till 3 timmar.
- 4 timmar mellan fukt provning - anger {1,1,1,0} - perioden mellan två på varandra följande fukt sondering cykler till 4 timmar.
- 6 timmar mellan fukt provning - anger {0,0,0,1} - perioden mellan två på varandra följande fukt sondering cykler till 6 timmar.
- 8 timmar mellan fukt provning - anger {1,0,0,1} - perioden mellan två på varandra följande fukt sondering cykler till 8 timmar.
- 12 timmar mellan fukt provning - anger {0,1,0,1} - perioden mellan två på varandra följande fukt sondering cykler till 12 timmar.
- diagnos-läge - {1,1,0,1} - utför luftfuktighet sondering var 5 sekunder och rapporterar antalet registrerade pulser genom USB-seriella gränssnittet - användbart för systemdiagnos
- reserverade - {0,0,1,1} - reserverat för framtida förlängningar
- reserverade - {1,0,1,1} - reserverat för framtida förlängningar
- reserverade - {0,1,1,1} - reserverat för framtida förlängningar
- återställa fabriksinställda - ställer in tröskelvärdet till något som ingen jord (oavsett hur torrt) kommer att utlösa vattning, intervallet mellan 2 luftfuktighet sondera till 6 timmar, och vattning till 5 sekunder (dvs upprättar en konfiguration som säkerligen behöver för meningsfullt)
Du kan hämta källkoden från projektsida på github.