Innehållsförteckning:

APIS - Automatiserat växtbevattningssystem: 12 steg (med bilder)
APIS - Automatiserat växtbevattningssystem: 12 steg (med bilder)

Video: APIS - Automatiserat växtbevattningssystem: 12 steg (med bilder)

Video: APIS - Automatiserat växtbevattningssystem: 12 steg (med bilder)
Video: Smarta AI sensorer | Advania & Cisco Meraki 2024, November
Anonim
APIS - Automatiserat växtbevattningssystem
APIS - Automatiserat växtbevattningssystem

HISTORIEN: (en nästa utveckling av detta system finns tillgänglig här)

Det finns ganska många instruktioner om ämnet växtbevattning, så jag hittade knappt något original här. Det som gör detta system annorlunda är mängden programmering och anpassning som gick in i det, vilket möjliggör bättre kontroll och integration i det dagliga livet.

Här är en video av en vattning: vattning

Så här uppstod APIS:

Vi har två red hot chili peppar växter, som knappt har "överlevt" flera av våra semestrar, och nästan övervägt familjemedlemmar vid denna tidpunkt. De har gått igenom extrem torka och övervattning, men har alltid återhämtat sig på något sätt.

Idén att bygga Arduino-baserad växtvattning var nästan den första idén om hur Arduino skulle kunna tillämpas som ett hemautomatiseringsprojekt. Så ett enkelt växtbevattningssystem byggdes.

Men version 1 hade ingen indikation på jordfuktighet, och det fanns inget sätt att avgöra om det var på väg att vattna växterna, eller om vattningen var några dagar bort.

Nyfikenhet, som vi alla vet, dödade katten, och Version 2 byggdes med en fyrsiffrig 7 -segmentsmodul för att alltid visa aktuell luftfuktighet.

Det var inte tillräckligt. Nästa fråga var "när var det sist det vattnade plantorna"? (Eftersom vi sällan var hemma för att bevittna det). Version 3 använde 7 -segmentsmodulen för att också visa hur länge sedan den senaste vattningskörningen inträffade (som en textsträng som körs).

En natt började vattningen klockan 4 och väckte alla. Frustrerande … Tycker det är för mycket arbete att stänga av APIS för natten och på dagen för att förhindra vattning mitt på natten, en realtidsklocka har lagts till för att få enheten att sova på natten som en del av version 4.

Eftersom klockan i realtid kräver periodiska justeringar (till exempel sommartid), innehåller version 5 tre knappar som gör det möjligt att ställa in olika växtparametrar.

Det slutade inte där. Jag märkte att fuktsonden tenderar att erodera ganska snabbt, mycket troligtvis på grund av att den (med konstruktion) var under konstant spänning, och därför var det konstant elektrisk ström mellan sonderna (eroderande anod). Den billiga jordsonden från Kina överlevde ungefär en vecka. Till och med en galvaniserad spik "uppätades" på en månad. En rostfri sond höll bättre, men jag märkte att även det gav upp. Version 6 startar sonden endast i 1 minut varje timme (och hela tiden under vattning), vilket minskar erosionen dramatiskt (~ 16 minuter om dagen kontra 24 timmar om dygnet).

Idén:

Utveckla växtbevattningssystem med följande funktioner:

  1. Mät jordfuktigheten
  2. När du har nått ett fördefinierat "lågt" fuktighetsmärke, slå på vattenpumpen och vattna plantorna tills ett "högt" fuktighetsmärke uppnås
  3. Vattning bör utföras i flera körningar, åtskilda av perioder av inaktivitet för att tillåta vattenmättnad genom jorden
  4. Systemet bör inaktivera sig själv på natten mellan "sömn" och "vakna" tider
  5. "Vakna" -tiden bör justeras för helger till ett senare värde
  6. Systemet bör hålla loggen över pumpkörningar
  7. Systemet bör visa aktuell avläsning av jordfuktighet
  8. Systemet ska visa datum/tid för senaste pumpkörning
  9. Vattningsparametrar bör vara justerbara utan omprogrammering
  10. Sluta pumpa och ange Feltillstånd om pumpkörning inte leder till förändring i luftfuktighet (ur vatten eller sensorproblem) som förhindrar översvämning av anläggningen och läckande vatten
  11. Systemet bör slå på/av fuktsonden för att undvika metallerosion
  12. Systemet bör tömma vatten från rören för att förhindra att mögel bildas inuti dem

Följande parametrar bör konfigureras via knappar:

  1. Luftfuktighet "låg" mark, i %, för att starta pumpkörning (standard = 60 %)
  2. Luftfuktigheten "hög", i %, för att stoppa pumpkörningen (standard = 65 %)
  3. Varaktighet för en enda vattning, i sek (standard = 60 sekunder)
  4. Antal försök för att nå målfuktigheten (standard = 4 körningar)
  5. Militär tid att inaktivera för natten, endast timmar (standard = 22 eller 22:00)
  6. Militär tid att aktivera på morgonen, endast timmar (standard = 07 eller 7 am)
  7. Helgjustering för morgonaktivering, deltatimmar (standard = +2 timmar)
  8. Aktuellt datum och tid

APIS skriver datum/tid för de 10 senaste vattningarna i EEPROM -minnet. Loggen kan visas med datum och tid för körningarna.

En av många saker vi lärde oss från APIS är att du faktiskt inte behöver vattna växter varje dag, vilket var vår rutin tills vi såg jordfuktighetsavläsningarna på en 7 -segmentskärm …

Steg 1: DELAR OCH VERKTYG

DELAR OCH VERKTYG
DELAR OCH VERKTYG
DELAR OCH VERKTYG
DELAR OCH VERKTYG

Du behöver följande delar för att bygga APIS:

KONTROLLBOX OCH SLANG:

  1. Arduino Uno board: på Amazon.com
  2. 12v peristaltisk vätskepump med silikonslang: på Adafruit.com
  3. 4X numerisk LED-display Digital Tube JY-MCU-modul: på Fasttech.com
  4. DS1307 Real Time Clock breakout board kit: på Adafruit.com (valfritt)
  5. Microtivity IM206 6x6x6mm Tact Switch: på Amazon.com
  6. Vero board: på Amazon.com
  7. L293D motordrivrutin IC: på Fasttech.com
  8. 3 x 10 kOhm motstånd
  9. Arduino projekterar plastfodral: på Amazon.com
  10. 12v AC/DC -adapter med 2,1 mm strömuttag: på Amazon.com
  11. Bambuspett
  12. Slitbanan och lite överdragslim
  13. Supermjukt latexgummislang 1/8 "ID, 3/16" OD, 1/32 "vägg, halvklart amber, 10 fot. Längd: på McMaster.com
  14. Slitstark nylon-tätning med taggar
  15. Slitstark Nylon Tight-Seal Piggmonterad rörmontering, Wye för 1/8 "Tube ID, vit, förpackningar om 10: på McMaster.com
  16. Som vanligt, trådar, lödverktyg etc.

FUKTSPROBB:

  1. Liten träbit (1/4 "x 1/4" x 1 ")
  2. 2 x aknextraktionsnålar i rostfritt stål: på Amazon.com
  3. Jordfuktighetsdetekteringssensormodul: på Fasttech.com

Steg 2: SOIL HUMIDITY PROBE V1

Jordfuktighetsprobe V1
Jordfuktighetsprobe V1
Jordfuktighetsprobe V1
Jordfuktighetsprobe V1
Jordfuktighetsprobe V1
Jordfuktighetsprobe V1

Jordfuktigheten mäts baserat på motståndet mellan två metallprober som sätts in i marken (cirka 1 tum från varandra). Schemat visas på bilden.

Den första sonden jag försökte var den du kan köpa från ett antal internetleverantörer (så här).

Problemet med dem är att folienivån är relativt tunn och eroderar snabbt (om en eller två veckor), så jag övergav snabbt den här färdigproducerade för den robusta sensorn, baserad på galvaniserad spik (se nästa steg)).

Steg 3: SOIL HUMIDITY PROBE V2

JORDFUKTIGHETSPROBLEM V2
JORDFUKTIGHETSPROBLEM V2
JORDFUKTIGHETSPROBLEM V2
JORDFUKTIGHETSPROBLEM V2

"Nästa generations" sond var hemgjord av två galvaniserade spikar, en träskiva och ett par trådar.

Eftersom jag redan hade en sliten tillverkad sond, återanvände jag anslutningsdelen och elektronikmodulen från den, i princip bara byte av jordkomponenten.

Galvaniserade naglar, till min förvåning, eroderade också (om än långsammare än tunn folie), men ändå snabbare än jag skulle vilja.

En annan sond konstruerades, baserad på nålar för rensning av akne. (se nästa steg).

Steg 4: SOIL HUMIDITY PROBE V3 "Katana"

Jordfuktighetsprobe V3
Jordfuktighetsprobe V3
JORDFUKTIGHETSPROBLEM V3
JORDFUKTIGHETSPROBLEM V3

