PDA

Visualizza Versione Completa : Arduino 3: il ritorno del progetto.



Enrico rossi
01-10-2014, 01:40
Dopo vari articoli di teoria vi propongo un mio progetto con arduino fatto per la tesina della mia maturità.


Aquasystem
6926





Sistema automatizzato per
la gestione dell’acquario.


MOTIVAZIONI DELLA RICERCA

Si vuole realizzare questo sistema per migliorare i sistemi inerenti all’acquario e per facilitare l’uso dell’acquario stesso. Così facendo si diminuisce il tempo che ci si dovrebbe dedicare e al tempo stesso si migliora la vita dell’acquario. Per questo progetto si ha intenzione di utilizzare vari sensori e arduino, facendo in modo di controllare ogni singolo strumento utilizzato dentro l’acquario, cosi che si possa fare il minimo indispensabile!
Per esempio :
Si dovrebbero accendere e spegnere le luci, delle strip led.
Si dovrebbe accendere e spegnere l’impianto co2 con elettrovalvola con un phametro.
Si dovrebbe spegnere la pompa, quando si alimentano i pesci, per non trascinare cibo nel filtro. Sarebbe bello un pulsante “ciclo alimentazione” che spenga la pompa, lasci ai pesci il tempo di mangiare e poi riporti tutto alla normalità, senza toccare altro.*
Si deve accendere l’aeratore allo spegnimento delle luci, per aumentare l’ossigeno nell’acquario in quanto le piante di notte lo consumano.
Per l’accensione e lo spegnimento delle luci vogliamo creare un effetto di alba e tramonto. Cosi i led si accendono e in modo crescente aumentano la propria luminosità e alla fine per fare l’effetto tramonto diminuiscano la propria intensità luminosa fino a spegnersi.
Si dovrebbe guardare il livello con un sensore e quando scende troppo il livello faccia partire una pompa per il rabbocco.
Si utilizzano vari sensori come quello di temperatura e di livello. Si realizzerà il programma con arduino perché è il microcontrollore studiato e utilizzato durante l’anno 2012/2013, e anche perché è nato da poco e molto semplice da usare e con costi non troppo elevati. Si utilizzerà una sonda di livello per il rilevamento del livello dell’acqua dentro l’acquario, in modo tale che quando l’acqua evapora il sensore lo rileva e accenda una pompa per ripristinare il livello. Questo provvedimento lo si è preso per esperienza personale, in quanto in molti acquari, specialmente quelli aperti l’acqua evapora molto velocemente e quindi si è costretti a fare molti rabbocchi e quindi c’è uno “spreco” di tempo che si evita mettendoci sensore e pompa. Nel progetto si utilizzano le strip led, al posto dei neon, perché hanno una durata molto maggiore rispetto ai neon e occupano un volume molto minore, cosi se ne possono mettere di più e di colore diverso per aumentare lo spettro che favorisca la crescita delle piante. Si è utilizzato delle strip led cold white da 6500k, delle warm white da 4500k e delle rosse. Cosi facendo arriviamo a creare uno spettro quasi completo per la crescita delle piante e per far risaltare i colori dei nostri pesci. In quanto alla temperatura, si utilizza un sensore di temperatura (LM35), rileviamo la temperatura e ne impostiamo due fisse, entro la quale la nostra temperatura deve rimanere. Se la temperatura scende sotto la minima impostata si accende il termostato, mentre se supera la massima si accendono le ventole di raffreddamento. Per una maggiore informazione e gestione del sistema si utilizza un lcd shield per arduino. È un espansione per arduino che ci permette di utilizzare il display. Nel display si vedrà la data e l’ora e la temperatura, cosi da creare un termometro e un orologio digitale.
6927

Le strip led dell’acquario.



6928
Sensore di livello.

ORGANIZZAZIONE CRONOLOGICA DEI TASK DI PROGETTO

