Innholdsfortegnelse:

APIS - Automatisert plantevanningssystem: 12 trinn (med bilder)
APIS - Automatisert plantevanningssystem: 12 trinn (med bilder)

Video: APIS - Automatisert plantevanningssystem: 12 trinn (med bilder)

Video: APIS - Automatisert plantevanningssystem: 12 trinn (med bilder)
Video: Полный курс Redux Toolkit + RTK Query для начинающих | Редакс за 2 часа! 2024, November
Anonim
APIS - Automatisert plantevanningssystem
APIS - Automatisert plantevanningssystem

HISTORIEN: (en neste utvikling av dette systemet er tilgjengelig her)

Det er ganske mange instrukser om temaet plantevanning, så jeg fant knapt opp noe originalt her. Det som gjør dette systemet annerledes er mengden programmering og tilpasning som gikk inn i det, noe som gir bedre kontroll og integrering i det daglige livet.

Her er en video av en vanningsløp: vanningsløp

Slik oppstod APIS:

Vi har to rødglødende chilipepperplanter, som knapt har "overlevd" flere av feriene våre, og nesten vurdert familiemedlemmer på dette tidspunktet. De har vært gjennom ekstrem tørke og vanning, men har alltid kommet seg på en eller annen måte.

Ideen om å bygge Arduino-basert plantevanning var nesten den første ideen om hvordan Arduino kan brukes som et hjemmeautomatiseringsprosjekt. Så et enkelt plantevanningssystem ble bygget.

Imidlertid hadde versjon 1 ingen indikasjon på jordfuktighet, og det var ingen måte å si om det var i ferd med å vanne plantene, eller vanning var noen dager unna.

Nysgjerrighet, som vi alle vet, drepte katten, og versjon 2 ble bygget med en firesifret 7 -segmentsmodul for å vise gjeldende fuktighet til enhver tid.

Det var ikke nok. Det neste spørsmålet var "når var det siste gangen det vannet plantene"? (Siden vi sjelden var hjemme for å være vitne til det). Versjon 3 brukte 7 -segmentsmodulen til også å vise hvor lenge siden den siste vanningskjøringen skjedde (som en kjørende tekststreng).

En natt startet vanningen klokken 04.00 og vekket alle. Frustrerende … Synes det er for mye jobb å slå APIS av for natten og på for å forhindre vanning midt på natten, ble det lagt til en sanntidsklokke for å sette enheten i dvale om natten som en del av versjon 4.

Siden sanntidsklokken krever periodiske justeringer (som for eksempel bytte av sommertid), inneholder versjon 5 tre knapper som gjør det mulig å angi en rekke plantevanningsparametere.

Det stoppet ikke der. Jeg la merke til at fuktighetssonden har en tendens til å erodere ganske raskt, muligens på grunn av at den (etter design) var under konstant spenning, og derfor var det konstant elektrisk strøm mellom prober (eroderende anode). Den billige jordsonden fra Kina overlevde omtrent en uke. Til og med en galvanisert spiker ble "spist opp" på en måned. En sonde i rustfritt stål holdt bedre, men jeg la merke til at selv det ga opp. Versjon 6 slår på sonden i bare 1 minutt hver time (og hele tiden under vanning), og reduserer dermed erosjon dramatisk (~ 16 minutter om dagen mot 24 timer i døgnet).

Ideen:

Utvikle plantevanningssystem med følgende funksjoner:

  1. Mål jordfuktighet
  2. Når du når et forhåndsdefinert "lavt" fuktighetsmerke, slår du på vannpumpen og vanner plantene til et "høyt" fuktighetsmerke er nådd
  3. Vanning bør utføres i flere løp, atskilt med perioder med inaktivitet for å tillate metning av vann gjennom jorda
  4. Systemet bør deaktivere seg om natten mellom "søvn" og "våkne" tider
  5. "Wake up" -tiden bør justeres for helger til en senere verdi
  6. Systemet bør føre loggen over pumpekjøringer
  7. Systemet skal vise gjeldende avlesning av jordfuktighet
  8. Systemet skal vise dato/klokkeslett for siste pumpekjøring
  9. Vannparametere bør være justerbare uten omprogrammering
  10. Stopp pumpingen og angi Feiltilstand hvis pumpekjøring ikke fører til endring i fuktighet (ute av vann eller sensorproblemer) som forhindrer oversvømmelse av anlegget og vannlekkasje
  11. Systemet bør slå fuktighetssonden på/av for å unngå metall erosjon
  12. Systemet skal tappe vann fra rørene for å forhindre at det dannes mugg inne i dem