Den rostfria sonden (som liknar samuraisvärd, därav namnet) är den som används för närvarande.

Jag tror att den snabba erosionen kan hänföras till det faktum att sonden alltid var under elektrisk spänning (24x7) oavsett hur ofta den faktiska mätningen ägde rum.

För att mildra detta ändrade jag mätintervallen till en gång per 1 timme (trots allt är detta INTE ett realtidssystem) och kopplade sonden till en av de digitala stiften istället för permanent 5v. För närvarande drivs sonden endast ~ 16 minuter per dag istället för 24 timmar, vilket borde öka dess livslängd dramatiskt.

Steg 5: GRUNDLÄGGANDE FUNKTIONALITET

GRUNDLÄGGANDE FUNKTIONALITET
GRUNDLÄGGANDE FUNKTIONALITET
GRUNDLÄGGANDE FUNKTIONALITET
GRUNDLÄGGANDE FUNKTIONALITET

APIS är baserat på Arduino UNO -styrelse.

APIS mäter jordfuktigheten en gång i timmen, och om den faller under ett fördefinierat tröskelvärde startar pumpen under en fördefinierad tidsperiod fördefinierat antal gånger åtskilda av "mättnad" -intervall.

När ett måltröskelvärde för luftfuktighet har uppnåtts går processen tillbaka till mätningsläge en gång i timmen.

Om målfuktigheten inte kan nås, men den nedre gränsen nåddes, är det också OK (åtminstone en del vattning ägde rum). Orsaken kan vara olycklig sondplacering, där den är för långt från den fuktiga jorden.

Om även den lägre luftfuktighetsgränsen inte kunde nås, deklareras ett felvillkor. (Förmodligen en sondfråga, eller leveranshinken tog slut på vatten, etc.). Vid felstillstånd sover enheten i 24 timmar utan att göra något och försöker sedan igen.

Steg 6: 7 SEGMENT DISPLAY

7 SEGMENT DISPLAY
7 SEGMENT DISPLAY
7 SEGMENT DISPLAY
7 SEGMENT DISPLAY

TM1650 BASERAD 7 SEGMENT DISPLAY:

Ursprungligen hade APIS ingen visningsmöjlighet. Det var omöjligt att berätta jordens nuvarande fuktighetsnivå utan att ansluta via USB.

För att fixa det lade jag till en fyrsiffrig 7 -segmentskärm till systemet: på Fasttech.com

Jag kunde inte hitta ett bibliotek att arbeta med den här modulen någonstans (varken ett datablad för det), så efter några timmar med I²C -portundersökning och experiment, bestämmer jag mig för att skriva ett drivrutinsbibliotek själv.

Den stöder upp till 16 siffror (med 4 som standard), kan visa grundläggande ASCII -tecken (observera att alla tecken inte kan konstrueras med 7 segment, så bokstäver som W, M, etc. är inte implementerade)., Stöder decimaler punktvisning på modulen, med teckensträng (för att visa mer än 4 bokstäver), och stöder 16 ljusstyrka.

Biblioteket finns tillgängligt på arduino.cc lekplats här. TM1650 drivrutinsbibliotek

Exempelfilm finns här

ANIMERING:

Lite 7 -segment animering implementeras under en vattenlöpning.

  • Medan pumpen är inkopplad, körs de digitala prickarna på displayen i ett vänster till höger -mönster, som symboliserar en vattendrag: vattning av animationsvideo
  • Under "mättnad" -perioden löper prickarna från mitten av skärmen utåt och symboliserar mättnad: animationsvideo för mättnad

Onödigt, men en fin touch.

Steg 7: PUMP och PUMPKONTROLL

PUMP och PUMPKONTROLL
PUMP och PUMPKONTROLL
PUMP och PUMPKONTROLL
PUMP och PUMPKONTROLL

PUMP

Jag använde 12v peristaltisk vätskepump (finns här) för att vattna plantorna. Pumpen ger cirka 100 ml/min (vilket är ungefär 1/2 av ett glas - bra att komma ihåg vid konfigurering av vattentiden för att undvika överflöden, och det hände 8-))

PUMPKONTROLL - L293D

Pumpen styrs via L293D -drivrutinschip. Eftersom rotationsriktningen är förinställd behöver du verkligen bara använda chip-aktiveringsstiftet för kontroll. Riktningsstiftet kan kopplas direkt till +5v och GND permanent.

