Stop al detto “piove sul bagnato” con il Progetto Eco-Sprinkler!

main_norm

Per non far partire l'irrigatore automatico del proprio giardino deve necessariamente piovere? Lasciamo che sia il terreno a dirci se in quel momento vuole bere o meno. Con la scheda Eco-Sprinkler ci proponiamo di andare oltre i classici sensori di pioggia commerciali, abbandonando la sola logica di controllo ON-OFF a favore di un approccio più…fuzzy!

L'estate è ormai terminata da tempo ma al momento in cui è stato concepito questo progetto eravamo in quella fase di passaggio dal caldo torrido di Agosto alle prime rinfrescate settembrine. Periodo in cui, solitamente, chi possiede un impianto di irrigazione automatico ancora non ha aggiornato le impostazioni della centralina per gestire l'innaffiamento ritardato in caso di pioggia.

Una sera, tornando a casa dopo una giornata di pioggia intensa, mi sono ritrovato con l'irrigatore del mio orto in funzione nonostante avesse terminato di piovere da non molto. Risultato: prima di precipitarmi a stoppare l'irrigatore, avevo sprecato 15 minuti di acqua continua (e corrente della pompa…), e, a mio parere, tra tutte le risorse che abbiamo a disposizione l'acqua è quella che  andrebbe usata con più intelligenza.

E' proprio il caso di dirlo: aveva piovuto sul bagnato, dal momento che la partenza programmata del mio impianto non è inibita dal caso "oggi ha piovuto tanto" ma solo da quello "in questo esatto momento sta piovendo".
La maggior parte delle attuali soluzioni commerciali di blocco irrigazione (almeno quelle economiche) prevede infatti un sensore di pioggia che, al raggiungimento di un certo livello d'acqua (impostabile dall'utente), evita di far partire l'impianto bypassando di fatto la programmazione dei turni di innaffiamento.
Tecnicamente, ciò si ottiene inserendo il sensore pioggia in serie al filo comune delle elettrovalvole in centralina: dunque tale sensore, agendo come un interruttore, interrompe o favorisce la continuità circuitale tra la scheda ed il gruppo attuatori (le elettrovalvole stessse).
Questo tipo di logica di controllo è di tipo ON-OFF, ovvero l'inibizione della partenza dell'irrigazione è dettata esclusivamente dalla valutazione istantanea se stia effettivamente piovendo o meno (in realtà alcuni sensori valutano anche quanta pioggia sta cadendo ma il principio è comunque lo stesso).
Tuttavia, valutare in modo puramente binario le condizioni meteo ai fini del bisogno d'acqua da parte del terreno può non risultare sempre la scelta più appropriata.
Infatti, oltre all'aneddoto prima descritto, pensate ad un'altra casistica: il classico momento estivo di "nuvolaglia" con qualche goccia di pioggia, comunque non sufficiente a dissetare un terreno magari a secco da tempo. Ragionando secondo la logica sopradescritta, se l'irrigatore fosse impostato per partire mentre sta piovigginando, esso non partirebbe proprio, a fronte di una durata della pioggia estremamente esigua.
Per fronteggiare situazioni come quelle elencate, occorre sì vincolare la partenza dell'impianto alla pioggia nel momento corrente ma è anche importante valutare il livello di umidità attuale del terreno. Questo parametro è spesso sottovalutato, quando invece è forse quello principale per determinare se le piante hanno "sete".
Anche perchè ciò che veramente conta è che siano le radici ad essere umide (questo è il motivo per cui di solito si sconsiglia di "affogare" le piantine nei vasi…), e magari tale situazione non è direttamente visibile in superficie.
Eco-Sprinkler combina l'approccio ON-OFF dei sensori di pioggia a quello analogico dei sensori igrometrici, fornendo una valutazione più attendibile sullo stato di sete della terra e delle relative coltivazioni: il tutto in uno strumento economico ed alla portata di tutti!
 

Principio di funzionamento

Eco-Sprinkler è in sostanza una piccola stazione di controlli meteo da collegare alla centralina del proprio impianto di irrigazione (e che va ad affiancarsi ad altri dispositivi meteo apparsi nel nostro blog, da quelli a controllo eolico/barometrico a quelli di monitoraggio della temperatura).
Ad alto livello, la funzione principale che deve svolgere è controllare periodicamente, mediante appositi sensori, sia la presenza di pioggia sia il livello di umidità del terreno. Queste due informazioni verranno successivamente poste in OR logico tra loro: ciò che in questo modo si vuole valutare è 1) se sta piovendo OPPURE 2) se l'umidità del terreno è sufficiente, al fine di inibire o favorire l'irrigazione pianificata.

Pertanto,

if  PIOVE  ||  TERRENO UMIDO

allora viene inibita l'irrigazione programmata (ovviamente se il controllo da parte di Eco-Sprinkler ricade all'interno del turno programmato di innaffiamento).
In tutti gli altri casi la scheda lascia semplicemente inalterato il normale funzionamento di default dell'impianto, cosicché i turni di irrigazione vengano regolarmente svolti secondo la modalità impostata in centralina.
Per consentire di avere un dispositivo compatibile con ogni tipo di centralina filare presente sul mercato, non è stata prevista una connessione diretta alla centralina od un meccanismo di acquisizione dei suoi dati (orario turni, modalità di funzionamento etc); si è piuttosto pensato di porre la scheda in serie tra la centralina stessa ed il suo circuito attuatori.

In questo modo, essa funge semplicemente da interruttore automatico nel collegamento tra quest'ultima e le elettrovalvole. Dunque, la logica di controllo impostata in centralina resta assolutamente invariata, ma lascia semplicemente "l'ultima parola" all'interruttore automatico prima di poter agire definitivamente sugli attuatori.

Schema elettrico

Lo schema del circuito è molto semplice.

La logica di controllo è demandata ad un microcontrollore PIC16F876 (U2), cuore dell'intero sistema. Il micro in questione si occupa periodicamente (una volta al minuto) di controllare lo stato di due sensori, uno di pioggia ed uno di umidità del terreno, al fine di chiudere o aprire un contatto (connettore P3) a seconda dei valori rilevati.
Come già accennato, il contatto in questione altro non è che un'interruzione sul collegamento tra la centralina e le elettrovalvole di irrigazione (o meglio il loro filo comune).
Fisicamente, per questo interruttore è stato impiegato un relè bistabile (RLY1) con controllo bobine a 5V mediante transistor (Q1 e Q2) e relativi diodi di protezione da inversione di polarità (D2 e D3).

Il motivo di tale scelta è che se avessimo utilizzato un normalissimo relè astabile in configurazione N.C. (Normalmente Chiuso), per aprire e tenere aperto il contatto (nel caso di stop-irrigazione) avremmo dovuto prevedere di tenere continuamente eccitata la sua bobina: nel caso di prolungati periodi in questa condizione, si avrebbe un dispendio di energia non indifferente e, soprattutto, non necessario. Si è optato, pertanto, per una logica passo-passo, con memorizzazione e gestione della posizione del contatto demandata al firmware.
Ad ogni modo, l'azione del relè può essere bypassata mediante l'interruttore a singolo contatto SW2, che permette di tenere il contatto in questione sempre chiuso, esattamente come se la scheda Eco-Sprinkler non fosse inserita nell'impianto: questa funzione supplementare può tornare utile nel caso in cui si dovesse far partire l'irrigatore indipendentemente dalle condizioni climatiche rilevate.
Si potrebbe obiettare che, per escludere momentaneamente l'operatività di Eco-Sprinkler, si potrebbe agire semplicemente sul suo interruttore di accensione (SW1), tuttavia, ciò non porterebbe a comportamenti attendibili, in quanto a circuito non alimentato non è visibile se la posizione del contatto del relè sia rimasta su N.O. o su N.C (quando invece la scheda è accesa, il LED SPRINKLER_STOP fornisce proprio tale informazione). Pertanto, avere un interruttore di alimentazione ed un interruttore di esclusione separati a mio parere è risultato più versatile.
La valutazione della presenza di pioggia è demandata al sensore Orbit Rain Sensor 57069, collegato al connettore bipolare siglato "P4" nello schema.