Si sono individuati 4 OBIETTIVI PROGETTUALI (d'ora in poi OP):

OP.1 Analisi fattibilità
Il seguente progetto è abbastanza fattibile, ma si vuole realizzarlo al meglio come utilizzo e riuscire a diminuire al minimo i costi. È fattibile in quanto, si ha esperienza in campo dell’acquariofilia, che mi permette di sapere come fare per rendere migliore appunto il progetto. È un esperienza nata da 5 anni di cure, manutenzione e letture approfondite sul mondo dell’acquariofilia e soprattutto nell’ultimo periodo a stare dietro a tre acquari, mi hanno portato a creare questo progetto.

OP.2 Sviluppo prototipo
Il progetto comprende piccoli sotto programmi che alla fine dovranno interagire e lavorare insieme con l’utilizzo di arduino. I sottoprogrammi sono quattro e precisamente suddivisi in:
- Pulsante che gestisce il filtro;
- RTC che controlla i led, la CO2 e l’aeratore;
-Sensore di livello che accende la pompa di rabbocco;
-Sensore di temperatura che controlla l’accensione delle ventole di raffreddamento e del termostato.
OP.3 Sviluppo della piattaforma hardware
Il progetto è composto da tanti componenti che vengono fatti funzionare da arduino, mediante un programma. Arduino ha degli input e degli output che possono essere analogici soprattutto gli ingressi e digitali. Negli ingressi di arduino si collega il sensore di temperatura , il sensore di livello, il pulsante e il real time clock, che è un speciale circuito integrato che con un quarzo e la programmazione manda in uscita la data e l’ora, creando cosi un timer digitale per l’accensione e lo spegnimento delle luci e aeratore. Si è ragionato di prendere delle espansioni di arduino: lcd shield( per migliorare l’utilizzo dell’lcd con arduino). In uscita si avrà l’aeratore che è un dispositivo che emette bolle d’aria per aumentare l’ossigeno nell’acquario e lo si utilizza di solito se ci sono troppi pesci oppure quando si fanno alcune cure con medicinali particolari e soprattutto si utilizza di notte quando le luci dell’acquario sono spente in quanto le piante di notte utilizzano anche loro ossigeno e quindi c’e una grande diminuzione. In uscita si ha anche la co2 che fa l’effetto contrario dell’aeratore, in quanto eroga co2 che serve alle piante durante le ore diurne in quanto le piante con la fotosintesi clorofilliana hanno bisogno di anidride carbonica e rilasciano ossigeno, in questo caso l’aeratore di giorno non serve. Ovviamente si avranno anche le luci, si utilizzano delle strip led, il numero dipende da quanta luce vogliamo tenere in base alle piante che vogliamo far crescere nell’acquario. Le luci e l’aeratore sono collegate mediante il programma all’ora che viene impostata dal real time clock. Una cosa molto importante per il sistema acquario è il filtro, che non deve mancare mai e deve essere sempre al meglio. Pero durante il giorno si devono nutrire i pesci, pero se il filtro è acceso, molto mangime verrà risucchiato e quindi inutilizzato. Per risolvere a questo problema mettiamo un pulsante che quando viene premuto blocca il filtro per tot tempo che si deciderà, per dare il tempo ai pesci di cibarsi e poi riparte. Poi con il sensore di temperatura in ingresso mi regola, la temperatura nell’acquario che abbiamo impostato noi, se la temperatura diminuisce e passa sotto la temperatura di soglia si accende il riscaldatore, mentre se la temperatura supera quella di soglia si accendono le ventole di raffreddamento. Cosi si tiene la temperatura costante a quella prefissata. Un altro problema, per l’estetica e per la funzionalità, è di tenere l’acquario aperto, ovvero senza plafoniera standard. Questo comporta, negli acquari tropicali, che hanno delle temperature comprese tra i 23 e i 30 gradi una grande evaporazione dell’acqua, specialmente per acquari piccoli sarà molto veloce e quindi saremo costretti a fare ripetitivi e continui rabbocchi per tenere il livello dell’acqua normale. Questo problema si risolve con l’utilizzo di un sensore di livello in ingresso che mediante appunto il livello dell’acqua manda un segnale ad arduino che mi accende o spegne una pompa dentro una tanica contenente acqua, cosi quando il livello si abbassa, si accende la pompa e si spegne fino a che il livello non è tornato normale.





Schema semplificativo:
6929

6930


OP.4 Sviluppo della piattaforma software
Come software utilizzo il programma arduino che serve per programmare il microcontrollore arduino.

6931
6932
6933
6934
6935

Questo invece è il programma del pulsante e del filtro:
6936

Mentre questa è per il sensore di livello e la pompa:
6937

Gli obiettivi realizzativi (d'ora in poi OR) che si sono definiti sulla base degli OP summenzionati sono riassumibili nella seguente tabella:

LISTA Obiettivi Realizzativi
OB1=Analisi fattibilità.

OB2=Sviluppo hardware.

OB3=Sviluppo software.

OB4=Assemblaggio prototipo.

OB5=Test prototipale.


OB1=Analisi fattibilità.

Si studia e ci si informa per realizzare il circuito nel modo miglio possibile e cercando sempre di spendere il meno possibile
Le informazioni relative si cercano sui libri o su internet, cercando i componenti ,stilare una lista e scegliere i più economici sempre con un buon rapporto qualità prezzo.
Si spera nella buona realizzazione del progetto e utilizzando un budget abbastanza normale


OB2=Sviluppo hardware.

Trovare tutti i componenti utili al progetto e comprarli il prima possibile per iniziare subito con il progetto
Cercare in vari negozi di elettronica o cercare su internet i vari componenti utili e comprarli e ordinarli
Si spera di trovare tutti i componenti il prima possibile e di un buon rapporto qualità prezzo.

OB3=Sviluppo software.

Si organizza con schemi riassunti i vari circuiti del progetto e si riorganizza il lavoro.
Creazione del programma tramite il programma di arduino, si incomincia con la creazione dei piccoli sotto programmi, si verifica che vadano e poi si assemblano per formare il programma finale.
si spera che il lavoro fino adesso sia svolto in maniera ottima e ci si organizza per la creazione del progetto reale

OB4=Assemblaggio prototipo.

Si incomincia la realizzazione del progetto elettronico prima con la realizzazione del circuito con orcad e poi realizzando il circuito stampato e i vari collegamenti. in fine verrà realizzato il programma per arduino o eventuale altro microcontrollore
Utilizzo di orcad, ardublock e si dovrà creare il circuito stampato per la realizzazione del progetto e alla fine si mette il programma in arduino e si collegano tutti i dispositivi ad arduino.

Si spera che in questo fase non ci siano intoppi e problemi vari, e sperando nella linearità dell’obbiettivo si cerca di portarlo a termine


OB5=Test prototipale.

Finito l’assemblaggio di tutto il progetto si passa al suo collaudo e al test finale.


DOMANDE & RISPOSTE

Si è già valutato l'impatto economico necessario per la realizzazione di un prototipo e messa in funzione per l'esame?
In una prima analisi tecnico-economica si vede che più o meno si andrà a spendere intorno ai 100 euro. Per questo progetto si utilizza:

-filtro euro 15,50

-elettrovalvola euro 26,13

-ventole di raffreddamento euro 15/20

-4 strip led inguainate euro 16,80

-real time clock(RTC)= PCF8563P/F4,112 euro 2,286

-sensore di temperature=LM35 euro 1,48

-Display LCD Direct drive 12.7mm 5042PHR euro 14,78

-sensore di livello = RSF84Y100R euro 17,30

Ed altri componenti/strumenti già in possesso




Fascicolo tecnico

Schema elettrico:
6938
Questo è lo schema elettrico degli input del progetto.

Il primo sottoprogramma è quello del real time clock (RTC) in alto a sinistra. Si utilizza il ds1307. L’RTC è alimentato dalla 5 volt di arduino e va collegato ai piedini A4 e A5 e collegati insieme ai piedini SCL e SDA, in più è collegato al quarzo di 32768 hz che gli da gli impulsi al secondo per conteggiare il passaggio dei secondi. In più ho aggiunto all’RTC una batteria di feedback che permette di far continuare l’andamento del real time clock anche quando si stacca l’alimentazione. Con l’utilizzo dell’RTC si pilotano le strip led, l’aeratore e l’elettrovalvola della bombola di co2.

Il secondo sottoprogramma è formato dal pulsante. Il pulsante è collegato a massa e al piedino 2 di arduino, e quando si preme il pulsante, si spegne il filtro per due minuti e poi si riaccende automaticamente.
Il terzo sottoprogramma è quello con il sensore di livello RSF84Y100R che è collegato all’alimentazione di 5 volt e poi nel piedino 4 di arduino. Il sensore di livello si utilizza per i rabbocchi automatizzati per l’acquario. Quando l’acqua scende il sensore di livello segue il livello dell’acqua e quando si abbassa, accende la pompa che è dentro a una tanica da 10 litri e ripristina il livello dell’acquario, fino a spegnersi, raggiunto il livello iniziale.

Il quarto programma è quello del sensore di temperatura lm35 che mi rileva la temperatura nell’acquario. Invio la temperatura rilevata al display cosi creo un termometro digitale. Imposto due temperature che nel mio caso sono 26,5° e 27,5° nella quale la nostra temperatura deve rimanere costante intorno ai 27° gradi. Se la temperatura scende sotto i 26,5° si accende il termostato nel piedino 8 , che riscalda l’acqua fino a portarla a 27°, poi si spegne. Mentre se la temperatura supera i 27,5° si accendono le ventole di raffreddamento che riportano la temperatura a 27°.
6939
Questo schema è quello delle uscite. Sono 7 dispositivi e per ogni dispositivo si utilizza lo schema sopra. Il circuito è composto da dei morsetti, da un relè per ogni dispositivo tranne quello per i led che devono essere alimentati a 12 volt mentre gli altri dispositivi sono alimentati con la 220 v.
Il relè è pilotato con un transistor bcn47b e con arduino . la base del transistor è collegata all’uscita di arduino cosi riusciamo a pilotare il tutto, in piu mettiamo delle resistenze da 10 k per la polarizzazione del transistor e invece quella da 100 k è per eliminare i rumori.

Schema input:
6940

Schema output:
6941




* Sii sempre come il mare che infrangendosi contro gli scogli, trova sempre la forza di riprovarci. (Jim Morrison)

Jefri
01-10-2014, 02:38
Piccolo OT:
Si dovrebbe accendere e spegnere l’impianto co2 con elettrovalvola magari con l’accensione e con lo spegnimento delle luci.
Si deve accendere l’aeratore allo spegnimento delle luci, per aumentare l’ossigeno nell’acquario in quanto le piante di notte lo consumano.

Questo va eliminato. Ormai credo tu sappia bene che non va bene come cosa perchè crea sbalzi di pH notevoli :-)

Fine OT.


Come sempre tanta roba :114-52: Argomento di elevato valore tecnico di cui io non ho capito, come sempre, una mazza hippo

Alla fine degli articoli ci penso io a scrivere un sunto (per-idioti) in cui raccolgo le informazioni di base :-)

ALGRANATI
01-10-2014, 09:46
avvisatemi quando posso articolizzarlosmoking

Enrico rossi
01-10-2014, 10:24
L'ho scritto piu di due anni fa. Avevo saltato questo pezzo.


Inviato con un discus volante non identificato

Enrico rossi
01-10-2014, 10:47
ok modificato, guardae se vi va bene poi ALGRANATI è tutto tu

Giordano Lucchetti
01-10-2014, 11:17
Enrico, i miei complimenti.


Inviato dal futuro con la DeLorean.

Enrico rossi
01-10-2014, 11:44
Grazie giordy :)

billykid591
01-10-2014, 12:16
Sul pulsante sarebbe meglio collegarci un resistenza di pullup da 10 k collegata al positivo da una parte e al pin dall'altra.....

Enrico rossi
01-10-2014, 12:21
Si :)


Inviato con un discus volante non identificato

acron
01-10-2014, 13:03
Ciao Enrico,
ho dato un'occhiata veloce al codice del progetto.
Io avrei adottato degli accorgimenti diversi, l'uso del delay all'interno del ciclo for (?!) può creare dei problemi, ti faccio un esempio: se parte la pompa di rabbocco per livello troppo basso e durante il suo funzionamento premi il pulsante per fermare il filtro la funzione 'delay' blocca TUTTO il programma fino a quando non è trascorso il tempo selezionato.
Cosa succede in questo caso?
Se il galleggiante apre il contatto perchè il livello dell'acqua si è ripristinato la pompa di rabbocco si spegnerà solamente dopo due minuti!!!
Purtroppo arduino non è "multitasking" quindi bisogna aggirare il problema in altro modo, utilizzando la funzione 'millis' che controlla il tempo trascorso dall'accensione della scheda oppure, visto che lo hai utilizzato, utilizzando l'RTC.
*
In ogni caso fa molto piacere che le scuole si siano accorti dell'interesse dei giovani verso Arduino!!!

Inviato dal mio HTC One S utilizzando Tapatalk

Enrico rossi
01-10-2014, 13:14
In effetti certe volte mi creava dei problemi quando univo tutti i sottoprogrammi.


Inviato con un discus volante non identificato

Jefri
01-10-2014, 13:15
E io che mi fidavo.... dopo Enrico mi allaga la casa... emoticon-cartoon-022

Jefri
01-10-2014, 13:19
Alla fine della giostra sarebbe fattibile fare un articolino con scritto le cose da prendere, come fare i collegamenti, e le scritte di programmazione per un'impostazione base tipo:

-Accensione/spegnimento luci (magari dimmerando)
-Pompa rabbocco
-Tasto blocco totale per alimentazione animali/pulizia vasca/cambio acqua
-Controllo temperatura tramite sonda e visualizzazione su schermo+controllo termoriscaldatore/ventole?

In modo che anche il più pirla dei pirla (nella fattispecie me medesimo) possa comprarsi le cose e farselo?

Enrico rossi
01-10-2014, 13:27
Si si puo fare.


Inviato con un discus volante non identificato

Jefri
01-10-2014, 13:46
Perfetto... almeno lo mettiamo alla portata di tutti :-)

Niko
01-10-2014, 15:19
Ciao Enrico,
ho dato un'occhiata veloce al codice del progetto.
Io avrei adottato degli accorgimenti diversi, l'uso del delay all'interno del ciclo for (?!) può creare dei problemi, ti faccio un esempio: se parte la pompa di rabbocco per livello troppo basso e durante il suo funzionamento premi il pulsante per fermare il filtro la funzione 'delay' blocca TUTTO il programma fino a quando non è trascorso il tempo selezionato.
Cosa succede in questo caso?
Se il galleggiante apre il contatto perchè il livello dell'acqua si è ripristinato la pompa di rabbocco si spegnerà solamente dopo due minuti!!!
Purtroppo arduino non è "multitasking" quindi bisogna aggirare il problema in altro modo, utilizzando la funzione 'millis' che controlla il tempo trascorso dall'accensione della scheda oppure, visto che lo hai utilizzato, utilizzando l'RTC.
*
In ogni caso fa molto piacere che le scuole si siano accorti dell'interesse dei giovani verso Arduino!!!

Inviato dal mio HTC One S utilizzando Tapatalk

Concordo pienamente con acron, in progetti dove occorre gestire più periferiche la funzione delay è assolutamente da evitare.
Il codice che hai postato è troppo "hardcoded" nel senso che se ad esempio in futuro vorrai modificare gli orari di accensione diventa un vero sbattimento.

Sulla sezione fai da te salata ho postato la classe che ho creato per gestire la mia plafoniera a led. Dagli un'occhiata se vuoi.

:114-45:

Enrico rossi
01-10-2014, 18:35
Avete ragione. Haha ma l'ho fatto due anni fa, in fretta e furia e purtroppo col poco tempo che potevo dedicarci per via dello studio [emoji17]


Inviato con un discus volante non identificato

ALGRANATI
01-10-2014, 20:56
Ragazzi......... acron Fabiè.......segui tu sta cosa perché io non ci capisco una mazza.......passatemi i topic quando sono pronti da articolizzare .

Jefri
02-10-2014, 02:45
Niko, puoi gentilmente mettere il link anche qui?

Per modificare un orario di accensione/spegnimento poi si può fare anche da tastierino numerico direttamente sul display o devo connettermi al pc?

Per controllare il tutto e ricevere info sullo smartphone come si deve fare?

Faccio la voce del popolo hippo

acron
02-10-2014, 03:18
Azz...non hai chiesto niente!!! :-D
Purtroppo il discorso è molto ampio e se non si parte dalla base ci sono altissime probabilità di non riuscire a fare le cose più banali.
Io ad esempio ho iniziato a fare lampeggiare un led...poi sono passato a farne lampeggiare due con tempi di intermittenza diversi. Quest'ultima ad esempio può sembrare una banalità ma come dicevo poco più su arduino non è multitasking...dopodiché sono passato ad aggiungere sensori (temperatura, luminosità, Etc.)...fino ad arrivare alla plafoniera led.
Considera che per scrivere tutto il programma, causa tempo disponibile e soprattutto inesperienza, ci ho impiegato più di un anno!!!
Non sono un programmatore quindi se ci sono riuscito io tutti possono farcela. Jefri, se sei interessato compra un Arduino uno che costa una stupidata e fai qualche esperimento con i led vedrai che c'è da divertirsi:-)

Inviato dal mio HTC One S utilizzando Tapatalk

Jefri
02-10-2014, 03:22
Acron, sono già in trattative con Enrico.. se vuoi aggiungo anche te. Una cena in cambio di un pacchetta-tuttocompreso-di arduino. smoking

La fatica più grande che voglio fare è attaccare la spinahippo

acron
02-10-2014, 03:23
Per iniziare da zero con qualche progettino questo è un ottimo libro, http://www.robot-italy.com/it/arduino-cookbook-second-edition.html io ce l'ho in inglese ma se non sbaglio dovrebbe esserci anche quello in italiano, non sono riuscito a trovare il titolo però

Inviato dal mio HTC One S utilizzando Tapatalk

Enrico rossi
02-10-2014, 08:48
Concordo con acron. :) io ho il leonardo, ma siccome dovro fare tanti progetti mi prendero il nano o il micro.


Inviato con un discus volante non identificato

Niko
02-10-2014, 12:19
Niko, puoi gentilmente mettere il link anche qui?

Per modificare un orario di accensione/spegnimento poi si può fare anche da tastierino numerico direttamente sul display o devo connettermi al pc?

Per controllare il tutto e ricevere info sullo smartphone come si deve fare?

Faccio la voce del popolo hippo

Questo è il link. (http://www.reefbastards.it/showthread.php?4111-Arduino-classe-gestione-plafoniera)

La classe si occupa solo di accendere, spegnere e dimerare i led suddivisi per canali.
Tastierini o qualsiasi altro dispositivo di input e output (vedi lcd) devno essere gestiti separatamente.

Il controllo tramite smartphone prevedo di farlo tramite connessione bluetooth con un app che svilupperò.
Considera che la connessione bluetooth è come una normalissima connessione seriale ma senza fili, la stessa che si utilizza connettendo arduino al pc per: caricare lo sketch, fare debug o inviare comandi.

billykid591
02-10-2014, 16:26
Per gestire un LCD e creare dei menu ci sono tante librerie in giro una delle più valide è menwiz.......fra l'altro sviluppata da un Italiano...altrimenti un bel LCD touch screen e si eliminano anche i pulsanti (io sto sperimentando quelli della 4dsystem molto validi ma costosetti)...ad ogni modo come dice acron si deve provare... e studiare un po' sia di elettronica (cose facili niente di che) che di programmazione

Jefri
03-10-2014, 15:17
...ad ogni modo come dice acron si deve provare... e studiare un po' sia di elettronica (cose facili niente di che) che di programmazione

Questo sarebbe l'ideale. Ma non tutti hanno tempo/voglia/testa per queste cose non proprio semplicissime :-)

billykid591
03-10-2014, 15:58
Questo sarebbe l'ideale. Ma non tutti hanno tempo/voglia/testa per queste cose non proprio semplicissime :-)

Allora ci sono due strade...comprare apparati commerciali (tipo acquatronica o similari) oppure avvalersi di qualche smanettone disposto a farlo....

Jefri
03-10-2014, 16:01
Nel mio caso sicuramente la seconda emoticon-cartoon-013

Però sarebbe bello poter permettere a tutti di farselo da soli con una guida semplice semplice. :-)

billykid591
03-10-2014, 16:11
Nel mio caso sicuramente la seconda emoticon-cartoon-013

Però sarebbe bello poter permettere a tutti di farselo da soli con una guida semplice semplice. :-)

Non è difficilissimo....certo un po' di tempo ed applicazione è necessaria...fra l'altro in rete si trovano diversi tutorial, anche in italiano, e sul sito ufficiale c'è il forum con la sezione italiana (la più nutrita fra l'altro)....