Følgende parametere bør konfigureres via knapper:

  1. Fuktighets "lav" -merke, i %, for å starte pumpekjøring (standard = 60 %)
  2. Luftfuktighet "høyt", i %, for å stoppe pumpekjøring (standard = 65 %)
  3. Varighet av en enkelt vanning, i sekunder (standard = 60 sekunder)
  4. Antall forsøk for å nå målfuktigheten (standard = 4 kjøringer)
  5. Militær tid for å deaktivere for natten, bare timer (standard = 22 eller 22:00)
  6. Militær tid for å aktivere om morgenen, bare timer (standard = 07 eller 7 am)
  7. Helgejustering for morgenaktivering, deltatimer (standard = +2 timer)
  8. Gjeldende dato og klokkeslett

APIS skriver dato/klokkeslett for 10 siste vanningsturer i EEPROM -minnet. Loggen kan vises, og viser dato og klokkeslett for løpene.

En av mange ting vi lærte fra APIS er at du faktisk ikke trenger å vanne planter hver dag, noe som var vår rutine før vi så jordfuktighetsavlesningene på et 7 -segmenters display …

Trinn 1: DELER OG VERKTØY

DELER OG VERKTØY
DELER OG VERKTØY
DELER OG VERKTØY
DELER OG VERKTØY

Du trenger følgende deler for å bygge APIS:

KONTROLLBOKS OG SLANG:

  1. Arduino Uno -brett: på Amazon.com
  2. 12v peristaltisk væskepumpe med silikonrør: på Adafruit.com
  3. 4X numerisk LED-skjerm Digital Tube JY-MCU-modul: på Fasttech.com
  4. DS1307 sanntids klokkeutbruddssett: på Adafruit.com (valgfritt)
  5. Microtivity IM206 6x6x6mm taktbryter: på Amazon.com
  6. Vero board: på Amazon.com
  7. L293D motordriver IC: på Fasttech.com
  8. 3 x 10 kOhm motstander
  9. Arduino prosjekter plastkasse: på Amazon.com
  10. 12v AC/DC -adapter med en 2,1 mm strømkontakt: på Amazon.com
  11. Bambusspyd
  12. Slitebane og litt supercement lim
  13. Supermyk latexgummislange 1/8 "ID, 3/16" OD, 1/32 "vegg, halvklart rav, 10 fot. Lengde: på McMaster.com
  14. Slitesterk Nylon Tight-Seal Barbed Tube Fitting, Tee for 1/8 "Tube ID, White, pakker med 10: på McMaster.com
  15. Slitesterk nylon tetningsforsegling med piggrør, Wye for 1/8 "Tube ID, hvit, pakker med 10: på McMaster.com
  16. Som vanlig, ledninger, loddeverktøy, etc.

FUKTIGHETSPROBE:

  1. Lite treverk (1/4 "x 1/4" x 1 ")
  2. 2 x nåler for ekstraksjon av akne i rustfritt stål: på Amazon.com
  3. Jordmodulighetsdeteksjonssensormodul: på Fasttech.com

Trinn 2: JORDFUKTIGHETSPROBE V1

JORDFUKTIGHETSPROBE V1
JORDFUKTIGHETSPROBE V1
JORDFUKTIGHETSPROBE V1
JORDFUKTIGHETSPROBE V1
JORDFUKTIGHETSPROBE V1
JORDFUKTIGHETSPROBE V1

Jordfuktighet måles basert på motstanden mellom to metallprober som er satt inn i bakken (omtrent 1 tomme fra hverandre). Skjemaene er representert på bildet.

Den første sonden jeg prøvde var den du kan kjøpe fra en rekke internettleverandører (som denne).

Problemet med dem er at folienivået er relativt tynt og eroderer raskt (i løpet av en eller to uker), så jeg forlot raskt denne ferdigproduserte for den mer robuste sensoren, basert på galvanisert spiker (se neste trinn).

Trinn 3: JORDFUKTIGHETSPROBE V2

JORDFUKTIGHETSPROBE V2
JORDFUKTIGHETSPROBE V2
JORDFUKTIGHETSPROBE V2
JORDFUKTIGHETSPROBE V2

"Neste generasjons" sonde var hjemmelaget av to galvaniserte spiker, et trebord og et par ledninger.

Siden jeg allerede hadde en slitt produsert sonde, brukte jeg tilkoblingsstykket og elektronikkmodulen igjen fra den, i utgangspunktet bare bytte ut jordkomponenten.

Galvaniserte negler, til min overraskelse, erodert også (om enn tregere enn tynn folie), men fortsatt raskere enn jeg skulle ønske.

En annen sonde ble designet, basert på nåler for fjerning av akne i rustfritt stål. (se neste trinn).

Trinn 4: SOIL FUKTIGHETSPROBE V3 "Katana"

JORDFUKTIGHETSPROBE V3
JORDFUKTIGHETSPROBE V3
JORDFUKTIGHETSPROBE V3
JORDFUKTIGHETSPROBE V3

Sonden i rustfritt stål (som ligner samuraisverd, derav navnet) er den som brukes for tiden.

Jeg tror den raske erosjonen kan tilskrives det faktum at sonden alltid var under elektrisk spenning (24x7) uavhengig av hvor ofte den faktiske målingen fant sted.

For å redusere dette, endret jeg måleintervallene til å være en gang i 1 time (tross alt, dette er IKKE et sanntidssystem), og koblet sonden til en av de digitale pinnene i stedet for permanent 5v. For øyeblikket blir sonden bare drevet ~ 16 minutter per dag i stedet for 24 timer, noe som bør øke levetiden dramatisk.

Trinn 5: GRUNNLEGGENDE FUNKSJONALITET

GRUNNLEGGENDE FUNKSJONALITET
GRUNNLEGGENDE FUNKSJONALITET
GRUNNLEGGENDE FUNKSJONALITET
GRUNNLEGGENDE FUNKSJONALITET

APIS er basert på Arduino UNO -styre.

APIS måler jordfuktigheten en gang i timen, og hvis den faller under en forhåndsdefinert terskel, slås pumpen på i en forhåndsdefinert tidsperiode forhåndsdefinert antall ganger atskilt med "metning" -intervaller.

Når en målt fuktighetsgrense er nådd, går prosessen tilbake til en gang i timen målemodus.

Hvis målfuktigheten ikke kan nås, men den nedre grensen ble nådd, er det også OK (i det minste fant det litt vanning sted). Årsaken kan være uheldig sondeplassering, der den er for langt fra fuktig jord.

Men hvis ikke den nedre luftfuktighetsgrensen ikke kunne nås, erklæres en feiltilstand. (Mest sannsynlig er det et sondeproblem, eller det er tomt for vann i bøtte osv.). Under feiltilstand vil enheten sove i 24 timer uten å gjøre noe, og deretter prøve igjen.

Trinn 6: 7 SEGMENT DISPLAY

7 SEGMENTVISNING
7 SEGMENTVISNING
7 SEGMENTVISNING
7 SEGMENTVISNING

TM1650 BASERT 7 SEGMENTVISNING:

Opprinnelig hadde APIS ingen visningsevne. Det var umulig å fortelle gjeldende jordfuktighetsnivå uten å koble til via USB.

For å fikse det, la jeg til et firesifret 7 -segment display til systemet: på Fasttech.com

Jeg kunne ikke finne et bibliotek for å jobbe med denne modulen noe sted (verken et datablad for det), så etter noen timer med I²C -portundersøkelse og eksperimentering, bestemmer jeg meg for å skrive et driverbibliotek selv.

Den støtter skjermer opptil 16 sifre (med 4 som standard), kan vise grunnleggende ASCII -tegn (vær oppmerksom på at ikke alle tegn kan konstrueres med 7 segmenter, så bokstaver som W, M, etc. er ikke implementert)., Støtter desimal punktvisning på modulen, som kjører en rekke tegn (for å vise mer enn 4 bokstaver), og støtter 16 lysstyrker.

Biblioteket er tilgjengelig på arduino.cc lekeplass her. TM1650 driverbibliotek

Eksempelvideo er tilgjengelig her

ANIMASJON:

Litt av 7 segmenters animasjon er implementert under en vannføring.

  • Mens pumpen er aktivert, kjører de digitale prikkene på skjermen i et venstre til høyre mønster, som symboliserer en vannføring: vanning av animasjonsvideo
  • Under "metning" -perioden løper prikkene fra midten av skjermen utover og symboliserer metning: metningsanimasjonsvideo

Unødvendig, men en fin touch.

Trinn 7: PUMPE- og PUMPKONTROLL

PUMPE og PUMPKONTROLL
PUMPE og PUMPKONTROLL
PUMPE og PUMPKONTROLL
PUMPE og PUMPKONTROLL

PUMPE

Jeg brukte 12v peristaltisk væskepumpe (tilgjengelig her) for vanning av plantene. Pumpen gir omtrent 100 ml/min (som er omtrent 1/2 av et glass - godt å huske når du konfigurerer vanntiden for å unngå overløp, og det skjedde 8-))

PUMPEKONTROLL - L293D

Pumpen styres via L293D -motordriverbrikke. Siden rotasjonsretningen er forhåndsinnstilt, trenger du egentlig bare å bruke chip-aktiveringsnålen for kontroll. Retningspinnene kan kobles direkte til +5v og GND permanent.

