Innehållsförteckning:
- Steg 1: DELAR OCH VERKTYG
- Steg 2: SOIL HUMIDITY PROBE V1
- Steg 3: SOIL HUMIDITY PROBE V2
- Steg 4: SOIL HUMIDITY PROBE V3 "Katana"
- Steg 5: GRUNDLÄGGANDE FUNKTIONALITET
- Steg 6: 7 SEGMENT DISPLAY
- Steg 7: PUMP och PUMPKONTROLL
- Steg 8: KONFIGURATION och KNAPPAR
- Steg 9: RTC: REAL TIME CLOCK
- Steg 10: SÄTTA DET ALLT SAMMAN
- Steg 11: SKETSAR och mer
- Steg 12: *** VI VINNADE !!! ***
Video: APIS - Automatiserat växtbevattningssystem: 12 steg (med bilder)
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
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:
- Mät jordfuktigheten
- 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
- Vattning bör utföras i flera körningar, åtskilda av perioder av inaktivitet för att tillåta vattenmättnad genom jorden
- Systemet bör inaktivera sig själv på natten mellan "sömn" och "vakna" tider
- "Vakna" -tiden bör justeras för helger till ett senare värde
- Systemet bör hålla loggen över pumpkörningar
- Systemet bör visa aktuell avläsning av jordfuktighet
- Systemet ska visa datum/tid för senaste pumpkörning
- Vattningsparametrar bör vara justerbara utan omprogrammering
- 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
- Systemet bör slå på/av fuktsonden för att undvika metallerosion
- 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:
- Luftfuktighet "låg" mark, i %, för att starta pumpkörning (standard = 60 %)
- Luftfuktigheten "hög", i %, för att stoppa pumpkörningen (standard = 65 %)
- Varaktighet för en enda vattning, i sek (standard = 60 sekunder)
- Antal försök för att nå målfuktigheten (standard = 4 körningar)
- Militär tid att inaktivera för natten, endast timmar (standard = 22 eller 22:00)
- Militär tid att aktivera på morgonen, endast timmar (standard = 07 eller 7 am)
- Helgjustering för morgonaktivering, deltatimmar (standard = +2 timmar)
- 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
Du behöver följande delar för att bygga APIS:
KONTROLLBOX OCH SLANG:
- Arduino Uno board: på Amazon.com
- 12v peristaltisk vätskepump med silikonslang: på Adafruit.com
- 4X numerisk LED-display Digital Tube JY-MCU-modul: på Fasttech.com
- DS1307 Real Time Clock breakout board kit: på Adafruit.com (valfritt)
- Microtivity IM206 6x6x6mm Tact Switch: på Amazon.com
- Vero board: på Amazon.com
- L293D motordrivrutin IC: på Fasttech.com
- 3 x 10 kOhm motstånd
- Arduino projekterar plastfodral: på Amazon.com
- 12v AC/DC -adapter med 2,1 mm strömuttag: på Amazon.com
- Bambuspett
- Slitbanan och lite överdragslim
- Supermjukt latexgummislang 1/8 "ID, 3/16" OD, 1/32 "vägg, halvklart amber, 10 fot. Längd: på McMaster.com
- Slitstark nylon-tätning med taggar
- Slitstark Nylon Tight-Seal Piggmonterad rörmontering, Wye för 1/8 "Tube ID, vit, förpackningar om 10: på McMaster.com
- Som vanligt, trådar, lödverktyg etc.
FUKTSPROBB:
- Liten träbit (1/4 "x 1/4" x 1 ")
- 2 x aknextraktionsnålar i rostfritt stål: på Amazon.com
- Jordfuktighetsdetekteringssensormodul: på Fasttech.com
Steg 2: SOIL HUMIDITY PROBE 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
"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"
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
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
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
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
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:
- Konfigurera vattningsparametrar
- Ställ in realtidsklocka
- "Tvinga" vattning
- Granska vattningslogg
VATTENPARAMETRAR:
- Tröskel för låg jordfuktighet (börja vattnas)
- Tröskel för hög jordfuktighet (sluta vattna)
- Varaktighet för en enda vattning (i sekunder)
- Antal vattningskörningar i en sats
- Jordmättnadens varaktighet mellan körningarna inom en sats (i minuter)
- Nattlägesaktiveringstid (militärtid, endast timmar)
- Sluttid för nattläge (militärtid, endast timmar)
- Helgjustering för nattläge sluttid (i timmar)
INSTÄLLNING AV REAL TIME CLOCK:
- Århundrade (dvs 20 för 2015)
- År (dvs 15 för 2015)
- Månad
- Dag
- Timme
- 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
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
Hela systemet (förutom sonden) inklusive pumpen passar i en liten låda för Arduino Uno.
- 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.
- 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.
- L293D -stiften är anslutna enligt följande: aktivera (stift 1) till D5 och riktningskontrollstift 2 och 7 till arduino -stift D6 respektive D7.
- 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).
- 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
Uppdatering för mars 2015:
- 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!)
- 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
- Felrutin uppdaterad: enheten återställs hårt efter 24 timmar efter att ha angett felvillkoret
- Omkompilerad med TaskScheduler 2.1.0
- Olika andra buggfixar
Från och med den 18 november 2015 uppgraderades 2015 APIS med följande ytterligare funktioner:
- Användning av DirectIO -bibliotek för snabbare och enklare stiftändringar
- Användning av tidszonsbiblioteket för att korrekt växla mellan EST och EDT
- Lade till knappavstängningslogik med endast TaskScheduler
- Tillagd funktion för upprepning av knappar (värden cykel om knappen hålls intryckt, med cykelhastighet som ökar efter 5 cykler)
- Omkompilerad med IDE 1.6.6 AVR 1.6.9 mot TaskScheduler 1.8.4
- 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 !!! ***
Detta projekt vann andra pris i tävlingen Home Automation sponsrad av Dexter Industries.
Kolla in det! WOO-HOO !!!
Andra pris i hemmautomation
Rekommenderad:
Automatiskt växtbevattningssystem med mikro: bit: 8 steg (med bilder)
Automatiskt växtbevattningssystem med hjälp av en Micro: bit: I denna instruktionsfilm ska jag visa dig hur du bygger ett automatiskt växtbevattningssystem med hjälp av en Micro: bit och några andra små elektroniska komponenter. Micro: bit använder en fuktsensor för att övervaka fuktnivån i växtens mark och
Hur man bygger ett växtbevattningssystem med Arduino: 7 steg
Hur man bygger ett växtbevattningssystem med Arduino: I denna handledning lär vi oss hur man gör ett växtvattensystem med hjälp av en fuktsensor, vattenpump och blinkar en grön lysdiod om allt är ok och OLED Display och Visuino.Titta på videon
Autonomt växtbevattningssystem: 4 steg
Autonomous Plant Watering System: Detta projekt presenterar ett smart autonomt plantningsvattensystem. Systemet är autonomt i energi med hjälp av ett 12v batteri och en solpanel, och vattnar anläggningen när de rätta förhållandena är inställda, med ett genomtänkt (hoppas jag) felsäkert system. Det jag
Automatiskt växtbevattningssystem: 5 steg (med bilder)
Automatiskt växtvattningssystem: Detta är det enklaste och billiga växtbevattningssystemet du kan göra. Jag använde ingen mikrokontroller. Det är i grunden en transistorswitch. Du måste lägga till lite motstånd mellan kollektor och bas för att förhindra att transistorn blir defekt . (använd inte w
Automatiskt växtbevattningssystem: 10 steg
Automatiskt växtbevattningssystem: I den här instruktören kommer jag att visa dig hur du gör ett automatiskt växtbevattningssystem med en Arduino. Detta kan vara mycket användbart om du är en glömsk person, om du ska på semester eller om du bara är en lat person.