Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Seminario
SENSE-RISC – Sviluppo di abiti intelligENTi Sensorizzati per prEvenzione e mitigazione di Rischi
per la SiCurezza dei lavoratori
Il centro Piaggio si è occupato della realizzazione pratica del sistema che si compone di una
maglietta sensorizzata con una serie di elettroniche esterne che si interfacciano, in modalità
wireless, con una piattaforma centrale che raccoglie i dati e li invia ad un cloud. L’obiettivo è
analizzare i dati per fare una valutazione del rischio.
L’abito è composto da sensori strain gauge. Quando l’operatore indossa l’abito, i sensori di
deformazione risentono del movimento dovuto alla respirazione e si ottengono così informazioni
sull’estensione della cassa toracica. Sulla maglia è presente l’alloggiamento degli elettrodi per
eseguire l’ecg. Sulla schiena c’è un taschino per poter inserire una nuova elettronica (sempre
collegata tramite bluetooth) che serve a capire se ci sono stati o meno cambiamenti relativi allo
stato fisiologico della persona (cambio di temperatura, umidità della pelle, ecc..).
Ecco la spiegazione matematica che sta dietro la valutazione del livello di rischio: a seguito
dell’acquisizione dei segnali, vengono calcolati i parametri ma non facendo riferimento all’intero
segnale ma su finestre di 30 secondi. I dati calcolati vengono inviati al cloud. Il calcolo del rischio
viene implementato in Matlab. Quindi ogni 30 secondi viene calcolato un certo numero di
parametri (HR medio, LF, HF se si fa riferimento all’ecg) e ad ogni parametro calcolato
corrisponde un input del modello. Sulla base di ciò, in output dal modello abbiamo le classi di
rischio definite in fase di training e la probabilità con la quale può presentarsi una determinata
classe. L’operazione di training porta a definire i vari pesi del modello.
SensorTile Box e Seismote sono elettroniche progettate da terzi; le ultime due dal Centro Piaggio
per cui è stato deciso il protocollo, il tipo di comunicazione, ecc…. Con protocollo si intende il
modo in cui i dati vengono inviati all’applicazione.
Il protocollo bluetooth BLE è stato sviluppato da SIG che è una community che decide quali sono i
servizi, come devono essere strutturati, ne stabilisce le caratteristiche. Tutto ciò per permettere
la comunicazione tra dispositivi che non sono prodotti dallo stesso ente.
Le batterie usate sono lipo, con tensione non superiore a 3 o 4V. È richiesta un’alimentazione tra
1.7V e 3.6V e che sia stabile.
Le batterie lipo possono esplodere: necessitano quindi di un profilo di carica particolare.
Nell’immagine che segue è mostrato un integrato che segue il profilo che necessita la batteria; il
secondo integrato invece ha la funzione di stabilizzare la tensione e di portarla a 2.7V che è
compatibile con quella dell’integrato mostrato prima. Si noti il profilo di corrente nel grafico:
prima è costante, a 100 minuti inizia a diminuire. Questo consente una ricarica sicura del
dispositivo che, in caso contrario, potrebbe esplodere.
Nella figura che segue è mostrato il layout di uno dei nodi: in blu ci sono le tracce del bottom
(quindi della faccia inferiore); in rosso ci sono le tracce del top e poi ci sono degli strati intermedi.
I protocolli usati per la comunicazione tra gli integrati sono generalmente di due tipi: I2C o SPI.
I2C
La tecnologia I2C prevede il collegamento di due pin: uno per i dati (bidirezionale), uno per il
clock. Le operazioni che si possono compiere sono: scrittura e lettura. All’inizio di ogni
operazione, viene avviata l’operazione di start della sequenza (si passa dal livello logico alto a
basso prima per SDA e poi SCL); alla fine di ogni messaggio, c’è la stop sequence (viene alzato al
livello logico alto prima SCL e poi SDA). Sia per la scrittura sia per la lettura, all’inizio viene inviato
l’indirizzo: si noti che è possibile usare lo stesso bus per più sensori; il Master comunica con un
solo dispositivo alla volta; quando il Master interroga un sensore in particolare lo fa inviando il
suo indirizzo; tutti i sensori (Slave) leggono l’indirizzo, ma solo il sensore che effettivamente viene
interrogato dal Master acquisisce la linea e risponde. L’indirizzo è di 7 byte: sullo stesso bus è
possibile quindi attaccare 127 dispositivi. Inviato l’indirizzo, c’è un valore che indica se si tratta di
un’operazione di lettura/scrittura. L’ACK è la risposta da parte dello Slave: 0 se ha ricevuto il
messaggio, 1 altrimenti. Quanto appena descritto è la procedura che accomuna le operazioni di
lettura e di scrittura. I passi successivi sono invece differenti: per quanto riguarda la scrittura,
dopo l’invio dell’indirizzo, il Master invia il valore del registro su cui si vuole scrivere e poi il dato
corrispondente ad un certo numero di byte. Per la lettura invece il Master indica il registro da
leggere e lo Slave risponde acquisendo la linea SDA ed inviando i dati richiesti.
SPI
L’SPI è simile all’I2C. Si utilizzano però 4 pin: i primi due vengono utilizzati in direzioni diverse, la
terza linea corrisponde all’indirizzo di selezione (mentre nell’I2C si usava l’indirizzo per
selezionare lo Slave, nell’SPI c’è il Chip Select (CS) ovvero si abbassa la linea in modo da
selezionare lo Slave con cui il Master vuole comunicare), l’ultima linea è il clock che serve per
temporizzare i dati, cioè sincronizzare lettura e scrittura (c’è anche nell’I2C).
MISO è la porta di input del Master; MOSI di output; SDO e SDI sono le porte dello Slave
rispettivamente di output e di input.
Nella figura che segue è mostrata l’architettura iniziale pensata per il sistema abito:
• TensorFlow Life Model: è il modello di machine learning riportato in Android; è un modello
esterno che ha garantito il vantaggio di risparmiare memoria;
• La piattaforma su cui vanno a finire i dati è una piattaforma di Google; se i dati sono inferiori
a 2Gb, la piattaforma è gratuita;
Teoria Laboratorio
Abbiamo visto come sia possibile, attraverso il protocollo MQTT, mandare le informazioni da un
sistema remoto ad un sistema centrale. Questo viene fatto attraverso una tecnologia di gestione
del messaggio che prevede il coinvolgimento di:
Qualche differenza tra MQTT e HTTP a livello di prestazioni e di struttura del messaggio:
La slide mostra gli strumenti che useremo per il progettino e che vedremo durante il corso.
Concetto di Timestamp
Quando si parla di sistemi di acquisizione o di monitoraggio, con timestamp si intende legare a
tutti i dati un contatore che tiene conto dei cicli di clock che intercorrono tra un campionamento
e l’altro. Questo perché, quando si ha a che fare con un hardware, non si avrà mai la sicurezza che
il tempo di campionamento venga sempre rispettato al ciclo macchina. Si crea dunque questo
contatore che viene incrementato ogni qual volta viene effettuato un campionamento. I dati non
viaggiano mai da soli: oltre ad essi, viene inviato anche il contatore (che prende il nome di tempo
macchina o di timestamp). Questo permette di effettuare un’operazione di ricostruzione di fitting
e di ricampionamento del dato. Questo fa sì che è possibile applicare la FT su un dato ma non
perché è stato inviato con una frequenza di campionamento uniforme ma perché, grazie al
timestamp, i dati vengono ricampionati alla frequenza opportuna. Le macchine non sono mai
costanti: non useranno mai lo stesso numero di cicli di clock per compiere le stesse operazioni
perché la macchina ha bisogno di fare altre operazioni diverse. Per questo, anche se di poco,
cambia il tempo di campionamento.
Di questo concetto va tenuto conto, soprattutto per il ricampionamento dei dati nel caso in cui si
voglia applicare la FT.
Da Telegraf i dati vanno a InfluxDB. Successivamente i dati vanno presentati sulla dashboard. Nel
mezzo possono essere fatte operazioni di processing (che noi non faremo). Telegraf è quindi
quell’agente che permette di gestire i dati che vengono mandati dal sistema e di trasferirli ad
InfluxDB. Quest’ultimo immagazzina i dati ricevuti e compie delle operazioni. InfluxDB è quindi un
vero e proprio database. Telegraf invece si occupa di aggregare, trasferire, trasformare i dati.
La dashboard che utilizzeremo è Grafana. Si tratta di un modulo grafico che presenta i dati che gli
vengono inviati da InfluxDB. Ci sono tantissime metriche che Grafana costruisce: noi avremo una
serie temporale (come mostrato nel grafico in alto a destra) rappresentata su una scala che sarà
più o meno corretta a seconda del tempo di campionamento con cui viene selezionato il segnale.
Sulla serie temporale Grafana calcola una serie di metriche che possono essere modificate.
Vedremo sicuramente il messaggio con uno specifico topic che Telegraf ha deciso di accettare.
Di seguito è mostrato uno sketch di Arduino dove è stata implementata la comunicazione tra
Arduino e il sistema che si basa sul protocollo MQTT. La parte iniziale consiste in assegnamenti di
variabili che servono per usare MQTT. Per poter accedere a MQTT c’è da stabilire una
connessione wifi: va fatta la gestione dello stato del wifi con le librerie apposite.
Viene poi mandato il broker (in questo caso del gruppo 23) con una stringa che deve
necessariamente contenere il topic. La stringa viene poi riconvertita e utilizzata da Telegraf per
conservarla su InflaxDB e visualizzarla su Grafana. Si noti che, a parte la gestione del wifi, va
gestita anche la tempistica e il tipo di messaggio da mandare. Successivamente il client pubblica il
topic sulla linea che viene poi stampata.