Sommario:

APIS - Sistema di irrigazione automatizzato per piante: 12 passaggi (con immagini)
APIS - Sistema di irrigazione automatizzato per piante: 12 passaggi (con immagini)

Video: APIS - Sistema di irrigazione automatizzato per piante: 12 passaggi (con immagini)

Video: APIS - Sistema di irrigazione automatizzato per piante: 12 passaggi (con immagini)
Video: Irrigazione Automatica con Serbatoio - per balconi SENZA rubinetto dell'acqua - irrigazione A GOCCIA 2024, Dicembre
Anonim
APIS - Sistema di irrigazione automatizzato per piante
APIS - Sistema di irrigazione automatizzato per piante

La STORIA: (una prossima evoluzione di questo sistema è disponibile qui)

Ci sono alcune istruzioni sull'argomento dell'irrigazione delle piante, quindi ho inventato a malapena qualcosa di originale qui. Ciò che rende questo sistema diverso è la quantità di programmazione e personalizzazione che è stata inserita, consentendo un migliore controllo e integrazione nella vita quotidiana.

Ecco un video di un percorso di irrigazione: percorso di irrigazione

Ecco come è nata l'APIS:

Abbiamo due piante di peperoncino rosso piccante, che a malapena sono "sopravvissute" a molte delle nostre vacanze e che a questo punto sono quasi considerate membri della famiglia. Hanno attraversato un'estrema siccità e un'eccessiva irrigazione, ma si sono sempre ripresi in qualche modo.

L'idea di costruire un impianto di irrigazione basato su Arduino è stata quasi la prima idea di come Arduino potrebbe essere applicato come progetto di automazione domestica. Quindi è stato costruito un semplice sistema di irrigazione delle piante.

Tuttavia, la versione 1 non aveva alcuna indicazione sull'umidità del suolo e non c'era modo di dire se stava per innaffiare le piante o se l'irrigazione era a pochi giorni di distanza.

Curiosity, come tutti sappiamo, ha ucciso il gatto e la versione 2 è stata costruita con un modulo a 4 cifre e 7 segmenti per visualizzare l'umidità corrente in ogni momento.

Non era abbastanza. La domanda successiva era "quando è stata l'ultima volta che ha innaffiato le piante"? (Dato che raramente eravamo a casa per testimoniarlo). La versione 3 utilizzava il modulo a 7 segmenti per visualizzare anche quanto tempo fa si è verificato l'ultimo ciclo di irrigazione (come stringa di testo in esecuzione).

Una notte, l'irrigazione è iniziata alle 4 del mattino, svegliando tutti. Frustrante… Ritenendo che fosse troppo complicato disattivare l'APIS per la notte e riattivarlo durante il giorno per impedire l'irrigazione nel cuore della notte, è stato aggiunto un orologio in tempo reale per mettere a dormire il dispositivo durante la notte come parte della versione 4.

Poiché l'orologio in tempo reale richiede regolazioni periodiche (come ad esempio l'interruttore dell'ora legale), la versione 5 include tre pulsanti che consentono di impostare una varietà di parametri di irrigazione delle piante.

Non si è fermato qui. Ho notato che la sonda di umidità tende a erodere piuttosto rapidamente, molto probabilmente a causa del fatto che era (per progettazione) sotto tensione costante, e quindi c'era una corrente elettrica costante tra le sonde (erosione dell'anodo). La sonda del suolo economica dalla Cina è sopravvissuta per circa una settimana. Anche un chiodo galvanizzato è stato "mangiato" in un mese. Una sonda in acciaio inossidabile reggeva meglio, ma notai che anche quella stava cedendo. La versione 6 accende la sonda solo per 1 minuto ogni ora (e per tutto il tempo durante l'irrigazione), riducendo così drasticamente l'erosione (~16 minuti al giorno contro 24 ore al giorno).

L'idea:

Sviluppa un sistema di irrigazione delle piante con le seguenti capacità:

  1. Misura l'umidità del suolo
  2. Al raggiungimento di una soglia di umidità "bassa" predefinita, accendere la pompa dell'acqua e innaffiare le piante fino a raggiungere una soglia di umidità "alta"
  3. L'irrigazione dovrebbe essere eseguita in più passaggi, separati da periodi di inattività per consentire la saturazione dell'acqua attraverso il terreno
  4. Il sistema dovrebbe disattivarsi di notte tra gli orari di "riposo" e di "risveglio"
  5. Il tempo di "sveglia" dovrebbe essere regolato per i fine settimana su un valore successivo
  6. Il sistema dovrebbe tenere il registro delle corse di pompaggio
  7. Il sistema dovrebbe visualizzare la lettura corrente dell'umidità del suolo
  8. Il sistema dovrebbe visualizzare la data/ora dell'ultimo funzionamento della pompa
  9. I parametri di irrigazione dovrebbero essere regolabili senza riprogrammare
  10. Interrompere il pompaggio e indicare una condizione di errore se il funzionamento della pompa non porta a variazioni di umidità (mancanza d'acqua o problemi ai sensori) prevenendo l'allagamento dell'impianto e perdite d'acqua
  11. Il sistema dovrebbe accendere/spegnere la sonda di umidità per evitare l'erosione del metallo
  12. Il sistema deve drenare l'acqua dai tubi per evitare la formazione di muffe al loro interno

I seguenti parametri dovrebbero essere configurabili tramite pulsanti:

  1. Segno di umidità "basso", in %, per avviare il funzionamento della pompa (predefinito = 60%)
  2. Contrassegno di umidità "alta", in %, per arrestare il funzionamento della pompa (predefinito = 65%)
  3. Durata di un singolo ciclo di irrigazione, in sec (default = 60 secondi)
  4. Numero di tentativi per raggiungere l'umidità target (predefinito = 4 corse)
  5. Orario militare da disattivare per la notte, solo ore (default = 22 o 22)
  6. Ora militare da attivare al mattino, solo ore (default = 07 o 7 am)
  7. Regolazione fine settimana per attivazione mattutina, delta ore (default = +2 ore)
  8. Data e ora correnti

L'APIS scrive la data/ora degli ultimi 10 cicli di irrigazione nella memoria EEPROM. Il registro potrebbe essere visualizzato, mostrando la data e l'ora delle corse.

Una delle tante cose che abbiamo imparato da APIS è che in realtà non è necessario annaffiare le piante ogni giorno, che era la nostra routine finché non abbiamo visto le letture dell'umidità del suolo su un display a 7 segmenti…

Fase 1: PARTI e STRUMENTI

PARTI e STRUMENTI
PARTI e STRUMENTI
PARTI e STRUMENTI
PARTI e STRUMENTI

Avrai bisogno delle seguenti parti per creare APIS:

SCATOLA DI CONTROLLO E TUBI:

  1. Scheda Arduino Uno: su Amazon.com
  2. Pompa peristaltica 12v con tubo in silicone: su Adafruit.com
  3. Modulo JY-MCU con display digitale a LED numerico 4X: su Fasttech.com
  4. Kit scheda breakout orologio in tempo reale DS1307: su Adafruit.com (opzionale)
  5. Microtivity IM206 Interruttore tattile 6x6x6mm: su Amazon.com
  6. Vero board: su Amazon.com
  7. IC driver motore L293D: su Fasttech.com
  8. 3 resistenze da 10kOhm
  9. Arduino progetti custodia in plastica: su Amazon.com
  10. Adattatore CA/CC da 12 V con jack di alimentazione da 2,1 mm: su Amazon.com
  11. Spiedini di bambù
  12. Battistrada e un po' di colla supercemento
  13. Tubo in gomma super morbida in lattice 1/8" ID, 3/16" OD, 1/32" parete, ambra semi-trasparente, 10 piedi di lunghezza: su McMaster.com
  14. Raccordo per tubo spinato a tenuta stagna in nylon resistente, raccordo a T per ID tubo da 1/8", bianco, confezioni da 10: su McMaster.com
  15. Resistente raccordo per tubo spinato a tenuta stagna in nylon, a stella per ID tubo da 1/8", bianco, confezioni da 10: su McMaster.com
  16. Come al solito, fili, strumenti di saldatura, ecc.

SONDA UMIDITÀ:

  1. Piccolo pezzo di legno (1/4" x 1/4" x 1")
  2. 2 x aghi per estrazione dell'acne in acciaio inossidabile: su Amazon.com
  3. Modulo sensore di rilevamento dell'umidità del suolo: su Fasttech.com

Fase 2: SONDA UMIDITÀ DEL SUOLO V1

SONDA UMIDITÀ TERRENO V1
SONDA UMIDITÀ TERRENO V1
SONDA UMIDITÀ TERRENO V1
SONDA UMIDITÀ TERRENO V1
SONDA UMIDITÀ TERRENO V1
SONDA UMIDITÀ TERRENO V1

L'umidità del suolo viene misurata in base alla resistenza tra due sonde metalliche inserite nel terreno (a circa 1 pollice di distanza l'una dall'altra). Gli schemi sono rappresentati in figura.

La prima sonda che ho provato è stata quella che puoi acquistare da un certo numero di provider Internet (come questo).

Il problema con quelli è che il livello della lamina è relativamente sottile e si erode rapidamente (una o due settimane), quindi ho abbandonato rapidamente questo prefabbricato per il sensore più robusto, basato su chiodo zincato (vedi passaggio successivo).

Fase 3: SONDA UMIDITÀ DEL SUOLO V2

SONDA UMIDITÀ TERRENO V2
SONDA UMIDITÀ TERRENO V2
SONDA UMIDITÀ TERRENO V2
SONDA UMIDITÀ TERRENO V2

La sonda "di nuova generazione" era fatta in casa da due chiodi zincati, una tavola di legno e un paio di fili.

Dato che avevo già una sonda fabbricata usurata, ho riutilizzato il pezzo di connessione e il modulo elettronico da essa, sostanzialmente solo sostituendo il componente del suolo.

Chiodi galvanizzati, con mia sorpresa, anch'essi erosi (anche se più lenti della lamina sottile), ma comunque più veloci di quanto vorrei.

È stata progettata un'altra sonda, basata su aghi per la rimozione dell'acne in acciaio inossidabile. (vedi passaggio successivo).

Fase 4: SONDA UMIDITÀ DEL SUOLO V3 "Katana"

SONDA UMIDITÀ TERRENO V3
SONDA UMIDITÀ TERRENO V3
SONDA UMIDITÀ TERRENO V3
SONDA UMIDITÀ TERRENO V3

La sonda in acciaio inossidabile (simile alla spada del samurai, da cui il nome) è quella attualmente in uso.

Credo che la rapida erosione possa essere attribuita al fatto che la sonda era sempre sotto tensione elettrica (24x7) indipendentemente da quante volte avvenisse la misurazione effettiva.

Per mitigare ciò, ho modificato gli intervalli di misurazione in modo che fossero una volta ogni 1 ora (dopotutto, questo NON è un sistema in tempo reale) e ho collegato la sonda a uno dei pin digitali anziché a 5v permanenti. Attualmente, la sonda viene alimentata solo ~16 minuti al giorno invece di 24 ore, il che dovrebbe aumentare notevolmente la sua durata.

Passaggio 5: FUNZIONALITÀ DI BASE

FUNZIONALITÀ DI BASE
FUNZIONALITÀ DI BASE
FUNZIONALITÀ DI BASE
FUNZIONALITÀ DI BASE

APIS è basato sulla scheda Arduino UNO.

APIS misura l'umidità del suolo una volta all'ora e, se scende al di sotto di una soglia predefinita, accende la pompa per un periodo di tempo predefinito un numero predefinito di volte separato da intervalli di "saturazione".

Una volta raggiunta una soglia di umidità target, il processo torna alla modalità di misurazione una volta all'ora.

Se non è possibile raggiungere l'umidità target, ma è stato raggiunto il limite inferiore, va bene lo stesso (almeno si è verificata un'irrigazione). Il motivo potrebbe essere lo sfortunato posizionamento della sonda, dove è troppo lontana dal terreno umido.

Tuttavia, se non è stato possibile raggiungere nemmeno il limite di umidità inferiore, viene dichiarata una condizione di errore. (Molto probabilmente un problema con la sonda, o il secchio di rifornimento ha esaurito l'acqua, ecc.). In condizioni di errore, l'unità dormirà per 24 ore senza fare nulla, quindi riproverà.

Passaggio 6: VISUALIZZAZIONE A 7 SEGMENTI

VISUALIZZAZIONE A 7 SEGMENTI
VISUALIZZAZIONE A 7 SEGMENTI
VISUALIZZAZIONE A 7 SEGMENTI
VISUALIZZAZIONE A 7 SEGMENTI

DISPLAY A 7 SEGMENTI BASATO SU TM1650:

In origine, APIS non aveva alcuna capacità di visualizzazione. Era impossibile stabilire l'attuale livello di umidità del suolo senza collegarsi tramite USB.

Per risolvere il problema ho aggiunto al sistema un display a 7 segmenti a 4 cifre: su Fasttech.com

Non sono riuscito a trovare una libreria per lavorare con questo modulo da nessuna parte (né una scheda tecnica per esso), quindi dopo alcune ore di ispezione e sperimentazione delle porte I²C, decido di scrivere io stesso una libreria di driver.

Supporta display fino a 16 cifre (con 4 come predefinito), può visualizzare caratteri ASCII di base (si prega di notare che non tutti i caratteri possono essere costruiti con 7 segmenti, quindi lettere come W, M, ecc. non sono implementate), supporta i decimali visualizzazione dei punti sul modulo, esegue una stringa di caratteri (per visualizzare più di 4 lettere) e supporta 16 gradi di luminosità.

La libreria è disponibile su arduino.cc playground qui. Libreria driver TM1650

Il video di esempio è disponibile qui

ANIMAZIONE:

Un po' di animazione a 7 segmenti è implementata durante una corsa in acqua.

  • Mentre la pompa è in funzione, i punti digitali sul display scorrono da sinistra a destra, a simboleggiare un flusso d'acqua: video di animazione dell'irrigazione
  • Durante il periodo di "saturazione", i punti corrono dal centro del display verso l'esterno, a simboleggiare la saturazione: video di animazione della saturazione

Inutile, ma un bel tocco.

Passaggio 7: POMPA e CONTROLLO DELLA POMPA

POMPA e CONTROLLO POMPA
POMPA e CONTROLLO POMPA
POMPA e CONTROLLO POMPA
POMPA e CONTROLLO POMPA

POMPA

Ho usato una pompa peristaltica a 12v (disponibile qui) per innaffiare le piante. La pompa fornisce circa 100 ml/min (che è circa 1/2 di un bicchiere - è bene ricordare quando si configura il tempo di irrigazione per evitare traboccamenti, e questo è successo 8-))

COMANDO POMPA - L293D

La pompa è controllata tramite il chip del driver del motore L293D. Poiché la direzione di rotazione è preimpostata, è necessario utilizzare solo il pin di abilitazione del chip per il controllo. I pin di direzione possono essere collegati direttamente a +5v e GND in modo permanente.

Se tu (come me) non eri sicuro di quale direzione andrà la pompa, puoi comunque collegare tutti e tre i pin ad Arduino e controllare la direzione in modo programmatico. Meno risaldature.

Passaggio 8: CONFIGURAZIONE e PULSANTI

CONFIGURAZIONE e PULSANTI
CONFIGURAZIONE e PULSANTI
CONFIGURAZIONE e PULSANTI
CONFIGURAZIONE e PULSANTI

PULSANTI:

Ho usato tre pulsanti per configurare e controllare le API.

Tutte le pressioni dei pulsanti vengono elaborate in base agli interrupt dei pin (libreria PinChangeInt).

  • Il rosso (all'estrema destra) è un pulsante SELECT. Fa entrare APIS in modalità di configurazione e conferma anche i valori.
  • I pulsanti neri più a sinistra e al centro (rispettivamente PI e MENO) vengono utilizzati per aumentare/diminuire i valori configurabili (nella modalità di configurazione) o visualizzare la data/ora corrente e le informazioni sull'ultima irrigazione (in modalità normale).

Poiché la maggior parte delle volte il display è spento, tutti i pulsanti prima "risveglieranno" APIS e solo dopo, alla seconda pressione, svolgeranno la loro funzione.

Il display si spegne dopo 30 secondi di inattività (a meno che non sia in corso un ciclo di irrigazione).

APIS esegue i parametri di configurazione all'avvio per la revisione: video

CONFIGURAZIONE:

APIS ha quattro modalità di configurazione:

  1. Configura i parametri di irrigazione
  2. Imposta l'orologio in tempo reale
  3. Irrigazione "forzata"
  4. Rivedere il registro di irrigazione

PARAMETRI DI IRRIGAZIONE:

  1. Soglia bassa umidità del suolo (inizio irrigazione)
  2. Soglia di umidità del suolo elevata (interruzione dell'irrigazione)
  3. Durata di un singolo ciclo di irrigazione (in secondi)
  4. Numero di cicli di irrigazione in un batch
  5. Durata del periodo di saturazione del suolo tra i cicli all'interno di un lotto (in minuti)
  6. Orario di attivazione della modalità notturna (ora militare, solo ore)
  7. Ora di fine della modalità notturna (ora militare, solo ore)
  8. Regolazione fine settimana per l'ora di fine della modalità notturna (in ore)

IMPOSTAZIONE DELL'OROLOGIO IN TEMPO REALE:

  1. Secolo (cioè 20 per il 2015)
  2. Anno (cioè 15 per il 2015)
  3. Mese
  4. Giorno
  5. Ora
  6. Minuto

L'orologio viene regolato con i secondi impostati a 00 alla conferma dei minuti.

Le impostazioni hanno un periodo di timeout di 15 secondi, dopodiché tutte le modifiche vengono annullate.

Al momento del salvataggio, i parametri vengono salvati nella memoria EEPROM.

FORZARE UNA CORSA DI IRRIGAZIONE:

Non sono ancora sicuro del motivo per cui l'ho implementato, ma è lì. Una volta attivato, APIS entra in modalità di irrigazione. La modalità di irrigazione, tuttavia, è ancora soggetta a soglie. Ciò significa che se si forza l'irrigazione, ma l'umidità del suolo è superiore al segno ALTO, l'irrigazione termina immediatamente. Fondamentalmente questo funziona solo se l'umidità del suolo è compresa tra le soglie LOW e HIGH.

REVISIONE DEL REGISTRO DI IRRIGAZIONE:

APIS mantiene un registro delle ultime 10 irrigazioni nella memoria EEPROM, che l'utente può rivedere. Viene memorizzata solo la data/ora del ciclo di irrigazione. Le soglie (al momento) e il numero di esecuzioni necessarie per raggiungere la soglia HIGH non vengono memorizzati (sebbene nella prossima versione potrebbero esserlo).

Passaggio 9: RTC: OROLOGIO IN TEMPO REALE

RTC: OROLOGIO IN TEMPO REALE
RTC: OROLOGIO IN TEMPO REALE

MODALITÀ NOTTURNA

Una volta che l'APIS mi ha svegliato di notte, mi è venuta in mente l'idea di implementare una "modalità notturna".

Una modalità notturna è quando non vengono eseguite misurazioni, il display è spento e non viene eseguita l'irrigazione.

In un normale giorno lavorativo l'APIS si "sveglia" alle 7:00 (configurabile) ed entra in modalità notturna alle 22:00 (configurabile). In un fine settimana APIS utilizza un'impostazione di "regolazione del fine settimana" per ritardare una sveglia (ad esempio alle 9:00, se la regolazione del fine settimana è di 2 ore).

RTC BREAKOUT BOARD e RTC "SOFTWARE":

Ho usato l'RTC hardware (disponibile qui) per tenere traccia della data/ora e per entrare/uscire dalle modalità notturne.

È facoltativo da usare, poiché gli schizzi potrebbero essere compilati per utilizzare il cosiddetto "software" RTC (usando la funzionalità millis() di arduino).

Lo svantaggio dell'utilizzo del software RTC è che è necessario impostare l'ora ogni volta che l'APIS si accende.

Ho modificato la libreria RTC standard in modo che corrisponda esattamente all'API e anche per aggirare il problema del rollover di millis. (Si prega di vedere il passaggio degli schizzi per i download).

Passaggio 10: METTERE TUTTO INSIEME

METTERE TUTTO INSIEME
METTERE TUTTO INSIEME
METTERE TUTTO INSIEME
METTERE TUTTO INSIEME
METTERE TUTTO INSIEME
METTERE TUTTO INSIEME
METTERE TUTTO INSIEME
METTERE TUTTO INSIEME

L'intero sistema (tranne la sonda) inclusa la pompa si inserisce in una piccola scatola per Arduino Uno.

  1. Il display TM1650 utilizza l'interfaccia TWI, quindi i cavi SDA e SDC vanno rispettivamente ai pin A4 e A5 di Arduino. Gli altri due fili sono +5v e GND.
  2. La scheda RTC utilizza l'interfaccia TWI, quindi come sopra. (TM1650 e RTC utilizzano porte diverse, quindi coesistono pacificamente). Il pin RTC +5v è collegato al pin 12 di arduino (alimentato tramite pin digitale anziché +5v). Non ricordo perché l'ho fatto, non devi.
  3. I pin L293D sono collegati come segue: abilitazione (pin 1) a D5 e pin 2 e 7 di controllo della direzione ai pin arduino D6 e D7 rispettivamente.
  4. I PULSANTI sono collegati ai pin D2, D8 e D9 rispettivamente per SELECT, PLUS e MINUS. (I pulsanti sono implementati con resistori pull-down da 10K - nella configurazione "active-high").
  5. L'alimentazione +5v del modulo PROBE è collegata al pin 10 di arduino (per abilitare le misurazioni periodiche) e la sonda è collegata al pin analogico A1.

NOTA: il file degli schemi di Fritzing è stato aggiunto al repository github.

Passaggio 11: SCHIZZI e altro

SCHIZZI e altro
SCHIZZI e altro

Aggiornamento marzo 2015:

  1. Aggiunta funzionalità per drenare i tubi dopo il ciclo di irrigazione per evitare la formazione di muffe (ragazzo! Sono felice di non aver cablato la direzione di rotazione della pompa su L293D!)
  2. La registrazione più ampia include data/ora di inizio e fine del ciclo di irrigazione, umidità di inizio e fine e quante volte la pompa è stata attivata durante il ciclo di irrigazione
  3. Routine di errore aggiornata: il dispositivo verrà ripristinato dopo 24 ore dall'inserimento della condizione di errore
  4. Ricompilato con TaskScheduler 2.1.0
  5. Varie altre correzioni di bug

A partire dal 18 novembre 2015 APIS è stato aggiornato con le seguenti funzionalità aggiuntive:

  1. Utilizzo della libreria DirectIO per modifiche dei pin più rapide e semplici
  2. Utilizzo della libreria Timezone per passare correttamente da EST a EDT
  3. Aggiunta logica antirimbalzo dei pulsanti utilizzando solo TaskScheduler
  4. Aggiunta funzionalità di ripetizione del pulsante (valori ciclo se il pulsante viene premuto e tenuto premuto, con velocità del ciclo in aumento dopo 5 cicli)
  5. Ricompilato con IDE 1.6.6 AVR 1.6.9 contro TaskScheduler 1.8.4
  6. Trasferito a Github

BIBLIOTECHE:

APIS si basa sulle seguenti librerie:

  • EEPROM - parte di Arduino IDE
  • Wire - parte di Arduino IDE
  • EnableInterrupt - disponibile su Github
  • Fuso orario - disponibile su Github
  • DirectIO - disponibile su Github

Modificato (biforcato) da me:

  • Tempo - disponibile su Github
  • RTClib - disponibile su Github

Sviluppato da me:

  • TM1650 - disponibile su Github
  • TaskScheduler - disponibile su Github
  • AvgFilter - disponibile su Github

SCHIZZO:

L'ultima versione dello schizzo APIS, incluso il file di schemi fritzing, è disponibile su Github

SCHEDE TECNICHE:

  • L293D: qui
  • Scheda di sblocco RTC: qui

Fase 12: *** ABBIAMO VINTO!!! ***

*** ABBIAMO VINTO !!! ***
*** ABBIAMO VINTO !!! ***

Questo progetto ha vinto il secondo premio al concorso Home Automation sponsorizzato da Dexter Industries.

Controlla! WOO-HOO!!!

Domotica
Domotica
Domotica
Domotica

Secondo Premio nella Domotica

Consigliato: