Un saluto a tutta la community!
Si sta avvicinando l’estate! Il sole, il caldo, le ferie, …, ma anche le zanzare, l’afa, la stanchezza e la necessità di annafiare le piante!
Poichè le idee migliori vengono alle persone più pigre, mi sono deciso di automatizzare l’irrigazione del mio giardino con un Raspberry Pi e, “visto che c’ero”, perchè non rendere il progetto open source e disponibile alla fantastica community italiana???
Il progetto si chiama RPirrigate e il suo scopo è quello di permettere di utilizzare un Raspberry Pi per controllare un sistema di irrigazione, controllandolo tramite una comoda (e bella!) interfaccia web responsive, disponibile quindi anche da mobile.
N.B.: RPirrigate è stato scritto e testato su Raspbian. Per altri SO (leggasi Arch Linux ARM) credo siano necessarie delle modifiche, ma non ho ancora testato.
Idea di base
Il programma funziona a moduli: l’idea è che un modulo corrisponde tecnicamente a un’elettrovalvola e logicamente a un insieme di piante da irrigare contemporaneamente. Quindi per esempio un utente può decidere di collegare a un modulo 4 piante uguali, usando quindi la stessa elettrovalvola e dei raccordi a T o a Y.
Ogni modulo dispone di un piano di irrigazione: possiamo infatti impostare degli intervalli (in giorni/settimane) ogni quanto innaffiare e quanti litri fornire alla volta. Ovviamente per ogni modulo possiamo avere più eventi: uno che innaffia la mattina, uno la sera; e così via.
Oltre a ciò, possiamo anche (per testare il sistema, o per altri motivi) attivare manualmente l’irrigazione a un modulo, tramite l’interfaccia web.
Inoltre il programma dispone di un’altra funzionalità molto comoda: si connette a un servizio meteo e rimanda le irrigazioni in caso di pioggia, in maniera intelligente: poichè gli eventi vengono impostati come intervalli di giorni ogni quanto innafiare (per esempio: innafia ogni 2 giorni alle 19.30), ogni qualvolta piove (in maniera sufficiente), tutte le irrigazioni vengono rimandate, come se fosse stata eseguita un’irrigazione!
Aspetti tecnici del programma
Per quanto riguarda gli aspetti tecnici, il programma è composto di due parti: un demone, scritto in Python, col paradigma ad oggetti e un’interfaccia web scritta in PHP. Le due parti comunicano tramite un DataBase SQL, nel quale salvano anche i log sulle irrigazioni passate.
Il demone è scritto pensando alle ridotte capacità computazionali del Raspberry, quindi cerca di “fare le cose solo quando serve”. Ciò significa che accede al DataBase solo quando riceve un segnale dall’interfaccia web che lo spinge a farlo, ricarica le impostazioni solo quando l’interfaccia comunica che sono state modificate, e così via.
Il demone non controlla direttamente le GPIO, ma ho deciso di utilizzare PIGPIO come tramite. In realtà non è stata proprio una decisione, sono stato costretto. Facendola il più breve possibile, il problema era che siccome il demone deve ricevere segnali unix dall’interfaccia web, deve essere eseguito dallo stesso utente e il modulo python RPi.GPIO richiede permessi di root; avrei quindi dovuto eseguire il web server come root, cosa alquanto insicura.
Il fatto di aver usato PIGPIO poi permette, in maniera semplice, di far evolvere RPirrigate in modo da poter, con un’interfaccia web centrale, controllare più Raspberry localizzati in posti diversi (per esempio potremmo averne uno in giardino e uno nell’orto, ma anche uno a casa e uno nella casa al mare). Tuttavia questa è una funzione che implementerò in seguito se ce ne sarà necessità/richiesta dagli utenti.
Tornando a noi, l’interfaccia web come ho detto è stata scritta usando PHP e il framework Bootstrap, in particolare un template modificato che ho trovato con licenza MIT. L’interfaccia ci viene fornita da un web server lighttpd che viene installato con RPirrigate e che ascolta sulla porta 883. Perchè ho scelto questa porta? Casualità: ne ho cercata una de facto libera.
Installazione
Potete trovare la guida di installazione a questo link.
Hardware
DISCLAIMER: RaspberryItaly ne l’autore di questo post si assumono alcuna responsabilità per danni causati a cose e/o persone in conseguenza all’attuazione di questa guida. State molto attenti, sopratutto quando collegate il trasformatore. Rischiate di danneggiare il Raspberry e gli altri componenti e anche di farvi male se sbagliate i collegamenti. Nel dubbio potete affidarvi a qualcuno più esperto per i collegamenti.
Chiaramente il nostro sistema è costituito anche da una parte hardware, pertanto richiede di acquistare alcuni componenti (vi suggeriremo noi direttamente anche i link dove acquistarli).
Prima di partire a spiegare come realizzare il nostro impianto di irrigazione dobbiamo spiegare alcuni concetti che, mentre ad alcuni possono sembrare banali, ad altri impedirebbero la comprensione dell’intero sistema.
Elettrovalvola: banalmente parlando si tratta di un rubinetto elettrico. Si interpone in un tubo idraulico e permette di aprire l’acqua o chiuderla in base alla corrente elettrica che riceve. Se riceve corrente si apre (e nel nostro caso irriga), altrimenti in condizioni normali non lascia passare l’acqua.
Relè: questo concetto è simile a quello di elettro valvola, ma si tratta di un componente elettrico. Similmente a un’elettrovalvola quando riceve corrente, fa passare al suo interno la corrente. (in questo caso pero si dice che chiude il circuito, anche se ciò significa che lascia passare la corrente). L’utilizzo dei relè nel nostro esempio è quello di usare la poca corrente fornita dal raspberry per fare da interruttore per le elettro valvole (che prendono corrente da un altra sorgente)
Trasformatore: questo è un concetto che meriterebbe una trattazione molto più approfondita, ma per ora ci limitiamo a dirvi che la corrente elettrica può avere diverse tensioni (per esempio in casa abbiamo 230v) e vari apparecchi funzionano a diverse tensioni. Le elettrovalvole generalmente lavorano a 12v o 24v, per vari motivi tra cui per questioni di sicurezza (tensioni basse sono molto meno pericolose per le cose e le persone). Nel nostro caso quindi un trasformatore prende in input 220v e fornisce in uscita 12/24v.
Ora, sempre per chi non lo sapesse, la corrente elettrica funziona con due cavi: se entrambi sono collegati il nostro apparecchio viene alimentato mentre se uno è scollegato l’apparecchio si spegne. Poichè lo scopo di un relè è proprio quello di interrompere e chiudere un circuito, interponendo un relè fra l’alimentatore e l’elettrovalvola possiamo comandare l’alimentazione della valvola comandando il relè, e come abbiamo detto possiamo comandare il relè tramite le GPIO del nostro Raspberry Pi, e quindi… possiamo comandare le elettrovalvole col Raspberry Pi!
Dovrebbe essere ora chiaro il principio di funzionamento del nostro sistema di irrigazione
Quando il nostro Raspberry Pi da l’impulso, il relè si chiude (in gergo tecnico si dice che si eccita) e lascia passare la corrente che quindi arriva dall’alimentatore alla valvola.
Ora, compreso il funzionamento, ci sono dei particolari tecnici che ci impediscono di collegare direttamente un relè al Raspberry, ma fortunatamente possiamo trovare online su (ad es. Amazon) dei kit da 2/4/8 relè già pronti per essere collegati al Raspberry. Tutti i moduli uguali a quelli che vi consigliamo dovrebbero funzionare, anche se indicati per Arduino.
La quantità di relè da acquistare dipende unicamente da quanti moduli di irrigazione vogliamo realizzare (i.e. quante elettrovalvole vogliamo collegare al sistema). Vi consigliamo, vista la poca differenza di prezzo al variare della quantità di relè, di prendere i moduli con molti relè, così da poter ampliare l’impianto in seguito, o usare il relè anche per altri progetti con Raspberry Pi.
Per collegare il modulo di relè al Raspberry sono necessari dei cavetti con delle particolari estremitá per potersi inserire nel connettore GPIO e nel connettore del modulo dei relè, anche questi li trovate online. Anche in questo caso potete acquistarli da altre parti ovviamente, purchè abbiano il connettore adatto (per i più esperti, potete anche usare dei cavi floppy/ide adeguatamente tagliati e saldati)
Inoltre ovviamente abbiamo bisogno delle elettrovalvole e dell’alimentatore. Quali scegliere dipende ovviamente da vari fattori, tra quali quanto volete spendere. Le valvole professionali da irrigazione funzionano in 24v e sono completamente stagne, create appositamente per questo scopo. Se invece volete contenere i costi potete usare delle normali valvole in 12v, purchè le mettiate dentro una scatola di derivazione protette dalla pioggia.
Vi consigliamo alcune valvole che potete acquistare. Ovviamente potete usarne altri tipi, purchè poi prendiate l’alimentatore adatto.
Per quanto riguarda l’alimentatore, dovete controllare che eroghi la tensione (voltaggio) richiesta dalle valvole che usate (12v se scegliete quelle consigliate da noi) e che la corrente erogata sia sufficiente (amperaggio). Su quest’ultimo fattore dovete riporre particolare attenzione. Se per esempio volete comandare 4 valvole, e ciascuna valvola consuma 250mA, in totale avete bisogno di 1000mA (1A), tuttavia dato che i venditori di alimentatori sono ottimisti, vi consigliamo di aggiungere sempre un 50% quindi vi servirebbe un alimentatore da 1500mA.
Se scegliete le valvole da noi consigliate, potete usare qualsiasi alimentatore che fornisca 12VDC, anche quelli in formato carica cellulare tuttavia ribadisco controllate che eroghi abbastanza corrente per tutte le valvole.
Una volta acquistati tutti i componenti, dobbiamo passare all’assemblaggio.
Ovviamente Raspberry, modulo di relè e alimentatore dovranno stare in un posto asciutto e al coperto (in casa, capanno degli attrezzi, etc), magari dentro un case auto costruito che contenga il tutto, poi dai relè partiranno i cavi che vanno a collegarsi alle varie elettrovalvole, che devono essere comunque in un contenitore stagno. Consigliamo di mettere le valvole dentro a una scatola di derivazione di quelle usate in ambito elettrico, e rialzarla da terra. Le trovate in qualsiasi ferramenta/negozio di articoli elettrici. Per riferimento vi lasciamo un link di esempio.
LINK Amazon
il cavo che collega le valvole ai relè dovrà essere bipolare, di dimensione ed isolamento adeguati. Per esempio un cavo 2×0.75 mm o più grande, in doppio isolamento è perfetto (potete trovarlo nei negozi di articoli elettrici, in ferramenta a basso costo). Di nuovo vi lasciamo un link di riferimento per capire di cosa stiamo parlando, ma vi consigliamo di acquistarlo in negozio: potete avere metraggi personalizzati e costa anche meno.
LINK
Passiamo all’assemblaggio vero e proprio.
Il primo passo è quello di installare le scatole di derivazione con le valvole all’interno collegate ai tubi dell’irrigazione.
In seguito posare il cavo dalle scatole di derivazione fino al posto in cui volete montare il Raspberry e il resto. Per quanto riguarda la posa del cavo, vi consigliamo di inserire il cavo all’interno di una guaina isolante/tubo nella tratta all’esterno che va dalla scatola di derivazione contenente l’elettrovalvola fino al Raspberry, per proteggerlo dalle interperie.
Nella foto sulla sinistra si vede la scatola di derivazione con due valvole all’interno. Come notate ho siliconato intorno per evitare che entri umidità ed acqua nella scatola. Probabilmente esteticamente l’interno non è bello, ma l’importante è la funzionalità!
Ora dovete collegare il cavo alle valvole. Come avrete notato le valvole hanno dei connettori ai quali potete collegare i cavi con degli appositi spinotti ma anche semplicemente sbucciandoli, facendoli passare attraverso il foro presente sul connettore della valvola, magari saldandoli e in seguito isolandoli. è una soluzione artigianale ma che, se fatta bene, non ha nulla da invidiare al connettore, anzi a volte il contatto è migliore. Essendo bipolare all’interno del cavo ci sono due conduttori isolati separatamente. ognuno dei due conduttori va collegato a un separato connettore sulla valvola, segnandosi la polarità e il colore corrispondente (es. marrone +, blu -).
Una volta collegate le valvole al cavo, prima di collegarle al resto, dobbiamo collegare i relè al Raspberry. Per questa fase dovete usare i cavetti coi connettori particolari indicati in precedenza.
Un modulo di n relè necessita di n+2 cavetti. Ciò significa che se avete acquistato un modulo da 4 relè, ci saranno 6 cavetti che collegano il Raspberry al modulo. Questo perchè per ogni relè abbiamo un segnale, piu abbiamo due cavi di alimentazione “generale”.
Mentre sul modulo gli ingressi hanno un nome, sul Raspberry le GPIO, senza una tabella che le descriva, sono indistinguibili. Potete facilmente individuare sul connettore principale del modulo VCC, GND che sono l’alimentazione, e IN1, IN2…. che sono i vari segnali dei relè.
In questa immagine vedete un suggerimento di collegamento (ovviamente potete usarne altri, questo è un esempio). Indipendentemente dal numero di relè che andrete a collegare avrete sicuramente i 5v e GND da collegare, con gli appositi cavetti dalla porta del Raspberry indicata in figura a quella sul modulo di relè denominata ugualmente. Inoltre in base a quanti relè userete avrete altrettanti altri cavetti da collegare. L’esempio della figura è con 4 relè. Se ne usate di meno potete semplicemente ignorare i collegamenti in eccesso (es. se usate due relè, ignorate relè3 e relè4 e così via). Per esigenze maggiori o particolari vi consigliamo il forum della nostra community, dove è presente una sezione dedicata al progetto per esporre i propri dubbi e richiedere tutto l’aiuto di cui si ha bisogno!
Se siete arrivati a questo punto e avete seguito tutti i passaggi avete le valvole collegate correttamente al cavo e il Raspberry Pi collegato al relè e quindi vi manca poco per finire il lavoro.
Dobbiamo i collegare le valvole al nostro sistema. Per ogni valvola avremo un cavo contenente due fili che arrivano al nostro relè: + e – . Prendiamo il – di tutte le valvole, li aggiuntiamo insieme e li colleghiamo al – del nostro trasformatore. Ora ci restano da collegare i +. Per ogni valvola dobbiamo collegare il + a un relè separato, precisamente al contatto NO che sarebbe quello in foto.
Ora, dai relè ai quali abbiamo collegato le valvole, in tutti colleghiamo un cavetto al contatto C (foto), poi prendiamo tutti i cavi, li aggiuntiamo insieme e li colleghiamo al + dell’alimentatore.
Ora se tutto è collegato correttamente, possiamo collegare l’alimentatore alla presa e usando il pulsante di test di prima, dovremmo vedere le nostre valvole aprirsi e chiudersi, quindi possiamo passare all’installazione del software!
Guida all’installazione
Come ho detto, l’installazione si prefigge di essere il più semplice possibile. Basta seguire i seguenti passaggi:
Potete trovare la guida di installazione a questo link.
Open Source!
L’intero progetto è disponibile su GitHub ed è Open Source, quindi chiunque avesse delle idee in merito è libero di contattarmi. Presto documenterò anche tutto il codice così per renderlo più comprensibile.
La licenza è Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0)
Scusate se…
…ci sono errori o manca qualcosa, ma è un progetto ancora agli inizi e ovviamente non è perfetto, considerato anche che l’ho fatto da solo 🙂
Serve aiuto??
Potete trovare tutto l’aiuto per la realizzazione, per esigenze particolari e quant’altro sul forum nella sezione dedicata
Riferimenti
Link alla sezione dedicata a RPirrigate sul mio blog: Link
Link al progetto su GitHub: Link
Link alla Pagina GitHub: Link
Un commento
Pingback: RPirrigate, rimossa la necessità di PIGPIOD - RaspberryItaly