Si tratta di un sensore a dischi igrometrici i quali, se inumiditi oltre un certo livello (impostabile dall'utente) dalla pioggia che vi scorre sopra, diventano pesanti e forzano meccanicamente l'apertura di un contatto elettrico. L'impiego di tale sensore nel nostro circuito prevede un suo collegamento in serie tra i pin RC4 ed RC5 del microcontrollore. All'accensione della scheda, RC5 viene posto a livello logico alto e tale valore deve essere letto parimenti su RC4: nel momento in cui il livello logico rilevato su RC4 risulta basso, significa che il contatto del sensore si è aperto, e che è stata, dunque, rilevata la presenza di pioggia.  
Il connettore tripolare K1 accoglie invece il sensore deputato alla misura dell'umidità del terreno. Quello che è stato scelto per il progetto è il DFRobot Moisture Sensor, un dispositivo tanto semplice quanto economico, dotato di due sonde da inserire direttamente nel terreno e che utilizza per far passare corrente attraverso il suolo.

Il grado di umidità del terreno viene determinato rilevando le variazioni della resistenza elettrica incontrata, dal momento che più umida è la terra più elettricità viene condotta. Il sensore si avvale di 3 soli pin, due di alimentazione (5V, GND) ed uno per l'invio del segnale analogico rilevato. In particolare, quest'ultimo viene inviato al pin AN0 del microcontrollore, collegato all'A/D converter dello stesso.
Il range di valori rilevabili (e relative conversioni) è il seguente:

  • 0 – 300 : terreno asciutto
  • 300 – 700 : terreno umido
  • 700 – 950 : terreno allagato

I LED STATO, CONTROLLO e SPRINKLER-STOP indicano, rispettivamente, l'accensione della scheda, la fase di controllo periodico sullo stato dei sensori ed il posizionamento del contatto del relè su N.O. .
Infine, è previsto che l'alimentazione principale sia fornita da una batteria (una classica quadra da 9V va più che bene), benchè nessuno vieti di collegare alla piazzola P1 un alimentatore di rete con uscita in continua tra i 15 ed i 9V (il range previsto per l'ingresso del regolatore 7805, siglato "U1" nello schema).

Circuito stampato

Eco sprinkler è stato concepito guardando alla semplicità, sia nel design sia nella sua realizzazione.
Per questo motivo sono stati impiegati solo componenti THT da montare su una basetta monofaccia: ovviamente il rovescio della medaglia è rappresentato dalle dimensioni del PCB, che in questa versione (seppur ottimizzabile) risultano essere di circa 11 cm x 7 cm.

 

Nonostante l'ampio piano di massa di cui è dotata la scheda, non tutte le piste sono state tracciate sul lato rame: tre aree di GND, attualmente isolate,  possono essere collegate alla massa principale tramite degli spezzoni di filo (collegamenti detti anche "resistori da 0 ohm") da far passare sul lato componenti della scheda dopo aver effettuato le saldature sul lato rame.

Il PIC impiegato è in formato DIP a 28 pin, percui è caldamente consigliato saldare sul PCB un relativo zoccolo ed innestarci sopra il micro piuttosto che saldare il chip direttamente sulla scheda. E' comunque previsto un connettore a 6 pin, P2, per la (ri)programmazione in-circuit del PIC, motivo per il quale togliere il micro dalla scheda non dovrebbe mai risultare necessario.
La scheda non prevede elementi di interazione con l'utente (ad esempio, pulsanti) per settare i parametri operativi dei sensori, dal momento che quello di pioggia si calibra in modo meccanico (sul corpo del sensore stesso) mentre quello di umidità prevede delle soglie di valori rilevabili gestite direttamente dal firmware (che si possono comunque reimpostare nel codice sorgente).