Om du (som jag) inte var säker på vilken riktning pumpen kommer att gå, kan du fortfarande ansluta alla tre stiften till Arduino och styra riktningen programmatiskt. Mindre omlödning.

Steg 8: KONFIGURATION och KNAPPAR

KONFIGURATION och KNAPPAR
KONFIGURATION och KNAPPAR
KONFIGURATION och KNAPPAR
KONFIGURATION och KNAPPAR

KNAPPAR:

Jag använde tre knappar för att konfigurera och styra APIS.

Alla knapptryckningar bearbetas baserat på stiftavbrotten (PinChangeInt -biblioteket).

  • Röd (längst till höger) är en SELECT -knapp. Det får APIS att gå in i konfigurationsläge och bekräftar också värdena.
  • Svarta knappar längst till vänster och i mitten (PLUS respektive MINUS) används för att öka/minska konfigurerbara värden (i konfigurationsläget) eller visa aktuellt datum/tid och information om senaste körning (i normalt läge).

Eftersom displayen för det mesta är avstängd kommer alla knappar först att "väcka" APIS och först då, vid ett andra tryck, utföra sin funktion.

Displayen stängs av efter 30 sekunder av inaktivitet (om inte en vattning körs).

APIS kör igenom konfigurationsparametrarna vid start för granskning: video

KONFIGURATION:

APIS har fyra konfigurationslägen:

  1. Konfigurera vattningsparametrar
  2. Ställ in realtidsklocka
  3. "Tvinga" vattning
  4. Granska vattningslogg

VATTENPARAMETRAR:

  1. Tröskel för låg jordfuktighet (börja vattnas)
  2. Tröskel för hög jordfuktighet (sluta vattna)
  3. Varaktighet för en enda vattning (i sekunder)
  4. Antal vattningskörningar i en sats
  5. Jordmättnadens varaktighet mellan körningarna inom en sats (i minuter)
  6. Nattlägesaktiveringstid (militärtid, endast timmar)
  7. Sluttid för nattläge (militärtid, endast timmar)
  8. Helgjustering för nattläge sluttid (i timmar)

INSTÄLLNING AV REAL TIME CLOCK:

  1. Århundrade (dvs 20 för 2015)
  2. År (dvs 15 för 2015)
  3. Månad
  4. Dag
  5. Timme
  6. Minut

Klockan justeras med sekunder inställda på 00 efter bekräftelse av minuter.

Inställningen har en tidsgräns på 15 sekunder, varefter alla ändringar avbryts.

Vid sparning sparas parametrar i EEPROM -minnet.

Tvinga fram en vattenskylning:

Vet fortfarande inte varför jag implementerade det, men det är där. När den är aktiverad går APIS in i vattningsläget. Vattningsläget är dock fortfarande föremål för trösklar. Detta innebär att om du tvingar vattningslöpning, men jordfuktigheten är över HIGH -märket, slutar vattningskörningen omedelbart. I grund och botten fungerar detta bara om markfuktigheten ligger mellan LÅG och HÖG tröskelvärden.

VÄNDNINGSLOGGÖVERSIKT:

APIS för en logg över de senaste 10 vattningskörningarna i EEPROM -minnet, som användaren kan granska. Endast datum/tid för bevattningskörningen lagras. Trösklar (vid tidpunkten) och antalet körningar som det tog för att nå HÖG tröskel lagras inte (även om de i nästa version kan vara det).

Steg 9: RTC: REAL TIME CLOCK

RTC: REAL TIME CLOCK
RTC: REAL TIME CLOCK

NATTLÄGE

När APIS väckte mig på natten, kom jag på en idé att implementera ett "nattläge".

Ett nattläge är när inga mätningar sker, displayen är avstängd och inga vattningskörningar.

På en vanlig arbetsdag "vaknar" APIS klockan 7 (konfigurerbar) och går in i nattläge klockan 22 (konfigurerbar). På en helg använder APIS en inställning för "helgjustering" för att fördröja en uppvakning (till kl. 9.00 till exempel, om helgjusteringen är 2 timmar).

RTC BREAKOUT BOARD vs. "SOFTWARE" RTC:

Jag använde hårdvaru -RTC (tillgänglig här) för att hålla reda på datum/tid och gå in/ut från nattlägen.

Det är valfritt att använda, eftersom skisser kan kompileras för att använda så kallad "programvara" RTC (med hjälp av millis () -funktionalitet för arduino).

Nackdelen med att använda programvara RTC är att du måste ställa in tiden varje gång APIS startar.

