Progetto di Domotica - · PDF fileProgetto di Domotica Progetto di domotica 2/7 programmabile...

7
Progetto di Domotica Progetto di domotica 1/7 Progetto di Domotica Titolo dell’esercitazione: Progetto di Domotica Descrizione sommaria dell’esperienza: Realizzazione di un circuito che permette il controllo di vari sensori all’interno di un edificio. Il valore di ogni singolo sensore sarà consultabile localmente, tramite display LCD, o da remoto, tramite WEB Server. a) Elenco dei componenti e della strumentazione Per la realizzazione del circuito sono stati impiegati i seguenti componenti: Definizioni: Arduino (Nano v 3.0): è un framework (struttura di supporto su cui il software può essere organizzato e progettato) open source che permette di realizzare prototipi e di apprendere i principi fondamentali dell’elettronica e della programmazione. La scheda Nr. Descrizione Tipo 1 Arduino Nano v 3.0 Strumentazione 8 LED (gialli) Componente 2 Switch (DIP switch con 4 interruttori) Componente 1 Sensore di temperature (LM35) Componente 1 Sensore di movimento Componente 1 Sensore di Gas Componente 1 Sensore di luce ambientale Componente 1 Sensore di suono Componente

Transcript of Progetto di Domotica - · PDF fileProgetto di Domotica Progetto di domotica 2/7 programmabile...

Page 1: Progetto di Domotica -  · PDF fileProgetto di Domotica Progetto di domotica 2/7 programmabile Arduino è basata su un circuito stampato che integra un microcontrollore con PIN

Progetto di Domotica

Progetto di domotica 1/7

Progetto di Domotica Titolo dell’esercitazione: Progetto di Domotica Descrizione sommaria dell’esperienza:

Realizzazione di un circuito che permette il controllo di vari sensori all’interno di un edificio. Il valore di ogni singolo sensore sarà consultabile localmente, tramite display LCD, o da remoto, tramite WEB Server.

a) Elenco dei componenti e della strumentazione Per la realizzazione del circuito sono stati impiegati i seguenti componenti:

Definizioni: • Arduino (Nano v 3.0): è un framework (struttura di supporto su cui il software può

essere organizzato e progettato) open source che permette di realizzare prototipi e di apprendere i principi fondamentali dell’elettronica e della programmazione. La scheda

Nr. Descrizione Tipo 1 Arduino Nano v 3.0 Strumentazione 8 LED (gialli) Componente 2 Switch (DIP switch con 4 interruttori) Componente 1 Sensore di temperature (LM35) Componente 1 Sensore di movimento Componente 1 Sensore di Gas Componente 1 Sensore di luce ambientale Componente 1 Sensore di suono Componente

Page 2: Progetto di Domotica -  · PDF fileProgetto di Domotica Progetto di domotica 2/7 programmabile Arduino è basata su un circuito stampato che integra un microcontrollore con PIN

Progetto di Domotica

Progetto di domotica 2/7

programmabile Arduino è basata su un circuito stampato che integra un microcontrollore con PIN connessi alle porte I/O, un regolatore di tensione e un’interfaccia USB tramite la quale è possibile caricare i programmi scritti a computer.

• LED: (o diodo a emissione luminosa) è un dispositivo che sfrutta le proprietà ottiche di alcuni materiali semiconduttori per produrre fotoni attraverso il fenomeno dell’emissione spontanea.

• Switch (DIP switch): è un componente impiegato nei circuiti elettronici. È formato da un gruppo di interruttori incapsulati in un singolo contenitore, dotato di terminali disposti su due file a distanza normalizzata. Questo componente integra quindi più interruttori (ON/OFF) in un solo involucro. Permette quindi di controllare lo stato di più componenti contemporaneamente (es due lampadine). Prima di introdurre i sensori e il loro utilizzo occorre precisare il termine sensore:

• Sensore: è un trasduttore uvvero un dispositivo che permette di convertire una grandezza fisica in una grandezza elettrica.

I sensori utilizzati nel progetto saranno quindi i seguenti:

o Sensore di temperatura (LM35): fornisce una tensione proporzionale alla temperatura rilevata con una sensibilità di 10 mV per grado centigrado (sulla scala Celsius).

o Sensore di movimento: scatta una fotografia della stanza ogni 1-2

secondi. Se, confrontando le immagini, viene captata qualche differenza verrà mandato in uscita il segnale basso.

o Sensore di Gas: è in grado di rilevare fumo, metano, anidride carbonica e altri gas.

o Sensore di suono: permette, tramite l’utilizzo di un microfono e di un

amplificatore, di convertire il segnale sonoro in segnale analogico.

Page 3: Progetto di Domotica -  · PDF fileProgetto di Domotica Progetto di domotica 2/7 programmabile Arduino è basata su un circuito stampato che integra un microcontrollore con PIN

Progetto di Domotica

Progetto di domotica 3/7

o Sensore di luce ambientale: permette di rilevare l’intensità della luce tramite una foto-resistenza (che varierà il suo valore in ohm proporzionalmente alla luce che la colpisce).

b) Analisi di alto livello e schema del circuito

Il circuito verrà realizzato in due parti:

o Parte per la visualizzazione dei valori da locale o Parte per la visualizzazione dei valori da remoto (sviluppi futuri)

Analisi delle due parti del circuito: o La parte per la visualizzazione dei dati da locale consiste in un circuito formato da un

display LCD che riporterà lo stato e i valori restituiti dai sensori:

� Luce (ON-OFF): indica se le luci sono accese o spente all’interno dell’edificio � Alert: indica se l'allarme per le intrusioni è stato attivato � Alarm: indica se l'allarme per fughe di gas è stato attivato � Gas (ON-OFF): indica lo stato di eventuali fughe di gas. Se sono presenti fughe di

gas e se è attivo l’allarme verrà emesso un segnale acustico � Movimento (ON-OFF): indica se sono stati rilevati movimenti all’interno

dell’edificio. Se è attivo lo switch “alert” allora, quando verrà rilevato un movimento, suonerà l’allarme.

� Auto (ON-OFF): indica se le luci crepuscolari sono attive. Questa funzione permette, quindi, di accendere le luci in modo automatico.

� Knock (numero): indica quante volte si bussa alla porta � Temperatura (numero): indica la temperatura presente nell’edificio.

o La parte per la visualizzazione dei dati da remoto consiste nella visualizzazione dei valori letti dai sensori tramite il nostro browser. Questa funzione è possibile

Page 4: Progetto di Domotica -  · PDF fileProgetto di Domotica Progetto di domotica 2/7 programmabile Arduino è basata su un circuito stampato che integra un microcontrollore con PIN

Progetto di Domotica

Progetto di domotica 4/7

utilizzando uno shield per Arduino che aggiunge un connettore RJ45 (presa Ethernet) al nostro microprocessore.

Su una pagina internet verranno visualizzati i valori inviati da Arduino: � Temperatura: visualizza la temperatura presente nell’edificio � Luce: visualizza se le luci all’interno dell’edificio sono accese o spente e se sono in modalità automatica o no � Movimento: visualizza se sono presenti spostamenti all’interno della casa e se l’allarme è attivo � Gas: visualizza il valore di gas presente nell’edificio e se è attivo l’allarme. � Suono: visualizza il numero di bussate alla porta. � Stato degli switch: visualizza lo stato degli allarmi e luce

Page 5: Progetto di Domotica -  · PDF fileProgetto di Domotica Progetto di domotica 2/7 programmabile Arduino è basata su un circuito stampato che integra un microcontrollore con PIN

Progetto di Domotica

Progetto di domotica 5/7

c) Procedimento

Circuito locale: o Utilizzando la guida presente sul sito di Arduino

(http://arduino.cc/en/Tutorial/LiquidCrystal) è stato possibile realizzare primi esempi di funzionamento del display e, successivamente, la visualizzazione del seguente “menu” definitivo riportante il valore dei sensori:

Realizzazione del programma per la consultazione dei dati da locale: Il programma per la visualizzazione dei dati su LCD è stato realizzato basandosi su alcune delle semplici funzioni fornite dall’ambiente Arduino: o digitalRead(pin): permette la lettura di un dato digitale su un determinato pin o digitalWrite(pin, stato): permette la scrittura di un dato digitale su un determinato pin. È inoltre necessario specificare lo stato del pin considerato che, essendo digitale, potrà assumere uno di due possibili valori: HIGH o LOW o analogRead(pin): permette la lettura di un dato analogico su un determinato pin o lcd.begin(colonne, righe): permette di inizializzare le dimensioni del display o lcd.setCursor(colonna, riga): permette di posizionarsi in una determinata cella del display LCD specificando la colonna e la riga o lcd.print(): permette di stampare una stringa o un valore Per poter ottenere quindi la visualizzazione dei valori sul display è bastato collegarlo (come mostrato nell'immagine sottostante)

e combinare le istruzioni in modo da visualizzare:

Page 6: Progetto di Domotica -  · PDF fileProgetto di Domotica Progetto di domotica 2/7 programmabile Arduino è basata su un circuito stampato che integra un microcontrollore con PIN

Progetto di Domotica

Progetto di domotica 6/7

• un menu fisso: in modo da non dover riscrivere ogni volta le medesime stringhe. Il menu è composto dalle scritte come: “Luci:”,”Gas:”,”Alert:” .. • il valore restituito da ogni sensore: i sensori saranno collegati ognuno a un piedino analogico differente. Da programma basterà soltanto leggere tramite analogRead(pin) il valore presente sul pin e stamparlo tramite lcd.print(valore) nella corretta posizione.

Esempio: si vuole mostrare il valore restituito dal sensore di temperatura. � Verrà prima letto il valore mediante l’istruzione analogRead(sensore_temperatura); � Successivamente ci si posiziona sul display nella cella dove mostrare il valore letto con

l'istruzione lcd.setCursor(17,3) � Stampare il valore mediante l’istruzione lcd.print(valore_temperatura).

Fasi per la realizzazione del programma:

� Includere la libreria <LiquidCrystal.h> che permette il corretto funzionamento del display a cristalli liquidi

� Per poter funzionare correttamente il display necessita di quattro piedini per il trasporto dei dati (D2, D3, D4, D5) e due per le operazioni di lettura e scrittura (D11, D12). Saranno tutti inizializzati creando la variabile di tipo LiquidCrystal: LiquidCrystal lcd(12, 11, 5, 4, 3, 2)

� Dichiarare le variabili per la memorizzazione del valore dei sensori. La dichiarazione è analoga per ogni sensore, cambierà solo il nome della variabile e il piedino assegnato:

Esempio: int sensore_luce = A0; � Impostare le dimensioni del display tramite lcd.begin(20, 4); � Leggere i valori dai sensori e salvarli nelle corrispondenti variabili. Le variabili

verranno dichiarate nella procedura loop del programma e serviranno per operare sui dati forniti. esempio: int luce = analogRead(sensore_luce);

� Il valore restituito verrà poi “analizzato” in una serie di condizioni (istruzioni if) per

poter, per esempio, stabilire se il sensore è acceso o spento. Anche questo procedimento risulta analogo per ogni sensore. Infatti ogni sensore è collegato a un piedino analogico, quindi può restituire un intervallo di valori. È quindi necessario scegliere, in base all'utilizzo e alla sensibilità desiderata, il valore soglia per discriminare i valori letti. Dopo i controlli sul valore potremo quindi stampare la stringa più adatta ottenendo il seguente risultato:

Page 7: Progetto di Domotica -  · PDF fileProgetto di Domotica Progetto di domotica 2/7 programmabile Arduino è basata su un circuito stampato che integra un microcontrollore con PIN

Progetto di Domotica

Progetto di domotica 7/7

Realizzazione del programma per la consultazione dei dati da remoto:

Il programma per la visualizzazione dei dati tramite browser è stato realizzato basandosi principalmente su alcune semplici funzioni fornite dall’ambiente Arduino. Tali funzioni consentono di realizzare un vero e proprio web server. Per evitare eccessivi carichi si è deciso di non far produrre l’intera pagina web all’arduino ma si è preferito generare un array di valori in Javascript che un web server di frontend, mediante una pagina dinamica scritta in php rielabora e presenta in maniera più leggibile i valori e gli stati degli switch.

Con lo shield ethernet viene fornita a corredo una libreria che consente la realizzazione

delle funzioni di base disponibili nel protocollo di rete TCP/IP. Vediamone alcune di

esempio:

o EthernetServer server(80): permette di dichiarare la porta che si intende usare

per il web server o Ethernet.begin(mac, ip): permette, dopo aver dichiarato l’ip desiderato e il mac

di assegnare all’arduino l’ip e il mac address passati come parametri. server.begin(): permette di avviare il web server su arduino.

o EthernetClient client: dichiarazione di una variabile per gestire un client ethernet o client.println(dati): permette di scrivere sullo stream del server web i dati

La pagina sul portatile è stata realizzata con php utilizzando un server Apache. Mediante la seguente istruzione la pagina php legge il vettore javascript prodotto dal web server installato sull’Arduino.

$ValoriArduino = file_get_contents('http://192.168. 1.177/index.htm');

L’indirizzo 192.168.1.177 è l’ip associato all’Arduino.

d) Verifica sperimentale del funzionamento e osservazioni personali Il circuito funziona correttamente nella sua implementazione locale con display LCD. Per

la parte WEB è stato realizzato un prototipo completo composto da un web server su

arduino e una pagina web di presentazione dei dati su Apache (nel portatile).