Dato il carattere di indipendenza di Eco-Sprinkler dalla centralina di controllo posseduta, la nostra scheda non deve essere necessariamente posizionata vicino alla centralina (tra l'altro, pensate quanto poco "estetico" sarebbe posizionare una generica scatoletta vicino al pannello comandi, magari touch screen…). Anzi, dato che la scheda è alimentata a batteria e non richiede una continua interazione con l'utente, conviene piuttosto metterla vicino 1) al circuito delle elettrovalvole e 2) ad un punto in cui arrivi la pioggia e ci sia una porzione di giardino.

Firmware

Il firmware, anch'esso molto semplice e lineare, è stato scritto in HiTech-C e compilato tramite la versione 9.83 dell'omonimo compilatore.
Sostanzialmente, una volta effettuata l'inizializzazione del sistema, viene avviato un ciclo infinito nel quale, una volta al minuto, vengono interrogati i sensori. Ad ogni interrogazione segue poi la decisione dal parte del micro circa l'aprire o chiudere il contatto del relè ed una fase di NOP fino al minuto successivo.
In questa sede è utile soprattutto riportare il codice delle funzioni per le suddette interrogazioni.
Il controllo sul sensore pioggia è il seguente:

// interrogazione sensore di pioggia
// la funzione restituisce 1 se viene rilevata pioggia, 0 altrimenti
int rain_check()
{
    //controllo se è avvenuta un'interruzione nella continuità elettrica tra RB1 ed RB0 (ovvero se piove).
    if (RAIN_SENSOR_IN == LOW)
    {
        // attendo 1 secondo per essere sicuro che non sia un falso allarme
        DelayMs(250);
        DelayMs(250);
        DelayMs(250);
        DelayMs(250);
        if (RAIN_SENSOR_IN == LOW)
            return 1;
    }
    else
        return 0;
}

mentre quest'altro è quello relativo al sensore umidità:

// interrogazione sensore di umidità
// la funzione restituisce il valore di tensione corrispondente all'umidità rilevata
// il range di valori è il seguente:
//
//    0 - 300 : terreno asciutto
//    300 - 700 : terreno umido
//    700 - 950 : terreno allagato
unsigned int damp_check()
{
      unsigned int damp_val;

      // leggo il valore restituito dal sensore connesso al pin AN0
      damp_val = ADCRead(0);
      
      return damp_val;
}

Per le altre funzionalità, trovate sul listato allegato i commenti, autoesplicativi, su quasi ogni singola riga di codice.
Vale, inoltre, la pena menzionare la memorizzazione dello stato assunto dal contatto del relè nella EEPROM del PIC, al fine di capire se a seguito di spengimento della scheda esso sia rimasto chiuso o aperto.

Conclusioni

Eco-Sprinkler, nella sua semplicità, si propone di far riflettere sul fatto che spesso un uso intelligente di tecnologia semplice sia più vantaggioso di un uso semplice di tecnologia intelligente.
A parte il gioco di parole, come avete visto sono stati impiegati componenti economici e spartani: i più "smanettoni" potrebbero addirittura realizzarsi in casa i sensori, per quanto sono semplici!
Certo, come ogni progetto in release 1.0, anche il nostro è perfettibile.
Ad esempio, le dimensioni dello stampato possono essere ridotte ricorrendo ad una progettazione double-layer del PCB.

O, ancora, ponendo il microntrollore in sleep una volta interrogati i sensori, si potrebbe risparmiare maggiore energia della batteria (a patto però di ricorrere a delle adeguate condizioni HW o FW di risveglio).
Per il momento lo scopo che volevo raggiungere è quello di non farvi sprecare acqua e soldi.

E, in questo, spero di essere riuscito!

8 Comments

  1. Ivan Scordato 6 dicembre 2013
  2. delfino_curioso delfino_curioso 6 dicembre 2013
  3. alex272 6 dicembre 2013
  4. delfino_curioso delfino_curioso 6 dicembre 2013
  5. Piero Boccadoro 7 dicembre 2013
  6. Marven 22 dicembre 2013
  7. delfino_curioso delfino_curioso 23 dicembre 2013
  8. delfino_curioso delfino_curioso 26 dicembre 2013

Leave a Reply