Jag modifierade standard RTC -biblioteket för att matcha API exakt, och också för att kringgå millis rollover -problem. (Se skisssteget för nedladdningar).

Steg 10: SÄTTA DET ALLT SAMMAN

FÅ ALLTID ATT FALLA PÅ PLATS
FÅ ALLTID ATT FALLA PÅ PLATS
FÅ ALLTID ATT FALLA PÅ PLATS
FÅ ALLTID ATT FALLA PÅ PLATS
FÅ ALLTID ATT FALLA PÅ PLATS
FÅ ALLTID ATT FALLA PÅ PLATS
FÅ ALLTID ATT FALLA PÅ PLATS
FÅ ALLTID ATT FALLA PÅ PLATS

Hela systemet (förutom sonden) inklusive pumpen passar i en liten låda för Arduino Uno.

  1. TM1650 -skärmen använder TWI -gränssnitt, så SDA- och SDC -ledningarna går till Arduino -stiften A4 respektive A5. De andra två ledningarna är +5v och GND.
  2. RTC -kortet använder TWI -gränssnitt, så samma som ovan. (TM1650 och RTC använder olika portar, så de samsas fredligt). RTC +5v -stift är anslutet till arduino -stift 12 (drivs via digitalt stift istället för +5v). Minns inte varför jag gjorde det, du behöver inte.
  3. L293D -stiften är anslutna enligt följande: aktivera (stift 1) till D5 och riktningskontrollstift 2 och 7 till arduino -stift D6 respektive D7.
  4. KNAPPAR är anslutna till stiften D2, D8 och D9 för SELECT, PLUS respektive MINUS. (Knappar implementeras med ett neddragbart 10K-motstånd-i "aktiv-hög" -konfigurationen).
  5. PROBE -modulens +5v effekt är ansluten till arduino -stift 10 (för att möjliggöra periodiska mätningar), och sonden är ansluten till analog stift A1.

OBS: Fritzing -schematisk fil har lagts till i github -förvaret.

Steg 11: SKETSAR och mer

SKETSAR och mer
SKETSAR och mer

Uppdatering för mars 2015:

  1. Tillagd funktionalitet för att tömma rören efter vattningskörning för att förhindra att mögel bildas (pojke! Jag är glad att jag inte har kopplat pumpens rotationsriktning på L293D!)
  2. Mer omfattande loggning inkluderar datum/tid för vattningens start och slut, start- och slutfuktighet och hur många gånger pumpen kopplades in under vattningskörningen
  3. Felrutin uppdaterad: enheten återställs hårt efter 24 timmar efter att ha angett felvillkoret
  4. Omkompilerad med TaskScheduler 2.1.0
  5. Olika andra buggfixar

Från och med den 18 november 2015 uppgraderades 2015 APIS med följande ytterligare funktioner:

  1. Användning av DirectIO -bibliotek för snabbare och enklare stiftändringar
  2. Användning av tidszonsbiblioteket för att korrekt växla mellan EST och EDT
  3. Lade till knappavstängningslogik med endast TaskScheduler
  4. Tillagd funktion för upprepning av knappar (värden cykel om knappen hålls intryckt, med cykelhastighet som ökar efter 5 cykler)
  5. Omkompilerad med IDE 1.6.6 AVR 1.6.9 mot TaskScheduler 1.8.4
  6. Flyttade till Github

BIBLIOTEKER:

APIS är baserat på följande bibliotek:

  • EEPROM - en del av Arduino IDE
  • Wire - en del av Arduino IDE
  • EnableInterrupt - tillgängligt på Github
  • Tidszon - tillgänglig på Github
  • DirectIO - tillgängligt på Github

Modifierad (gafflad) av mig:

  • Tid - tillgänglig på Github
  • RTClib - tillgänglig på Github

Utvecklad av mig:

  • TM1650 - tillgänglig på Github
  • TaskScheduler - tillgänglig på Github
  • AvgFilter - tillgängligt på Github

SKISS:

Den senaste versionen av APIS -skissen, inklusive fritzing schematics file, är tillgänglig på Github

DATABLAD:

  • L293D: här
  • RTC breakout board: här

Steg 12: *** VI VINNADE !!! ***

*** VI VANN !!! ***
*** VI VANN !!! ***

Detta projekt vann andra pris i tävlingen Home Automation sponsrad av Dexter Industries.

Kolla in det! WOO-HOO !!!

Hemautomation
Hemautomation
Hemautomation
Hemautomation

Andra pris i hemmautomation

Rekommenderad: