Sensore wireless per monitoraggio radiologico dell’ambiente · Quello scelto per questo progetto...
Transcript of Sensore wireless per monitoraggio radiologico dell’ambiente · Quello scelto per questo progetto...
I
Scuola Politecnica e delle Scienze di Base Corso di Laurea in Ingegneria Informatica Elaborato finale in Misure per l’Automazione e la Produzione Industriale
Sensore wireless per monitoraggio radiologico dell’ambiente Anno Accademico 2016/2017 Candidato: Antonietta Sarnataro matr. N46001480
III
Indice Indice ............................................................................................................................................ III Introduzione .................................................................................................................................... 4
Capitolo 1: Descrizione del sensore ................................................................................................. 5
1.1 Descrizione dell’architettura del sensore ................................................................................ 5
1.2 Descrizione dell’architettura hardware ................................................................................... 6
1.2.1 Scelte di comunicazione ................................................................................................. 6
1.2.2 Schema di connessione ................................................................................................... 7
1.3 Descrizione dell’architettura software .................................................................................... 8
Capitolo 2: Sensori e modulo ........................................................................................................ 10
2.1 Pocket Geiger ...................................................................................................................... 10
2.1.1 Principio di Funzionamento .......................................................................................... 11
2.1.2 Specifiche ..................................................................................................................... 12
2.2 Sensore di temperatura MLX90614 ..................................................................................... 13
2.2.1 Principio di Funzionamento .......................................................................................... 14
2.2.2 MLX90614BAA ........................................................................................................... 15
2.2.3 Interfaccia digitale I2C .................................................................................................. 16
2.2.4 PIN-OUT ...................................................................................................................... 16
2.2.5 Calcolo della temperatura ............................................................................................. 17
2.3 Modulo Wi-Fi ESP8266-01 ................................................................................................. 18
Capitolo 3: Test di funzionamento ................................................................................................. 20
Sviluppi futuri ............................................................................................................................... 26
Conclusioni ................................................................................................................................... 27
Appendice A ................................................................................................................................. 28
A.1 Comandi AT ....................................................................................................................... 28
A.2 Pseudo-Codice .................................................................................................................... 29
Bibliografia ................................................................................................................................... 34
4
Introduzione
Negli ultimi anni, sempre maggiore è stato l’interesse per il controllo della
contaminazione dell’ambiente ad opera di sostanze radioattive. Nasce dunque l’esigenza di
un’analisi di ciò che ci circonda ovvero del ‘Monitoraggio ambientale’, - rilevazione
periodica e sistematica di parametri chimici, fisici e biologici dell’ambiente - mediante
appositi sistemi, quali possono essere sensori, in grado di rilevare le diverse caratteristiche
ambientali. In questo elaborato di tesi si fa riferimento ad un monitoraggio di tipo
radiologico per verificare la presenza di livelli anomali di radioattività nell’ambiente che
ci circonda. Grazie alle nuove tecnologie messe a disposizione nei rilevatori moderni, è
possibile effettuare questo tipo di monitoraggio in maniera più efficiente e soprattutto del
tutto automatizzata grazie agli attuali microcontrollori sul mercato.
5
Capitolo 1: Descrizione del sensore
Il sistema complessivo che è stato realizzato, fornisce uno strumento per il monitoraggio
radiologico continuo dell’ambiente a cui si è affiancata la misura della temperatura a
distanza per rilevare anomalie termiche puntuali. Tali informazioni vengono rese
disponibili tramite un collegamento Wi-Fi.
1.1 Descrizione dell’architettura del sensore
Il sensore si compone di più dispositivi:
1. Un microcontrollore che è il vero cuore del progetto. Un nodo che permette
l’elaborazione dei dati ottenuti dai diversi rilevatori usati nel progetto,
2. Contatore Geiger, strumento che misura radiazioni di tipo ionizzante - scopo del
progetto -,
3. Sensore per la misurazione della temperatura, per misurare possibili effetti termici,
4. Modulo per l’invio dei dati elaborati in Wi-Fi.
6
1.2 Descrizione dell’architettura hardware
Le scelte hardware per questo progetto di tesi comprendono:
1. Il microcontrollore STM32 in particolare l’F4 Discovery della STMicroeletronics, il
primo a essere basato sul core ARM Cortex-M3 che garantisce prestazioni elevate.
Permette di interagire con diversi dispositivi esterni per mezzo di un programma che
risiede nella sua memoria interna e ad un insieme di pin che possono essere
configurati. La sua architettura prevede un insieme di moduli che comprendono –
gestione dell’Interrupt, contatori e Timer, moduli di comunicazione Usart, I2C.
2. Pocket Geiger, sensore al silicio che emula il funzionamento di un tipico Contatore
Geiger. Scelto per il basso costo,
3. MLX90614, sensore per la misurazione della temperatura a distanza. È stato scelto in
quanto permette di rilevare la temperatura senza contatto diretto con l’oggetto
interessato.
4. ESP8266-01, modulo Wi-Fi, scelto perché è facile da integrare con un sistema in
quanto è possibile comunicare con esso tramite comandi AT.
1.2.1 Scelte di comunicazione
Sensori e modulo interagiscono con il microcontrollore attraverso diversi protocolli di
comunicazione.
Per la comunicazione con il Pocket Geiger sono stati utilizzati due ingressi digitali del
microcontrollore per raccogliere le informazioni necessarie.
Per la comunicazione con il sensore di temperatura si è invece usata l’uscita digitale I2C
che permette la comunicazione tra più dispositivi tramite linee dedicate, dette bus. È un
protocollo che regola la comunicazione tra due dispositivi di cui uno ha il compito di
inviare bit che vengono ricevuti in modo sequenziale dall’altro dispositivo. Si compone
due linee seriali, SDA per i dati e SCL per il clock.
7
Infine per la comunicazione con il modulo Wi-Fi si è utilizzato il protocollo Rs-232,
implementato tramite bus Usart, Universal synchronous asynchronous receiver
transmitter, che permette lo scambio di dati con dispositivi esterni.
1.2.2 Schema di connessione
I collegamenti fisici tra i vari dispositivi sono stati fatti
come descritto in tabella, in cui si mette in evidenza in
che modo ciascuno dei pin dei sensori, viene collegato ai
pin del microcontrollore, tenendo presente la
configurazione predefinita dei pin stessi.
In particolare:
1. I pin PA2 e PA3 linee di trasmissione e ricezione
della USART,
2. I pin PB7 e PB8 per il protocollo I2C,
3. I pin PA1 e PA5 fungono da Interrupt.
Lo schema risultante è il seguente:
8
1.3 Descrizione dell’architettura software
Per la parte software del progetto si è scelto come ambiente di lavoro l’IDE “IAR
EMBEDDED WORKBENCH”.
Di seguito uno schema a blocchi del principio di funzionamento del software.
9
Nel blocco SETUP vengono effettuati i settaggi per i diversi protocolli di comunicazione
utilizzati, in modo da definire il corretto baud-rate.
Successivamente vi è una selezione che permette di identificare le due modalità di lavoro in
cui andremo a configurare il sensore. La prima modalità è la modalità Station in cui il
sensore è visto come un semplice dispositivo connesso alla rete. La seconda modalità
prevede che sia lo stesso sensore a comportarsi da Access Point per gli altri dispositivi
Entrambe le modalità vengono indicate da un led access sul microcontrollore:
1. Verde per la modalità Access Point,
2. Arancione per la modalità Station.
La modalità di lavoro può inoltre essere cambiata a run-time premendo il pulsante Utente
del microcontrollore.
In entrambe le modalità, il sensore restituisce le misure effettuate ogni qualvolta vi è una
richiesta da Browser Web. L’azione intrapresa dal sensore prevede l’Invio di una
pagina HTML contenente informazioni diverse- misurate in precedenza nel blocco
Misura delle grandezze - in base al tipo di richiesta effettuata.
In particolare, nella modalità Station, la pagina HTML conterrà il valore rilevato dal
contatore Geiger e una misura della temperatura dell’oggetto puntato.
Nella modalità Access Point invece verrà visualizzata inizialmente una pagina contente un
messaggio che da informazione all’utente su come interagire con il sensore.
10
Capitolo 2: Sensori e modulo
In questo capitolo saranno descritte le principali caratteristiche dei sensori e del modulo
per la comunicazione Wi-Fi, utilizzati in questo progetto.
2.1 Pocket Geiger
Il Pocket Geiger è un contatore geiger prodotto da un progetto denominato “Radiation
Watch”. Pocket Geiger è in grado di rilevare solo raggi X o Gamma. Il lato sensibile del
sensore è riconoscibile perché ha un cerchio anulare come in Figura 2.
Figura 1:Pocket Geiger
11
2.1.1 Principio di Funzionamento
Il Pocket Geiger è un rivelatore a semiconduttore, il cui principio di funzionamento si basa
sulla creazione di coppie elettrone/lacuna che vengono a formarsi nella zona di
svuotamento prossima alla giunzione - utilizzata quindi come rilevatore - ogni qualvolta
una radiazione incide nel cristallo. Questo fenomeno produce una corrente, la quale viene
trasdotta in impulsi di tensione dall’architettura interna del dispositivo stesso. Il sensore
mette a disposizione un’uscita che produce un treno di impulsi proporzionale all’energia
emessa dalla radiazione. Siccome il sensore è sensibile alle vibrazioni meccaniche, è stato
messo a disposizione un ulteriore uscita che, se rilevata, permette di scartare i conteggi
fatti dal contatore poiché risulteranno falsati.
12
2.1.2 Specifiche
Il Pocket Geiger è fornito di cinque pin organizzati come in Figura 3.
PIN-OUT
1. GND: massa
2. +V: (3 V- 9V),
3. SIG: produce un treno di impulsi proporzionale alla
quantità di energia di una radiazione
4. NS: emette un treno di impulsi proporzionale alla
vibrazione meccanica che è stata rilevata. Questo è
usato per prevenire misure di radiazione falsificati.
5. Un connettore opzionale da 3,5 mm.
DATA-SHEET
1. Alimentazione: 3V a 9V
2. Potenza assorbita: 30Mw
3. Tempo morto: 2 minuti.
RANGE DI MISURA
1. 0.05uSv/h~10mSv/h, questo dato va ad indicare il range di valori, espressi in
Sievert, che il dispositivo è in grado di misurare, nel caso si utilizzi una sorgente Cs-
137.
2. 0.01cpm~300Kcpm, sta ad indicare il range di valori misurabile in termini di
numero di impulsi per minuto.
13
2.2 Sensore di temperatura MLX90614
Figura 2:MLX90614
L'MLX90614 è un termometro a infrarossi prodotto da “Melexis” per effettuare misure di
temperatura non a contatto. Esso è in grado di fornire sia la temperatura ambiente, sia la
temperatura dell’oggetto a cui punta. Il range di valori di temperatura è: -40 a 125 ° C per
la temperatura ambiente, -70 a 382.2 ° C per la temperatura dell'oggetto. Ci sono due modi
per interfacciarsi con il sensore:
1. un’uscita PWM, con una risoluzione di a 0,14 ° C;
2. uscita I2C, con una risoluzione di a 0,02 ° C.
14
2.2.1 Principio di Funzionamento
Figura 3:MLX90614 macchina di stato interna
Il funzionamento dell’MLX90614 è controllato da una macchina a stati interna, la quale
controlla l’elaborazione delle misure.
Più in dettaglio, la macchina a stati è la combinazione di due dispositivi: il vero è proprio
rivelatore a infrarossi 81101 e un sistema di condizionamento 90302, come mostrato in
Figura 5.
Il sensore 81101 rileva quanta energia infrarossa viene emessa dai materiali nel suo campo
visivo, e produce un segnale elettrico ad essa proporzionale.
Successivamente la tensione prodotta dal sensore 81101 viene prelevato dal blocco di
condizionamento e viene poi condizionata prima di essere trasmessa ad un
microcontrollore
L’ MLX90614 produce due misure di temperatura: una dell’oggetto e una dell’ambiente.
La temperatura dell’oggetto è la misura senza contatto che ci si aspetta dal sensore, mentre
la temperatura ambiente misura la temperatura sulla matrice del sensore. Entrambe le
temperature calcolate hanno una risoluzione dichiarata di 0,02 ° C. I dati per Ta
(temperatura ambiente) e To (temperatura oggetto) possono essere lette attraverso celle
della RAM dedicate a questo scopo tramite l’uscita digitale I2C.
15
2.2.2 MLX90614BAA
Il sensore è disponibile in diverse opzioni che differiscono a seconda di alcune
caratteristiche presentate in Figura.
Quello scelto per questo progetto è l’MLX90614BAA, che è dimensionato per una
tensione di 3V.
La variante determina anche il campo visivo, che sulla MLX90614BAA è di 72 °.
Il campo di vista del MLX90614 è a forma di cono - la sua area di rilevamento è molto
stretta se si trova molto vicino all'oggetto, ma diventa sempre più ampia man mano che ci
si sposta più lontano.
16
2.2.3 Interfaccia digitale I2C
Il sensore viene letto e configurato attraverso un'interfaccia funzionalmente equivalente a
I2C. Dotato di due linee - SDA e SCL -che portano, rispettivamente, i dati e segnali di
clock.
Il clock è controllato da un dispositivo Master mentre il segnale dati è bidirezionale.
Nel sistema può esserci un solo dispositivo master, mentre MLX90614 può essere
utilizzato solo come un dispositivo slave.
In generale, il Master avvia l'inizio della comunicazione selezionando un Slave attraverso
un indirizzo specifico che nel caso in questione è di 0x5A.
I dati ricevuto dal sensore sono suddivisi in parte alta, parte bassa e bit di controllo degli
errori trasmessi, tutti a 8 bit. Il calcolo del bit di controllo include tutti i bit eccetto il bit
Start, Stop, Ack e Nack. I dati che si trovano in RAM sono disposti in celle con indirizzi
diversi. In particolare, la temperatura ambiente si trova all’indirizzo 006h mentre la
temperatura dell’oggetto all’indirizzo 007h.
Di seguito uno scenario di una lettura del valore di temperatura:
Tenendo presente il protocollo del bus.
17
2.2.4 PIN-OUT
Il sensore è composto di quattro pin.
1. VSS: massa,
2. SCL / Vz ingresso per il clock nella comunicazione I2C,
3. PWM / input SDA / uscita digitale: ingresso segnale dati nella comunicazione I2C
4. VDD: tensione di alimentazione esterna.
2.2.5 Calcolo della temperatura
La temperatura ambiente calcolata è resa disponibile in memoria RAM all’indirizzo
esadecimale 006 con una risoluzione di 0,02 ˚C. La formattazione del dato fa
corrispondere al valore esadecimale 0000 un valore di temperatura pari -40 ˚C, mentre al
valore esadecimale 4074 corrisponde 125 ˚C.
La formula per ottenere la giusta misura di temperatura è la seguente:
I2C(˚K) = Tareg x 0,02.
Analogo discorso vale per la temperatura dell’oggetto letta dalla cella all’indirizzo
esadecimale 007 della RAM.
18
2.3 Modulo Wi-Fi ESP8266-01
Il modulo Wi-Fi ESP8266 prodotto da ”Espressif Systems” è dispositivo che consente a
qualsiasi microcontrollore di accedere alla rete Wi-Fi. L'accesso a Internet può essere
aggiunto a qualsiasi progetto con semplice connettività
(interfaccia SPI / SDIO o I2C / UART).
ESP8266 è stato progettato per applicazioni IoT
(Internet of Things) con l'obiettivo di raggiungere il
consumo di energia più basso.
Ogni modulo ESP8266 viene pre-programmato con un
firmware, che ne garantisce il controllo tramite
comandi AT.
Per maggiori informazioni sui comandi consultare l’APPENDICE A.
19
In figura vengono descritte
un insieme di caratteristiche
del modulo.
Di seguito è indicato il Pin-Out
del modulo e sono dettagliati
solo i pin che intervengono nella
comunicazione.
20
Capitolo 3: Test di funzionamento
In prima analisi si è verificato la modalità di funzionamento Access point, la quale viene
configurata attraverso scambi di messaggi tra microcontrollore e modulo, tramite
interfaccia digitale Usart. Nell’immagine che segue vi è una serie di comandi a cui il
modulo Wi-Fi ha risposto.
21
L’indirizzo IP del modulo viene cablato a priori
ed è dunque un indirizzo statico.
A questo punto si accerta che la rete appena
creata con il SSID di ‘Monitoraggio’ sia
effettivamente disponibile. La rete può prevedere
anche una fase di autenticazione. Una volta
collegata alla rete è possibile accedere al sensore
tramite indirizzo IP e la porta. La risposta è una semplice pagina HTML creata ad hoc, in
cui compare un messaggio che indica le modalità con cui è possibile interagire con il
sistema.
22
Come primo test, si è provato ad avvicinare il sensore di temperatura ad una sorgente
calda, nello specifico a dell’acqua in ebollizione.
Un ulteriore test è stato effettuato vicino ad una sorgente fredda.
23
Come ulteriore prova si è verificato il funzionamento in modalità Station. In Figura vi è la
schermata dei messaggi durante la fase di settaggio e connessione.
24
Allo stesso modo di prima, si è provato ad accedere alla pagina web. In questo caso si ha
come risposta ancora una volta una pagina HTML in cui è presente sia la temperatura
dell’oggetto osservato, sia l’ultimo valore di cpm.
25
In ultima analisi, è stata effettuata una prova del solo Contatore Geiger.
La prova è stata effettuata in un ambiente urbano per un tempo di 7 ore.
In base a questi risultati si sono ottenuti i seguenti parametri:
1. Media: 5
2. Varianza: 2,346154
3. Incertezza di tipo A: 1,531716
26
Sviluppi futuri
Come sviluppo futuro è possibile pensare ad una progettazione del sensore di tipo mobile
quindi alimentato per esempio da una batteria.
Un’ulteriore sviluppo per questo progetto potrebbe essere quello di far interagire più nodi
tra di loro. In particolare nel caso considerassimo 2 nodi distinti, un tipico scenario
potrebbe essere il seguente:
Un client connesso ad una
stessa rete locale dei nodi
settati in modalità Station.
Così facendo il Cliente
riesce a comunicare con
entrambi i sensori.
27
Conclusioni
In conclusione, si è visto come poter creare un sistema di Monitoraggio a basso costo,
estremamente semplice, di ridotte dimensione e che rientra nel trend dell’IoT. Si è trovati
dunque di fronte ad uno scenario in cui ci sono diversi oggetti in rete ed è possibile
interagire con ciascuno di loro.
28
Appendice A
A.1 Comandi AT
COMANDO RISPOSTA FUNZIONE AT+RST OK [parametri di
configurazione del modulo] Resetta il modulo
AT+CWMODE = mode OK Mode: 1=Station Mode
2=AP Mode AT+CIPAP = ”ip” OK Setto l’ip della modalità AP
AT+CWSAP=ssid,pwd,ch,ecn OK Setto i parametri della rete creata
AT+CWLIF [ip, altro] OK
Lista dei client connessi
AT+CIPMUX= val OK Val: 1=singola connessione
2=connessione multipla AT+CIPSERVER= val, port OK Configuro come server.
Val: 0=cancella server
1=crea server Port=porta in ascolto
AT+CWQAP OK Disconnetto il modulo da un’eventuale rete a cui è
collegato AT+CWLAP AT+CWLAP: [parametri reti
trovate] Ottengo una lista delle reti a
cui mi posso collegare AT+CWJAP= “SSID”,
“password” WI-FI CONNECTED Mi collego a una rete
AT+CIFSR AT+CIFSR: ip OK
Mi restituisce l’indirizzo ip
della connessione AT+CIPSTO=val OK Setto il time-out del server
29
A.2 Pseudo-Codice
ABILITAZIONI
Abilitare bus per GPIOA, GPIOB, GPIOD, I2C, USART2, TIM5, TIM2.
SETUP
1. I2C
Configurare PB8 e PB7 in modalità alternate function.
Configurare PB8 e PB7 come Open Draine.
Configurare la alternate function I2C per PB8 e PB7.
Configurare correttamente il registro di timing per I2C1 affinché funzioni con baud-
rate di 100 Kb/s.
Abilitare la periferica I2C1
2. USART
Configurare la alternate function USART per PA2 e PA3.
Configurare il registro BRR per ottenere un baud rate di 115200.
Abilitare trasmissione e ricezione tramite il registro CR1.
Abilitare la periferica USART
3. POCKET GEIGER
Abilitare interrupt sul fronte di salita sul pin PA1 e PA5.
Configurare PA1 e PA5 come pull-up
Abilitare interrupt di TIM2
Settare registro ARR di TIM2 con un conteggio di 2 minuti.
Routine di Interrupt per pA1
Conteggio+1;
Routine di Interrupt per PA5
Noise +1;
Routine di Interrupt per TIM2
30
ValoreLetto=Conteggio/2;
Reset variabili.
4. PULSANTE BLU
Abilitare interrupt sulla linea PA0
Routine di Interrupt per PA0
Se modalità= Access Point
Modalità=Client
SettaggioStation=1
Accendere Led arancione
Altrimenti
Modalità=Access Point
SettaggioAp=1
Accendere Led verde
CONFIGURAZIONE ACCESS POINT
Inviar Comandi AT sulla linea di trasmissione dell’USART per configurare ESP8266
come AP.
Accendere led verde per segnalare la modalità di lavoro attuale.
LOOP
Se Modalità=Access Point
Se SettaggioAp=1
SettaggioAp=0
Inviare Comandi per settaggio come Access Point
Leggere dalla linea di ricezione dell’USART.
Se il dato ha il formato atteso
Se dopo la parola GET trovo ‘cont’
Inviare sulla USART pagina web contenente il valore di ValoreLetto;
Se dopo la parola GET trovo ‘temp’
31
Temp=Temperatura();
Inviare sulla USART pagina web contenente il valore di Temp;
Altrimenti
Inviare sulla USART pagina web contenente Messaggio di benvenuto;
Se Modalità=Client
Se SettaggioStation=1
SettaggioStation=0
Inviare Comandi per settaggio come Client
Leggere dalla linea di ricezione dell’USART.
Se il dato ha il formato atteso
Temp= Temperatura();
Inviare sulla USART pagina web contenente il valore di ValoreLetto e Temp;
32
//Funzione per il rilevamento della temperatura
Temperatura()
Attendere che la linea di trasmissione sia libera
Generare la Start Condition
Aspettare che la Start Condition sia stata generata
Pulire registro SR1
Invio Slave Address in scrittura
Aspetto che l'indirizzo sia matchato
Pulisco Registro SR1
Pulisco registro SR2
Aspettare che il buffer di trasmissione sia vuoto
Inviare registro da cui si vuole leggere il dato
Aspettare che il buffer di trasmissione sia vuoto e che il dato sia stato inviato
Generare la Start Condition
Aspettare che la Start Condition sia stata generata
Pulire Registro SR1
Settare il bit Ack
Inviare Slave Address in lettura
Aspettare che l'indirizzo sia matchato
Pulisco Registro SR1
Pulisco registro SR2
Per ogni byte da ricevere
33
Aspettare che il buffer di ricezione sia pieno
Leggere il dato
Se siamo alla penultima ricezione...
Disabilitare l’Ack
Dare la Stop Condition
Conversione da codice a temperatura
Temp=((((double))(((dataHigh & 0x007F) << 8) + dataLow)) *0,02)-001)-273,15.
Ritornare Temp
34
Bibliografia
[1] Thejapanetimes, http://www.japantimes.co.jp/life/2012/12/05/life/pocket-geiger-
counter-is-a-breath-of-fresh-air/#.WPtnnIjyjIU
[2] Radiation Watch, http://www.radiation-watch.co.uk/?new=1
[3] Rivelatori a semiconduttori,
http://users.unimi.it/veronese/doc/beni%20culturali/lez13.pdf
[4] PocketGeiger Type5 Interface Specification, http://www.radiation-
watch.org/2011/05/professional.html#emb
[5] MLX90614 family Single and Dual Zone Infra Red Thermometer in TO-39
[6] ESP8266-AT Command Reference.