Scroll Top
Via Antonio Amato, 20/22 84131 Salerno (SA)

IoT: Monitoraggio produzione con una rete di sensori a basso costo

Internet of Things

(articolo redatto da Domenico Di Mieri)

Le aziende di produzione sempre più spesso oggi devono certificare il prodotto e le trasformazioni da esso subite, in modo che il cliente possa “fidarsi”, visualizzando la catena di lavorazione ed i macro-parametri misurati in ogni fase del processo.

In questo articolo vi racconto come è possibile con l’IoT monitorare la produzione, usando ad esempio una rete di sensori a basso costo.

La fiducia del consumatore

In un mondo sempre più veloce ed interconnesso dove, grazie ad Internet ed ad una logistica sempre più organizzata ed ottimizzata, è possibile ordinare un prodotto ad aziende che si trovano a migliaia di chilometri di distanza ed aspettarsi di riceverlo entro qualche giorno, la concorrenza tra le piccole e medie aziende locali e quelle estere più strutturate e globalizzate, può diventare davvero un problema.

Quest’ultimo è tale non soltanto per le aziende stesse (spesso sottoposte a controlli e conseguenti costi aggiuntivi che all’estero non sono richiesti), ma anche per i consumatori che a volte vengono indotti ad acquistare prodotti solo all’apparenza simili, ma di scarsa qualità se non addirittura pericolosi.

Non è raro, infatti, leggere di aziende costrette a chiudere perché, per non abbassare la qualità dei loro prodotti, non riescono ad essere competitive rispetto a prodotti simili provenienti dall’estero, e che spesso sono ottenuti da materie prime di scarsa qualità o hanno subito processi di lavorazione che in Europa ed in Italia sarebbero probabilmente vietati.

Nel nostro Paese però, molti imprenditori hanno compreso che per essere competitivi e generare profitti è necessario informare correttamente il consumatore, affinché comprenda che scegliere un prodotto di qualità è conveniente soprattutto per la propria salute.

Questi imprenditori raccontano che la loro maggiore difficoltà è la fiducia: non basta mostrare ai clienti l’azienda e le modalità con cui lavora i prodotti, poiché nonostante il coinvolgimento e le belle sensazioni che una visita guidata possono regalare, una volta tornati in città, i consumatori restano col dubbio che si sia trattata di una “bella recita”.

Gli imprenditori hanno bisogno, quindi, di un sistema per controllare e certificare il prodotto dall’arrivo delle materie prime in azienda fino a quando viene messo in vendita su uno scaffale di un negozio, in modo da poter dare ai clienti una prova tangibile dell’onestà del produttore, oltre che della qualità di tutto il processo di lavorazione.

IoT e Blockchain per il monitoraggio e la certificazione

Oggi i produttori hanno bisogno di un sistema che consenta di certificare il prodotto e le trasformazioni da esso subito come si dice: “dal produttore al consumatore”.

Il cliente, ad esempio, usando una semplice App può inquadrare un codice QR sul prodotto, visualizzare la catena di lavorazione ed i macro-parametri misurati in ogni fase per quel determinato elemento.

Nel caso di un prodotto agricolo pregiato, ad esempio, si potrà risalire oltre al campo in cui è stato coltivato anche alla misura delle precipitazioni dell’annata o al grado di acidità del terreno o alle irrigazioni e concimazioni effettuate.

Analogamente in fase di produzione si potrà sapere ogni lotto quali lavorazioni ha subito (es. essiccazione, aggiunta di aromi, o altro).

Un modo per realizzare un tale sistema di controllo è utilizzare una rete di sensori. I sensori misurano costantemente i parametri caratteristici del processo di lavorazione, li caricano attraverso Internet su un “registro” e certificano, tramite una blockchain, i dati ricevuti, in modo che restino immutabili e consultabili dai consumatori in qualsiasi momento.

In questa sede ci occuperemo essenzialmente della realizzazione di una rete di sensori collegati, per semplicità, tramite una rete Wi-Fi ad un servizio REST che gira su un server sulla stessa rete e non ci occuperemo della BlockChain e dei problemi di ottimizzazione dei dispositivi per ridurre i consumi o massimizzare la distanza coperta dal singolo sensore.

Gli utenti più curiosi possono provare a modificare il codice in modo da sfruttare tecnologie come LoRA, ecc.

Realizzazione di un sensore di umidità e temperatura con Arduino

Materiale utilizzato:

  • N° 1 – Scheda ESP32
  • N° 1 – Sensore di umidità e temperatura DHT22
  • N° 3 – cavi di collegamento (F/F se non si usa una breadboard)

Il sensore DHT22 è un sensore di umidità e temperatura di tipo digitale, che è possibile connettere ad una scheda Arduino, utilizzando un solo PIN digitale oltre ai necessari PIN di alimentazione (Vcc) e terra (Gnd).

Nel nostro esempio collegheremo il sensore sulla porta digitale (PIN 15) della scheda ESP32, prenderemo la Vcc dal PIN a 3.3V ed il più vicino cavo di terra come nello schema che segue:

Schema Arduino

Chi possiede una scheda Arduino con modulo Wi-Fi (o una economica ESP32) ed un sensore di temperatura e umidità può provare ad eseguire il codice scaricabile da: https://github.com/redazione-nexsoft/iotsensor

Chi, invece, non dispone dell’hardware necessario può eseguire il progetto Arduino su emulatore online: https://wokwi.com/projects/363167757595037697

e visualizzare i dati inviati alla pagina web: http://redazione.nexsoft.it:9091/measures

Spiegazione del codice

Progetto Arduino per il sensore

Le prima righe del progetto Arduino servono per specificare quali librerie utilizzeremo (es. WiFi per le funzionalità di accesso alla rete WiFi, HTTPClient per inviare i dati ad un’API REST remota e DHTesp per utilizzare il sensore DHT22).

Seguono alcune righe di configurazione per definire ogni quanto tempo il sensore invierà i dati, la username e password per l’accesso alla rete wi-fi, la URL dell’API REST a cui inviare i dati, il PIN di dati a cui è connesso il sensore e una stringa che identifica univocamente il sensore.

ATTENZIONE! Queste righe vanno modificate prima di eseguire il test secondo la configurazione più adatta per la propria rete locale (SSID e PASSPHRASE) e l’indirizzo delle API a cui inviare le misure (URL)

Poi una fase di setup (una sorta di BOOT della scheda Arduino)

In cui la scheda si prepara impostando la velocità della porta seriale (in baud), informando la libreria del sensore sul PIN a cui è connesso e la versione del sensore (dhtSensor.setup) e poi effettuando la connessione alla rete wi-fi.
Se il setup va a buon fine l’emulatore (o il monitor seriale in caso di progetto eseguito in locale) mostrerà l’IP ottenuto dalla scheda sulla rete wi-fi.

Terminato il setup la scheda entra in un loop (concettualmente simile alla procedura eseguita dal processore) in cui non fa altro che:

  • leggere temperatura e umidità dal sensore

  • connettersi alla URL dell’API REST

preparare un messaggio in formato JSON ed inviarlo

sospendere l’esecuzione per il tempo impostato in MEASURE_INTERVAL_MILLISECONDS

Test del progetto arduino

Nella figura successiva è mostrato un esempio di esecuzione del codice fatto tramite l’emulatore. Si noti che la scheda si connette al wi-fi ed invia il pacchetto all’indirizzo http://redazione.nexsoft.it:9091/deviceprobes

Il servizio che riceve i dati è contenuto nel progetto C# di seguito descritto:

Progetto delle API REST lato backend

Nel codice sorgente è presente il file di soluzione SensorsApi.sln contenente i progetti:
1) MeasuresProbeApi
Dedicato alla ricezione del messaggio JSON inviato dai dispositivi

MeasuresProbeApi

Fondamentalmente espone un controller per esporre le API che servono per ricevere le misure comunicate dai dispositivi e per visualizzarle in formato JSON.

Test del backend

Per testare il back-end usiamo Swagger: il progetto di OpenAPI che consente di automatizzare la creazione della documentazione delle API oltre che di creare tool capaci di configurare automaticamente un reverse proxy o di creare automaticamente interfacce e test di integrazione per collegarsi alle API esposte da un servizio.

Inviando un pacchetto nel formato usato dal progetto Arduino al servizio MeasuresProbe emulando una POST all’indirizzo

http://localhost:5001/deviceprobes

I dati vengono trasformati nel dominio del sistema informativo e memorizzati nella tabella delle misure.

Per avere conferma del corretto funzionamento basta leggere tutte le misure effettuando una GET all’indirizzo:

http://localhost:5002/measures

Ci aspettiamo di ottenere un array di righe della tabella Measures in cui ad ogni misura normalizzata è stata aggiunta la data e l’ora di ricezione del pacchetto.

Note conclusive

In questo articolo abbiamo cercato di mostrare alcune problematiche di natura empirica con cui ci si trova spesso a lavorare e come gli strumenti informatici possano essere usati in vario modo per risolverle.

In questo caso una scheda Arduino e dei leggerissimi sevizi REST sono in grado di soddisfare il bisogno delle aziende di valutare la qualità dei loro prodotti e dei relativi processi di trasformazione fornendo dei parametri quantitativi oggettivi.

Questo articolo non ha lo scopo di fornire un sistema di monitoraggio e di certificazione “finito”, poiché esistono modi migliori per connettere le schede che non tramite il Wi-Fi, manca il sistema di memorizzazione e certificazione tramite la blockchain, manca il portale per accedere ai dati, ecc.. Il lettore può, però, farsi un’idea del problema generale e provare a risolverlo secondo la sua esperienza.

Noi, come sempre, siamo disponibili ad ascoltare nuove idee.


Se anche tu vuoi occuparti di importanti progetti di  sviluppo software
dai un’occhiata alle nostre opportunità di lavoro e conosciamoci subito!