Un firmware avanzato – come funziona il firmware di EnviSense

EnviSense è un prodotto ideato e sviluppato da Cognimade. La progettazione ha incluso lo sviluppo del firmware del dispositivo.Envisense industrial

Le funzionalità del prodotto sono svariate rispetto ai classici sensori che si utilizzano nella building automation, nella sorveglianza, nella domotica, o in altri settori. EnviSense supporta sia diverse misure contemporaneamente, sia l’elaborazione di algoritmi avanzati che, a partire dai dati di alcuni sensori, presentano dei risultati non ovvi.

Il firmware è stato sviluppato per un micro-controllore ARM Cortex M-4. I micro-controllori di tale categoria includono al loro interno un’unità FPU, che consente l’esecuzione di operazioni matematiche in virgola mobile a 32-bit direttamente in hardware. Questo ha permesso di implementare algoritmi di signal processing ad alta precisione.

Nel dettaglio del firmware

Questo firmware non utilizza alcun sistema operativo real-time; tramite una schedulazione temporale a intervalli fissi riesce a gestire la configurazione e la lettura contemporanea dei dati dai seguenti sensori MEMS:

  • Temperatura e Umidità
  • Luminosità
  • Qualità dell’aria TVOC
  • Passive InfraRed (rilevazione di movimento)
  • Accelerazione
  • Microfono
  • Rilevatore di fumo a LED
  • Array di Infrarossi

Tutti i sensori vengono gestiti senza perdite di dati nel rispetto del loro periodo di campionamento. Mentre legge i dati, il firmware gestisce con totale disponibilità l’interfaccia di comunicazione RS-485 implementando il protocollo Modbus RTU, ed esegue gli algoritmi di elaborazione prima citati e di seguito riassunti:

  • Tracciamento delle persone; grazie al sensore con Array di infrarossi è possibile ottenere una matrice 8×8 di profilo termico dell’ambiente, quindi installando opportunamente il dispositivo, ad esempio sul soffitto, l’algoritmo identifica il profilo termico di una persona e ne segue il movimento all’interno dell’area di visione del sensore. L’algoritmo quindi deve:
    • Ripulire il segnale dal rumore e dal calore dell’ambiente
    • Identificare il profilo di una persona
    • Riconoscere più persone anche se vicine
    • Eliminare false sorgenti di calore, come ad esempio dispositivi elettronici, caloriferi.
    • Seguire lo spostamento delle persone nei diversi frame, identificando le situazioni di ingresso e uscite dall’area di visione del sensore per non confondere persone diverse
  • Rilevazione anomalie termiche per manutenzione predittiva; sempre utilizzando il sensore con Array a infrarossi è possibile identificare il riscaldamento anomalo di un’area di una superficie o di un oggetto. In tal modo è possibile effettuare la manutenzione predittiva di una macchina o di un dispositivo.
  • Misura delle vibrazioni; grazie al sensore accelerometrico è possibile ottenere il vettore di accelerazione 200 volte al secondo. Compensando l’accelerazione di gravità stimata inizialmente, il risultante vettore esprime i movimenti del sensore e quindi del dispositivo. L’algoritmo di elaborazione filtra il segnale, esegue la trasformata di Fourier e stima la frequenza di vibrazione principale sia lungo i tre assi sia in termini assoluti. Infine calcola l’ampiezza di vibrazione.
  • Misura del rumore acustico; il microfono presente nel dispositivo campiona un segnale audio dell’ambiente alla frequenza di 14 kHZ. Dopo un filtraggio del segnale viene eseguita la trasformata di Fourier per il calcolo della frequenza principale, utile per identificare la sorgente del rumore, e il calcolo del SPL, la pressione sonora dell’ambiente in dB o dBA (valore rapportato alla risposta in frequenza dell’orecchio umano). In tal modo è possibile stimare la rumorosità di un ambiente, la presenza di persone o anomalie nel comportamento di macchinari.
  • Identificazione della rottura di un vetro; come ulteriore elaborazione dell’algoritmo precedente è stata implementata la rilevazione della rottura di un vetro, analizzando le componenti spettrali e le caratteristiche del segnale audio campionato dal microfono. Tale funzionalità è utile per identificare anomalie nel comportamento di un macchinario o per anti-intrusione e sorveglianza.
  • Rilevazione di un principio di incendio; tale funzionalità è implementata confrontando le misure di 3 sensori: temperatura, array di infrarossi e rilevatore di fumo a LED. In base alla regola impostata, le misure vengono confrontate con logiche diverse, in modo più conservativo per la sicurezza una qualsiasi anomalia iniziale dei valori dei tre sensori può generare l’allarme, altrimenti l’anomalia deve verificarsi su più sensori per identificare l’evento.

electronic designDi ogni sensore le misure sono restituite sia come valore massimo e media dall’ultima lettura del dato, sia come medie mobili in intervalli temporali configurabili. Ogni media è corredata dalla deviazione standard, massimo e minimo.
Inoltre è possibile l’aggiornamento remoto del firmware stesso, tramite la linea di comunicazione RS-485. Il nuovo firmware opportunamente criptato viene inviato a blocchi tramite il protocollo Modbus RTU al dispositivo, che lo memorizza in una zona temporanea della memoria FLASH e solo in seguito al completo ricevimento del file binario e al controllo di integrità viene decriptato e sostituito.
Il codice sorgente è stato scritto in linguaggio C per ottimizzare i tempi di esecuzione e l’occupazione su memoria FLASH.

Conclusione

Per concludere, la difficoltà nel progettare e sviluppare un firmware di questo tipo risiede nella sincronia tra tutte le operazioni senza alcuna perdita di dati o disponibilità delle interfacce, e nell’accuratezza dei risultati degli algoritmi.

Per conoscere il servizio completo di sviluppo firmware clicca qui.