Progetto Arduino. Ogni giardino, anche di piccole dimensioni, può essere migliorato con un impianto d’irrigazione automatico. Il poter mantenere la corretta umidità del terreno durante il periodo primaverile ed estivo contribuisce ad avere il nostro “angolo verde” sempre in ottima forma.
In questo articolo descriverò come realizzare una centralina per un impianto d’irrigazione. Il cuore del progetto è una scheda Arduino Duemilanove, a cui si va ad aggiungere uno shield LCD ed uno shield progettato ad hoc (Irrighino Shield) che contiene un chip RTC (RealTimeClock) ed i Relè.
La centralina deve poter automatizzare l’apertura/chiusura delle elettrovalvole atte a irrigare le varie zone del giardino. A questo scopo sono disponibili 9 timer settimanali, completamente programmabili.
Per ogni timer è possibile configurare:
-
I giorni della settimana d’attività
L’ora d’inizio irrigazione
L’ora di fine irrigazione
L’uscita da attivare
E’ possibile configurare più timer per la stessa uscita (per esempio per settare due irrigazioni al giorno in un semenzaio dove bisogna mantenere un’elevata umidità).
E’ inoltre possibile gestire manualmente le uscite, visualizzandone lo stato.
Di seguito sono approfonditi i principali aspetti del progetto.
Irrighino Shield
Questo shield permette di montare su di esso ulteriori shield. Nel caso specifico l’LCD shield. Esso monta 4 relè (5V) comandati dal driver ULN2003. Un fusibile protegge il trasformatore che alimenterà le elettrovalvole. Trova spazio anche il chip RTC DS1307. Esso ha il compito di mantenere data ed ora nel sistema. Per ottenere una maggior precisione, al posto di un quarzo da 32Khz, è usato il chip DS32Khz. Quest’ultimo componente garantisce la compensazione in temperatura e tensione. Lasciando acceso il nostro timer per qualche mese, potremo notare come l’utilizzo di questo chip mantenga preciso l’orario nel tempo. Una batteria tampone mantiene aggiornata la data e ora anche in caso di mancanza dell’alimentazione principale.
L’intero shield può essere realizzato su una basetta singola faccia. Personalmente utilizzo basette presensibilizzate e pronte per la fotoincisione (UV).
Nell’immagine seguente è visibile l’impiego di ogni singolo Pin di ArduinoDuemilanove.
Arduino Irrighino - Software
Appena alimentata la centralina, verrà visualizzata data ed ora (in questa versione sperimentale data ed ora va impostata via codice alla prima programmazione).
Attraverso i pulsanti presenti sull’LCD Shield (http://cgi.ebay.it/LCD-Keypad-Shield-for-Arduino-Duemilanove-LCD1602/290533701464?pt=LH_DefaultDomain_0&hash=item43a5287758#ht_2494wt_905) è possibile navigare attraverso le diverse videate presenti.
Premendo il pulsante “UP” accediamo alla videate del primo timer.
Continuando a premere “UP” avremo modo di visualizzare le videate relative a tutti i 9 timer (Da P1 a P9 dove P sta per Programma).
Arrivati alla videata del nono timer, premendo “UP” visualizzaeremo la videata relativa alla visualizzazione degli stati dei relè.
Tornando alla videata sopra riportata (del timer P1) sono leggibili le seguenti impostazioni:
-
Il timer P1 è attualmente disattivato
Il timer P1 entrerebbe in azione tutti i giorni della settimana
Il timer P1 entrerebbe in azione tra le 6 e le 7 di mattina
Il timer P1 attiverebbe il relè 1.
Premendo il pulsante “SET” è possibile modificare ad uno ad uno i valori sopra citati (verrà visualizzato un cursore lampeggiante su ogni valore da modificare, premendo “UP/DOWN” si varierà il valore, premendo “SET” si confermerà il valore per poi passare al successivo).
Si nota a questo punto l’estrema flessibilità del sistema. Ogni timer può lavorare su più relè ed è possibile selezionare singolarmente i giorni della settimana necessari.
E’ inoltre possibile, per esempio, selezionare l’attivazione del timer tra le 23.00 e le 3.00. Il sistema riconoscerà automaticamente il cambio data ed attiverà correttamente il timer tra le 23.00 e le 3 di notte.
Nel caso vi sia un blackout, al ritorno della corrente il timer ricomincerà a funzionare regolarmente, attivando i timer ove necessario. Infatti, lo stato dei relè non viene cambiato solamente allo scadere dell’orario di “start” e “stop”, ma calcolato ed impostato costantemente, garantendo un funzionamento stabile e sicuro.
Di seguito è riportata la videata riguardante lo stato delle uscite:
Notiamo che le uscite 1 e 3 sono influenzate dai timer ed al momento sono aperte.
L’uscita 2 è forzata allo stato “Acceso” (V) indipendentemente dai timer. Vediamo infatti lo stato chiuso di questa uscita.
L’uscita 4 è forzata allo stato “Spento” (X) indipendentemente dai timer. Vediamo infatti lo stato aperto di questa uscita.
Premendo “SET” è possibile settare il funzionamento di ogni uscita (influenzato dai Timer, Acceso, Spento).
Abbiamo così il controllo completo di ogni uscita, in caso di necessità anche manualmente.
Il presente progetto occupa circa 1/3 dello spazio di memoria programma del chip AtMega328 installato su Arduino2009. Abbiamo così molteplici possibilità di espandere tale centralina per adattarla alle esigenze di ognuno.
In primo luogo sarebbe da aggiungere la funzionalità di modifica della data/ora via software, agendo sui pulsanti della centralina. Potrebbe essere utile aggiungere un sensore di luminosità ambientale… per esempio per poter accendere le luci del giardino al calar del sole. Si potrebbe dedicare un’uscita (con relè Normalmente Chiuso) per poter collegare tali luci in serie. Avremo così la possibilità di attivare un timer per esempio dalle 00.00 alle 5.00, facendo spegnere le luci in questo periodo notturno. Otterremo in questo modo un’accensione automatica al calare del sole e uno spegnimento automatico al sorgere del sole. Per evitare sprechi energetici, il timer andrebbe a forzare lo spegnimento delle luci esterne tra la mezzanotte e le 5 di mattina.
4 relè non sono sufficienti? Potremmo riprogettare l’Irrighino Shield aggiungendo un PortExpander I2C. A questo punto otterremmo N uscite (decine e decine di relè…). Rimarrebbe necessario a questo punto aumentare il numero di timer… la eeprom interna dell’AtMega potrebbe contenere i dati di almeno un centinaio di programmi differenti.
Si potrebbe monitorare il livello di una cisterna di raccolta acqua piovana.
Si potrebbe loggare l’andamento del livello della cisterna.
Si potrebbe implementare un controllo a distanza (RS485) per portare in posizione comoda in giardino i comandi manuali di accensione/spegnimento delle elettrovalvole.
Le idee a riguardo potrebbero essere infinite, ma soprattutto improntate alle esigenze di ogni singolo giardino/proprietario. Il solo limite a questo punto è la vostra fantasia!
Buon divertimento!
Un particolare ringraziamento allo staff di Elettronica Open Source per avermi regalato (attraverso l’iniziativa Review4U) la possibilità di cimentarmi nello studio del progetto Arduino. Grazie a tutti per il tempo riservatomi nella lettura dell’articolo.
Ma che progetto fantastico!!!!
Grazie mille FlyTeo!
E’ un piacere condividere progetti utili! 😉
ciao sto usando il tuo progetto ma non trovo la libreria wire che hai usato quelle nuove danno errore puoi mettere la libreria che hai usato??
E’ quello che stavo cercando, ma purtroppo sono un novellino, sapreste consigliarmi un sito dove comprare le elettrovalvole e gli altri componenti? Io utilizzerei irrighino solo per annaffiare i vasi in balcone, quindi non ho necessità di gestire una grossa pressione d’acqua. Le elettrovalvole che ho trovato costano sui 50 euro, vorrei trovare qualcosa di più economico. Grazie
Io sto facendo il progetto per il balcone e una pompa al posto dell’elettrovalvola, sto un po’ modificando il tuo software per adattarlo alle mie esigenze. Un appunto la funzione getKeyFromAnalog() dovrebbe gestire una singola pressione, l’ho modificato altrimenti diventa un po’ ingestibile.
Grazie a te!
Io per il mio giardino ho installato 7 elettrovalvole comprate su ebay già un anno e mezzo fa.
Il modello è questo: http://cgi.ebay.it/ELETTROVALVOLA-NAANDAN-1-FILETTATA-F-F-24-VOLT-/230632656587?pt=Irrigazione&hash=item35b2c70ecb#ht_500wt_922
Se lo cerchi all’estero si trova (o almeno si trovava) a prezzo anche più basso!
Con queste elettrovalvole puoi interrompere il normale flusso dell’acquedotto.
Se però non vuoi collegarti all’impianto idrico di casa e ti serve soltanto annaffiare pochi vasi, una soluzione alternativa potrebbe essere usare un contenitore da 40 litri circa (più è grosso, più autonomia avrai!) non usare alcuna elettrovalvola ma una pompa da acquario di adeguata dimensione.
In questo modo irrighino andrebbe ad azionare direttamente la pompa elettrica solo quando necessario.
Nel mio caso invece, ho due cisterne da 15000 litri ed una pompa da un cavallo.
La pompa (il cui funzionamento è regolato da un pressostato) mantiene in pressione l’intero impianto grazie ad un vaso di espansione da 100litri.
Le elettrovalvole aprono il flusso dell’acqua quando necessario. 😛
gli schemi dove sono?
il software ?
si trova già fatto ?
Grazie
C’è un allegato alla fine dell’articolo,
con la documentazione sul progetto Arduino fornita dall’autore,
ti è visibile?
no !
puoi passarmi il link ?
Grazie
Grazie!
Ciao, i file .brd e .sch come si leggono?
Purtroppo anch’io non vedo l’allegato ne’ con Safari ne’ con Firefox.
Bellissimo progetto ma anche io non vedo l’allegato! 🙁
Avete ragione, gli allegati sono disponibili solo per gli utenti premium.
Ecco il link diretto, fatemi sapere se ok (in drupal i permessi sembrano non finire mai 🙂
http://it.emcelettronica.com/files/Irrighino.zip
Ciao, i file .brd e .sch come si leggono?
Con ill programma Eagle
chi è disposto a prepararne uno e vendermelo??
Ciao speleoduracell potresti gentilmente inviarmi via mail all’indirizzo [email protected] i file modificati del progetto Irrighino?
Grazie
Valter
Ciao chiedo un parere agli esperti:
Vorrei realizzare un sistema che mi permetta di riempire il pozzo (con acqua dell’acquedotto) quando non è pieno, controllando l’apertura/chiusura di un’elettrovalvola e utilizzando un sensore di livello.
La durata dell’apertura dell’elettrovalvola deve essere in funzione del livello del pozzo. (se il livello è 1 metro più basso del livello massimo allora l’elettrovalvola dovrà essere aperta 30 minuti; se il livello è 2 metri più basso del livello massimo elettrovalvola aperta 60 minuti, ecc.) Questa operazione (apertura elettrovalvola) andrebbe fatta ad un (o più) orario preciso che pùò essere diverso da un giorno all’altro (per esempio il lunedi’ alle ore 22.00, il martedi alle ore 5.00, ecc).
E’ possibile realizzare questo sistema con Arduino?
Grazie Daniele
ciao a tutti,questo forum è stato il punto di partenza per il mio progetto logica di controllo con Arduino Uno
controllo di 12 uscite con triac
memorizzazione di 40 programmi
1 sensore umidità
1 sensore luce
2 sensori generici collegabili come livello acqua, temperatura, pressione atmosferica, altro sensore umidità e luce, sensori contatto.
funzione start e stop
setup livello pioggia e luce
setup data e ora
navigazione nei menu attraverso pulsanti e visualizzazione su display due righe
firmware personalizzabile http://www.ptlug.org/w/index.php?title=Irriduino2 1 grazie a tutti e buon lavoro_ [email protected]
Mi piacerebbe vedere le modifiche che hai portato per la libreria del ds1307 potresti mandare il codice anche a me? [email protected] Grazie
Potresti inviarlo anche a me [email protected] grazie
ciao, ho provato a caricare il pde su arduino UNO con lcd16x4+libreria+valori setup….
ma non visualizco nulla sull’lcd..
mi potreste aiutare?!?
Ciao, ho provato a guardare su alcuni siti ma non riesco a trovare il chip ds32khz. sai dirmi alcuni siti dove posso trovarlo o qualche chip differente?
Grazie!
Dai un’occhiata qua http://www.mouser.it/Search/m_ProductDetail.aspx?Maxim-Integrated%2FDS32KHZ-DIP%2F&qs=GxOUx7aO6nxiOC4tu21zcg%3D%3D oppure http://it.rs-online.com/web/c/?sra=oss&r=t&searchTerm=ds32khz
Salve,
intanto complimenti per il progetto, è il migliore e completo che ho visto fin’ora. Vorrei poter utilizzare il progetto su un mega 2560, ma ho problemi a reperire le librerie con cui lavorare sopra. la liquidcrystal che ho io non va per nulla bene, e non riesco a reperirla sul web.
Grazie tante per la disponibilità.
ciao a tutti bel progetto ma a mè da errore Wire
cosa devo fare????