Hvis du (som meg) ikke var sikker på hvilken retning pumpen vil gå, kan du fortsatt koble alle tre pinnene til Arduino og kontrollere retningen programmatisk. Mindre lodding.

Trinn 8: KONFIGURASJON og KNAPPER

KONFIGURASJON og KNAPPER
KONFIGURASJON og KNAPPER
KONFIGURASJON og KNAPPER
KONFIGURASJON og KNAPPER

KNAPPER:

Jeg brukte tre knapper til å konfigurere og kontrollere APIS.

Alle knappetrykk behandles basert på pin -avbruddene (PinChangeInt -biblioteket).

  • Rød (lengst til høyre) er en SELECT -knapp. Det får APIS til å gå inn i konfigurasjonsmodus, og bekrefter også verdiene.
  • Svarte venstre og midtre knapper (henholdsvis PLUS og MINUS) brukes til å øke/redusere konfigurerbare verdier (i konfigurasjonsmodus), eller vise gjeldende dato/klokkeslett og siste vanningskjøringsinformasjon (i normal modus).

Siden skjermen er slått av mest, vil alle knappene først "vekke" APIS, og først deretter, ved et annet trykk, utføre sin funksjon.

Skjermen slås av etter 30 sekunders inaktivitet (med mindre en vanningskjøring pågår).

APIS går gjennom konfigurasjonsparameterne ved oppstart for gjennomgang: video

KONFIGURASJON:

APIS har fire konfigurasjonsmoduser:

  1. Konfigurer vanningsparametere
  2. Sett opp sanntidsklokke
  3. "Force" vanning
  4. Gjennomgå vanningsloggen

VANNPARAMETRE:

  1. Lav jordfuktighetsgrense (start vanning)
  2. Høy terskel for jordfuktighet (stopp vanning)
  3. Varighet av en enkelt vanning (i sekunder)
  4. Antall vanningsløp i en batch
  5. Varigheten av jordmetningsperioden mellom kjøringer innen en batch (i minutter)
  6. Aktiveringstid for nattmodus (militær tid, bare timer)
  7. Nattmodus sluttid (militær tid, bare timer)
  8. Helgejustering for nattmodusens sluttid (i timer)

OPPSETT AV REAL TIME CLOCK:

  1. Århundre (dvs. 20 for 2015)
  2. År (dvs. 15 for 2015)
  3. Måned
  4. Dag
  5. Time
  6. Minutt

Klokken justeres med sekunder satt til 00 ved bekreftelse av minutter.

Innstillingen har en tidsavbruddsperiode på 15 sekunder, hvoretter alle endringer avbrytes.

Ved lagring lagres parametere i EEPROM -minnet.

Tvinge en vannkjøring:

Fortsatt ikke sikker på hvorfor jeg implementerte det, men det er der. Når den er aktivert, går APIS inn i vanningsmodus. Vanningsmodusen er imidlertid fortsatt underlagt terskler. Dette betyr at hvis du tvinger vanningsløp, men jordfuktigheten er over HIGH -merket, vil vanningsløpet umiddelbart avsluttes. I utgangspunktet fungerer dette bare hvis jordfuktigheten er mellom LAV og HØY terskel.

VANNLOGGGJENNOMGANG:

APIS fører en logg over de siste 10 vanningskjøringene i EEPROM -minnet, som brukeren kan se gjennom. Bare dato/klokkeslett for vanningsløpet lagres. Terskler (på det tidspunktet), og antall løp det tok for å nå HØY terskel, lagres ikke (selv om de kan være det i neste versjon).

Trinn 9: RTC: REAL TIME CLOCK

RTC: REAL TIME CLOCK
RTC: REAL TIME CLOCK

NATTMODUS

Når APIS vekket meg om natten, kom jeg på en idé om å implementere en "nattmodus".

En nattmodus er når ingen målinger finner sted, displayet er slått av og det ikke går vanning.

På en vanlig virkedag våkner APIS klokken 07.00 (konfigurerbar) og går inn i nattmodus klokken 22.00 (konfigurerbar). På en helg bruker APIS en "helgjustering" -innstilling for å utsette en våkne (f.eks. Kl. 9.00), hvis helgejustering er 2 timer).

RTC BREAKOUT BOARD vs. "PROGRAMVARE" RTC:

Jeg brukte hardware RTC (tilgjengelig her) for å holde oversikt over dato/klokkeslett og gå inn/ut nattmodus.

Det er valgfritt å bruke, ettersom skisser kan kompileres for å bruke såkalt "programvare" RTC (ved bruk av millis () funksjonalitet til arduino).

Ulempen med å bruke programvare RTC er at du må stille inn tiden hver gang APIS slår seg på.

Jeg endret standard RTC -bibliotek for å matche API nøyaktig, og også for å omgå millis rollover -problem. (Se skissetrinnet for nedlasting).

Trinn 10: SETT DET HELE SAMMEN

SETTE ALT SAMMEN
SETTE ALT SAMMEN
SETTE ALT SAMMEN
SETTE ALT SAMMEN
SETTE ALT SAMMEN
SETTE ALT SAMMEN
SETTE ALT SAMMEN
SETTE ALT SAMMEN

Hele systemet (unntatt sonde) inkludert pumpen passer i en liten boks for Arduino Uno.

  1. TM1650 -skjermen bruker TWI -grensesnitt, så SDA- og SDC -ledningene går til henholdsvis Arduino -pinner A4 og A5. De to andre ledningene er +5v og GND.
  2. RTC -kortet bruker TWI -grensesnitt, så det samme som ovenfor. (TM1650 og RTC bruker forskjellige porter, slik at de sameksisterer fredelig). RTC +5v pin er koblet til arduino pin 12 (drives via digital pin i stedet for +5v). Husker ikke hvorfor jeg gjorde det, du trenger ikke.
  3. L293D -pinner er koblet som følger: aktiver (pin 1) til D5, og retningskontrollpinner 2 og 7 til henholdsvis arduino -pins D6 og D7.
  4. KNAPPER er koblet til pinne D2, D8 og D9 for henholdsvis SELECT, PLUS og MINUS. (Knappene er implementert med en nedtrekkbar 10K-motstand-i "aktiv-høy" -konfigurasjonen).
  5. PROBE -modulens +5v strøm er koblet til arduino pin 10 (for å muliggjøre periodiske målinger), og sonde er koblet til analog pin A1.

MERK: Fritzing -skjemafilen er lagt til i github -depotet.

Trinn 11: SKETSER og mer

SKETSER og mer
SKETSER og mer

Oppdatering for mars 2015:

  1. Lagt til funksjonalitet for å tømme rørene etter vanning for å forhindre at det dannes mugg (gutt! Jeg er glad jeg ikke har pumpet rotasjonsretningen på L293D!)
  2. Mer omfattende logging inkluderer dato/klokkeslett for vanningens start og slutt, begynnende og avsluttende fuktighet og hvor mange ganger pumpen ble aktivert under vanningsløpet
  3. Feilrutine oppdatert: enheten vil hardt tilbakestilles etter 24 timer etter at feilen er angitt
  4. Omkompilert med TaskScheduler 2.1.0
  5. Ulike andre feilrettinger

18. november 2015 ble APIS oppgradert med følgende tilleggsfunksjoner:

  1. Bruk av DirectIO -bibliotek for raskere og enklere PIN -endringer
  2. Bruk av tidssonebiblioteket for å skifte mellom EST og EDT på riktig måte
  3. Lagt til knappelukkende logikk med bare TaskScheduler
  4. Lagt til funksjon for gjentagelse av knapper (verdisyklus hvis knappen holdes inne, og syklusens hastighet øker etter 5 sykluser)
  5. Kompilert på nytt med IDE 1.6.6 AVR 1.6.9 mot TaskScheduler 1.8.4
  6. Flyttet til Github

BIBLIOTEKER:

APIS er basert på følgende biblioteker:

  • EEPROM - en del av Arduino IDE
  • Wire - en del av Arduino IDE
  • EnableInterrupt - tilgjengelig på Github
  • Tidssone - tilgjengelig på Github
  • DirectIO - tilgjengelig på Github

Endret (forked) av meg:

  • Tid - tilgjengelig på Github
  • RTClib - tilgjengelig på Github

Utviklet av meg:

  • TM1650 - tilgjengelig på Github
  • TaskScheduler - tilgjengelig på Github
  • AvgFilter - tilgjengelig på Github

SKISSE:

Siste versjon av APIS -skissen, inkludert fritzing schematics file, er tilgjengelig på Github

DATAARK:

  • L293D: her
  • RTC breakout board: her

Trinn 12: *** VI VINNE !!! ***

*** VI VANT !!! ***
*** VI VANT !!! ***

Dette prosjektet vant andre pris i hjemmeautomatiseringskonkurransen sponset av Dexter Industries.

Sjekk det ut! WOO-HOO !!!

Hjemmeautomatisering
Hjemmeautomatisering
Hjemmeautomatisering
Hjemmeautomatisering

Andre pris i hjemmeautomatisering

Anbefalt: