Download - Tesi DOMOTICA ARDUINO
1
ISTITUTO TECNICO AGRARIO G. PRESTA
Esami di stato 2014
Alunno: De Santis Kevin
Classe V, sez. B
Anno scolastico 2013-2014
Realizzazione di un impianto domotico
atto al controllo di una serra
2
Indice
1) Prefazione ……………………………………………………….pag. 3
2) Introduzione……………………………………………………..pag. 4
3) Componenti elettronici ………………………………………….pag. 5
4) Software…………………………………………………………pag. 8
5) Modalità d’uso.………………………………………………….pag. 11
6) Conclusioni………………………………………………………pag. 14
7) Ringraziamenti…………………………………………………..pag. 15
3
1. Prefazione
Negli ultimi anni ho coltivato in maniera del tutto autodidatta una improvvisa passione
verso l’informatica. Circa un anno fa scoprii l’esistenza del progetto Arduino che mi
colpii irrimediabilmente. Ordinai su internet un kit definito “starter” contenente la
scheda Arduino UNO e una serie di componenti per iniziare a prendere confidenza
con la stessa. Nei 6 mesi successivi realizzai un piccolo impianto domotico in grado
di controllare alcune lampade, un allarme magnetico, delle ventole e una webcam
all’interno della mia cameretta. Qualche mese fa ero alla ricerca di una tesi da
sviluppare per l’esame di stato, doveva essere qualcosa che mi appartenesse e che
mi avrebbe reso fiero di me stesso. Guardando alcune foto dei precedenti anni
scolastici mi venne in mente il periodo passato presso l’azienda “Jentu” per un
periodo di alternanza scuola-lavoro. Ricordai così di un vecchio computer all’interno
di una stanza minuscola. Cercai da subito di avvicinarmi spinto dalla curiosità per
capire cosa ci facesse un pc tra diversi ettari di serre. Mi colpì un software presente
sul monitor ricchissimo di funzionalità. Chiesi informazioni al tutor aziendale che mi
spiegò che su quel computer era presente un software in grado di ricevere
informazioni sul microclima all’interno della serra e programmare l’irrigazione e la
fertirrigazione. Fui così colpito da un illuminazione: perché non presentare un
modello di serra dotato di un intelligenza artificiale in grado di sostituire o
semplificare l’attività dell’uomo, mantenendo comunque costi ragionevoli e accessibili
a tutti.
Kevin De Santis
4
2. Introduzione
Lo scopo principale di una serra è quella di creare al suo interno il microclima ideale
per la coltura che andremmo a coltivare. Per alterarne il microclima ci si avvale di vari
impianti come il riscaldamento e l’irrigazione.
In questa tesi dunque andremo a costruire l’impianto domotico di una serra in
miniatura, in primo luogo andremo a scegliere e a descrivere i componenti elettronici
che sono necessari per dar vita all’impianto utilizzando Arduino Uno come cuore del
progetto. Successivamente andremo a scrivere due software,il primo in C per
programmare il microcontrollore in modo da inviare e ricevere dati e in base a questi
svolgere determinate operazioni, il secondo in Visual Basic per donare un’interfaccia
grafica all’impianto e fornire quelle istruzioni che andranno a costituire l’intelligenza
artificiale della macchina. In ultimo vedremo come interfacciarsi con la serra e in
particolar modo con l’interfaccia grafica per settare i valori chiave del meccanismo di
controllo automatico o semplicemente avviare i vari impianti manualmente.
5
3. Componenti elettronici
I componenti elettronici di questo progetto non sono molto complessi e neanche
difficili da reperire.
Tuttavia lo scopo di una serra è quello di controllarne e modificarne il microclima
presente all’interno per trarne il massimo profitto dalla coltura scelta, ciò che al
momento è impossibile da fare in pieno campo.
Arduino Uno
Arduino UNO è una scheda elettronica di
piccole dimensioni con un microcontrollore
e circuiteria di contorno, utile per creare
rapidamente prototipi e per scopi hobbistici
e didattici.È un componente di vitale
importanza per questo progetto in quanto
è il cuore dell’impianto domotico, che
riceve e invia dati al pc tramite una
connessione USB.
Alimentatore ATX
Questo genere di alimentatore è quello
utilizzato nei Computer fissi di recente
produzione ed ha la funzione di alimentare
i vari componenti che costituiscono il pc
(Scheda madre, hard disk, schede RAM,
porte USB ecc.). In questo caso,
apportandogli alcune modifiche, lo utilizzeremo come trasformatore di corrente
per alimentare alcuni dei componenti che necessitano un voltaggio di 12V o
superiore.
4 Relay Module
Il relè è un dispositivo elettrico comandato
dalle variazioni di corrente per influenzare
le condizioni di un altro circuito. In
sostanza, il relè è un interruttore che non
viene azionato a mano, ma da un
elettromagnete.Questo modulo è dotato di
quattro relè che utilizzeremo come un
interruttore digitale per aprire e chiudere i
circuiti che collegano i componenti all’alimentatore ATX. In questo caso il modulo
preso è compatibile con la scheda Arduino UNO in quanto per eccitare la bobina
presente all’interno di ogni relè, che quindi aprirà e chiuderà i circuiti, sono
sufficienti i 5V erogati da Arduino.
6
DHT11
È un sensore di temperatura e umidità
digitale molto facile da usare, abbastanza
preciso nelle misurazioni, e dalle dimensioni
compatte. Questo componente ci permetterà
di conoscere in ogni momento la
temperatura e l’umidità presente nella serra.
Servomotori
Un Servomotore è un organo meccanico di
potenza, in grado di gestire unmovimento, il
quale è comandato da un segnale logico di
bassa obassissima potenza. Useremo
questi componenti per far aprire e chiudere i
portelloni laterali e quelli al colmo. Questi
saranno alimentati dai 5V erogati da Arduino
UNO, l’angolo di rotazione verrà indicato da
noi attraverso il controllore che invierà un
segnale al componente specificando l’angolo da noi scelto nel software.
Ventole da 120mm
Queste ventole ci serviranno per attuare una
areazione forzata all’interno della serra che
ci permetterà di abbassare la temperatura e
l’umidità all’interno. Queste ventole in genere
si possono trovare in alimentatori ATX di
ultima generazione e hanno il compito di
evitare un surriscaldamento dei componenti.
Richiedono un voltaggio di 12V per poter
funzionare al massimo delle performance
perciò le alimenteremo tramite l’alimentatore
ATX e collegheremo il circuito a uno dei relè
prima citati.
Impianto di Riscaldamento
Quest’impianto in una serra permette di
aumentare la temperatura in caso di un
raffreddamento eccessivo che potrebbe
compromettere la vitalità della pianta o la
produzione della stessa. In questo caso
7
useremo una comune stufetta alimentata a 12V che quindi per controllarne il
funzionamento collegheremo a un relè. L’erogazione di aria calda è dovuta a un
leggero cortocircuito che avviene al suo interno e che ne causa il riscaldamento
dei cavi elettrici, una ventola poi spingerà l’aria a passarci attraverso,
scaldandosi.
Illuminazione
In questo caso l’illuminazione ha solo una
funzione estetica, ma può avere anche
scopi produttivi in quanto può accorciare i
tempi di induzione a fiore di piante
ornamentali. In questo progetto utilizzeremo
delle lampadine che richiedono un voltaggio
di 24V erogati dall’ATX , verranno poi
collegate a un relè che ci permetterà di
chiudere o aprire il circuito.
Impianto d’irrigazione
L’irrigazione ha una grande importanza in
quanto l’acqua è uno dei pochi mezzi che
hanno a disposizione le piante per
assorbire sostanze nutrienti attraverso le
radici. In questo caso useremo una piccola
pompa ad immersione da 10l/minuto
immersa in un serbatoio (in questo caso
una bottiglia di plastica da 2l). Questo
componente richiede un voltaggio di 12V
perciò verrà alimentata dall’ATX e
controllata tramite un relè.
Camera
Ho inserito all’interno della serra una webcam
alimentata tramite porta USB che ci permetterà
di osservare dall’esterno l’andamento della
vegetazione.
8
4. Software
In questo caso in realtà non si parla di un solo software bensì di due, il primo è stato
scritto nel linguaggio C, un linguaggio di programmazione ad alto livello molto simile
al linguaggio macchina. Questo è statoinviato nella memoria di Arduino UNO e
presenta tutte quelle istruzioni mirate a inviare un determinato segnale in determinate
circostanze piuttosto che in altre (es. Arduino UNO invierà il segnale
“RiscaldamentoON” quando il riscaldamento verrà avviato) e tradurre in azioni
determinati segnali ricevuti da un altro software presente sul PC (es. Quando
ArduinoUNO riceverà il segnale “A”, si metterà in moto per eseguire tutte quelle
operazioni per arrivare arieggiamento).
Un discorso molto simile si può fare per quanto riguarda il software presente sul pc
scritto in Visual Basic, un linguaggio di programmazione di fascia bassa realizzato da
Microsoft. Tale software contiene tutte quelle istruzioni che compongono una sorta di
intelligenza artificiale in grado di prendere decisioni in base ad alcuni segnali ricevuti
da Arduino. Oltre a ciò è stata curata l’interfaccia grafica rendendola accattivante ma
allo stesso tempo semplice ed intuitiva. È possibile programmare fino a tre irrigazioni
al giorno per un determinato intervallo di tempo espresso in minuti. Attraverso questo
software inoltre è possibile collegarsi con diverse webcam collegate all’interno della
serra (in questo caso solo una).
Software di controllo inviato ad Arduino scritto in C
Ricevere e inviare valori di
temperatura e umidità: Arduino
comunicherà con il sensore DHT11 e
riceverà un segnale elettrico che
verrà convertito in un valore
numerico grazie alle librerie “dht11.h”
messe a disposizione dalla casa
produttrice del sensore. Una volta
ricevuto il segnale lo invierà al
software sul PC.
Attivare o disattivare
l’arieggiamento: Quando Arduino
riceverà il comando “A” invierà un
impulso elettrico ai servomotori
per portare il portellone al colmo
ad un apertura di 90° gradie quello
al lato di 120° gradi, inoltre darà
voltaggio al relè numero 4 facendo
eccitare la bobina che chiuderà il
circuito ATX-Ventolemettendole in
9
funzione, inoltre invierà al software PC il risultato “AriaON”. Quando invece riceverà il
comando “B” porterà i servomotori ad una apertura di 0° gradi e interromperà il
voltaggio al relè causando l’apertura del circuito prima citato, inviando il segnale
“AriaOFF”.
Attivare o disattivare il
riscaldamento:Quando
Arduino riceverà il comando
“C” chiuderà il circuito del
relè numero 1 che farà
eccitare la bobina al suo
interno chiudendo il circuito
ATX-Stufa azionando il riscaldamento. Oltre a ciò invierà il segnale
“RiscaldamentoON”. Nel caso invece del comando “D” il flusso di corrente al relè si
interromperà aprendo il circuito ATX-Stufa ed invierà il segnale “RiscaldamentoOFF”.
Attivare o disattivare
l’irrigazione: Quando
Arduino riceverà il comando
“E” darà corrente al relè
numero 2 chiudendo i circuito
ATX-Pompa azionando
l’irrigazione e inviando il
segnale “IrrigazioneON”. Questa verrà disattivata alla ricezione del comando “F”, il
circuito ATX-Pompa verrà aperto interrompendo l’irrigazione e inviando il segnale
“IrrigazioneOFF”.
Attivare o disattivare
illuminazione: Se Arduino
riceverà il comando “G” darà
corrente al relè numero 3
chiudendo il circuito ATX-luci
e inviando il segnale
“LuciON”. In caso di ricezione
del comando “H”
interromperà la corrente al relè prima citato che aprirà il circuito facendo interrompere
la corrente alle luci e inviando il segnale “LuciOFF”.
10
Software del server presente sul pc scritto in Visual Basic .NET
Il software da
installare sul pc
server presenta
un interfaccia
mirata ad essere
molto intuitiva
composta da vari
Button, Label e
Gif per renderla
allo stesso
tempo semplice
e accattivante.
Da questa infatti
è possibile
azionare manualmente tutti gli impianti con la semplice pressione di un button.
Da qui inoltre è possibile attivare il controllo automatico dell’intera serra, cercando di
mettere da parte le imperfezioni dell’uomo e affidando tutta la produzione alla
macchina. Per l’inserimento dei valori di temperatura e umidità ho inserito delle
textbox nelle quali inserire i valori scelti. Inoltre i segnali ricevuti da Arduino vengono
corretti e inseriti in delle Label sull’interfaccia grafica. Ho programmato inoltre una
ListBox nel pannello camera che all’avvio caricherà tutte le webcam connesse al pc e
permetterà di visualizzarle in maniera veloce econ estrema facilità.
11
5. Modalità d’uso
Controllo manuale: come già detto in precedenza l’interfaccia grafica è stata
costruita per essere semplice ed intuitiva, infatti già all’avvio del software saremo in
grado di avviare i vari impianti con dei semplici click.
1.Arieggiamento ON; 2. Arieggiamento OFF; 3. Riscaldamento ON; 4. Riscaldamento OFF;
5. Irrigazione ON; 6. Irrigazione OFF; 7. Illuminazione ON; 8. Illuminazione OFF. Inoltre
possiamo leggere in ogni momento e in tempo reale lo stato dell’impianto.
Controllo automatico: Per poter svolgere il suo lavoro è necessario immettere prima
dell’attivazione di tale modalità d’uso i valori di temperatura e umidità minimi, massimi e
ottimali in modo che il software abbia dei riferimenti su quando attuare determinate
operazioni. Ovviamente tali valori cambiano a seconda della coltura scelta.
1.Temperatura minima; 2. Temperatura ottimale; 3. Temperatura massima; 4. Temperatura
corrente; 5. Umidità minima; 6. Umidità ottimale; 7. Umidità massima; 8. Umidità corrente.
12
Oltre a tali valori è inoltre necessario impostare quante irrigazioni svolgere nell’arco
della giornata e per quanto tempo. Tenendo come riferimento la pompa utilizzata il
software ci darà subito una stima dei litri di acqua che andremo ad utilizzare.
1. Orario di accensione della pompa; 2. Tempo di funzionamento della pompa; 3. Totale in
litri di acqua erogata secondo le specifiche della pompa e il tempo di funzionamento; 4.
Abilita questa programmazione o meno.
Fatto ciò potremmo attivare la modalità
automatica dando un segno di spunta
sull’apposita CheckBox.
L’intelligenza artificiale creata seguirà questa logica:
Se la temperatura corrente è minore o uguale della temperatura minima
azionerà il riscaldamento;
Se la temperatura corrente è maggiore o uguale alla temperatura massima
azionerà l’arieggiamento;
A raggiungimento della temperatura ottimale il riscaldamento o
l’arieggiamento verranno interrotti;
Se l’umidità corrente è minore o uguale all’umidità minima azionerà
l’irrigazione;
Se l’umidità corrente è maggiore o uguale all’umidità massima azionerà
l’arieggiamento;
Al raggiungimento dell’umidità ottimale l’irrigazione o l’arieggiamento verranno
interrotti;
Se all’ora corrente è programmata un irrigazione verrà azionata l’irrigazione;
Se il tempo d’irrigazione è terminato l’irrigazione verrà interrotta.
13
Il diagramma di flusso sottostante illustra sinteticamente tutto il pensiero
dell’intelligenza artificiale alla ricezione di alcuni dati.
14
6. Conclusioni
Abbiamo scelto e descritto i vari componenti da utilizzare, abbiamo visto come programmare
il software da inviare ad Arduino e quello da installare sul pc ed abbiamo visto come
utilizzare l’interfaccia grafica del software. A questo punto non resta che realizzare una serra
dove inserire l’impianto ed il gioco è fatto. Nel mio caso ho progettato e costruito una serra
con capriata, realizzata in compensato e rivestitacon un telo in PVC semitrasparente. A
questa ho inserito all’interno tutti i componenti prima descritti ad esclusione del alimentatore
ATX, Arduino UNO e i 4 relay module poiché tali componenti non hanno la necessità di
lavorare all’interno della stessa.
Poiché la struttura è stata costruita sopra una base in compensato non ho potuto realizzare
uno strato di terra direttamente su
questo in quanto avrebbe causato un
alterazione dello stesso e inoltre ci
sarebbe stato un problema riguardante il
ristagno idrico favorendo l’inserzione di
malattie prevalentemente fungine. Per
cui ho piantato la coltura in un vaso in
plastica dotato di sottovaso al quale ho
inserito un tubo flessibile che, grazie ad
una quasi impercettibile pendenza,
convoglia l’acqua in eccesso in un
recipiente che potrebbe essere lo stesso
dove è immersa la pompa per
l’irrigazione creando un riciclo dell’acqua evitando gli sprechi.
Per quanto riguarda l’arieggiamento, nel
progetto erano previste ben 12 ventole
posizionate due per ogni interasse sui
lati lunghi della serra e 8 servomotori
posizionati due per i lati lunghi della
serra e sulle due pendenze del tetto. In
questo caso ho utilizzato solo due
ventole e due servomotori
semplicemente per una questione
economica.
Tutto sommato il lavoro ha dato i suoi
frutti è questo progetto è stato chiuso
cercando di ridurre al minimo le spese e
magari riciclando alcuni componenti, in questo caso le luci e il tubo d’irrigazione.
15
7. Ringraziamenti
I miei genitori per avermi permesso di studiare in questi anni e per aver sostenuto questa
mia passione verso l’informatica e l’elettronica in genere.
Martina Gabriele per avermi dato qualche spunto per quanto riguarda l’automatizzazione
della serra e per avermi procurato qualche metro di tubo gocciolante
Tarantino Jacopo per avermi aiutato nella realizzazione della struttura.
Prof. Mello Vincenzo per avermi fornito i valori ottimali di microclima per la pianta di
pomodoro.
NiktorTheNat dal quale, grazie alle sue guide su YouTube, ho imparato una buona parte di
tutto ciò che so sulla programmazione.
Staff del forum Arduino.cc sezione Italiana per aver chiarito ogni mio dubbio riguardo Arduino
e i suoi componenti