Digital Health: tutorial per il monitoraggio del battito cardiaco con Arduino

progetti Arduino

Nell’ultimo decennio, con l’accesso facile alla tecnologia sempre più efficiente e miniaturizzata, anche la salute è diventata una priorità sempre più importante. Con la crescente consapevolezza dell'importanza del monitoraggio regolare del battito cardiaco per il benessere generale (digital health), sempre più persone stanno cercando soluzioni accessibili e convenienti per misurare i loro parametri vitali. In questo articolo, affronteremo alcuni aspetti della progettazione di un dispositivo fai-da-te per la misurazione del battito cardiaco, offrendo una soluzione innovativa per il monitoraggio della salute personale. In particolar modo, utilizzeremo una scheda basata sul sensore MAX30102 prodotto dalla Maxim Integrated con caratteristiche e prezzo molto interessanti.

Introduzione

Nell'attuale contesto frenetico, il benessere personale è sempre più al centro dell'attenzione per individui di tutte le fasce d'età. Fortunatamente, l'avanzamento della tecnologia svolge un ruolo sempre più rilevante nel migliorare il nostro stato di salute globale. La digital health, conosciuta anche come eHealth, rappresenta l'utilizzo di tecnologie digitali come applicazioni per smartphone, dispositivi indossabili e piattaforme online per migliorare la salute e il benessere individuale. Questo approccio innovativo non solo rende l'accesso alle informazioni sulla salute più semplice e pratico, ma permette anche un monitoraggio più preciso e personalizzato dei nostri parametri vitali.

In questo articolo, affronteremo dunque alcuni aspetti per la progettazione di un monitor del battito cardiaco fai da te. Il nostro progetto si concentra sull'utilizzo di componenti elettronici accessibili e facilmente reperibili per creare un dispositivo efficace e preciso per la misurazione del battito cardiaco. Utilizzando un sensore ottico, una scheda Arduino e le librerie a disposizione, in pochi semplici step saremo in grado di realizzare un dispositivo che può misurare il battito cardiaco in modo rapido. Il nostro dispositivo di misurazione del battito cardiaco ha numerose applicazioni pratiche, tra cui:

  • Monitoraggio della frequenza cardiaca durante l'esercizio fisico
  • Controllo del battito cardiaco durante momenti di stress o ansia
  • Monitoraggio della salute cardiaca generale nel tempo

Materiale occorrente

Come già detto, per lo sviluppo di questo progetto andremo ad utilizzare Arduino e un sensore dedicato all'acquisizione del battito cardiaco. Dunque, la dotazione hardware per questo è data dalla seguente lista:

  • Arduino MKR Wi-Fi 1010. In alternativa, potete utilizzare anche modelli diversi in funzione delle vostre esigenze e del risultato finale che desiderate ottenere
  • Scheda con sensore Maxim Integrated MAX30102. In particolar modo, io ho usato la scheda prodotta da ARCELI e disponibile a meno di 10€
  • Display OLED128x32pixel con comunicazione I2C

La scheda Arduino MKR Wi-Fi 1010 (vedi Figura 1) integra l’interconnessione Wi-Fi e Bluetooth concepita per lo sviluppo di progetti di Internet of Things in maniera semplice ed immediata. La scheda è dotata di un Arm Cortex-M0 che si interfaccia con un chipset per le comunicazioni wireless. Le caratteristiche tecniche complete della scheda sono:

  • Microcontroller SAMD21 Cortex®-M0+ 32bit low power ARM MCU
  • Modulo radio u-blox NINA-W102
  • Alimentazione (USB/VIN) 5 V
  • Tensione operativa 3.3 V
  • Secure Element ATECC508
  • Digital I/O Pins 8
  • PWM Pins 13 (0..8, 10, 12, 18/A3, 19/A4)
  • Comunicazioni: UART, SPI, I2C
  • Analog Input Pins 7 (ADC 8/10/12 bit)
  • Analog Output Pins 1 (DAC 10 bit)
  • CPU Flash Memory 256 kB (internal)
  • SRAM 32 kB
  • USB Full-Speed USB Device and embedded Host
  • Dimensioni fisiche: 61.5 mm x 255 mm/peso 32 g
Scheda Arduino MKR WiFi 1010

Figura 1: Scheda Arduino MKR WiFi 1010

Il sensore MAX30102

L’elemento fondamentale di questo progetto DIY è il sensore del battito cardiaco MAX30102 prodotto dalla Maxim Integrated, in particolar modo la scheda prodotta da Arceli (vedi Figura 2). Le caratteristiche principali di questo sensore che andremo ad utilizzare sono:

  • Sensore con soluzione a LED riflessiva
  • Dimensioni del chip sensore 5.6mm x 3.3mm x 1.55mm 14-pin
  • Copertura in vetro integrata
  • Funzionamento Ultra-low power
  • Sample rate e corrente del LED programmabile
  • Fast data output capability
  • Elevato rapporto SNR
  • Temperatura operativa -40°C to +85°C

    Sensore MAX30102 foto del funzionamento

    Figura 2: Sensore MAX30102

Il sensore MAX30102 è dunque un misuratore di tipo ottico del battito cardiaco, espresso in BPM ossia battiti al minuto (beats per minute). Oltre al battito cardiaco, il sensore fornisce una misura anche della saturazione del sangue, espressa in percentuale. La saturazione dell'ossigeno nel sangue (SpO2) è una misura che indica la percentuale di emoglobina nel sangue che è ossigenata. In altre parole, rappresenta la quantità di ossigeno presente nell'emoglobina rispetto alla capacità massima di trasporto dell'ossigeno. Questo parametro è fondamentale per valutare l'efficienza del trasporto dell'ossigeno dai polmoni ai tessuti del corpo. La SpO2 viene comunemente misurata utilizzando un ossimetro, un dispositivo medico non invasivo che si applica solitamente sulla punta delle dita, sull'orecchio o sul naso. L'ossimetro utilizza due tipi di luce, di lunghezze d'onda diverse, per valutare la quantità di emoglobina ossigenata e non ossigenata nel sangue. I valori normali di SpO2 negli esseri umani sono generalmente compresi tra il 95% e il 100%. Una SpO2 inferiore al 95% può indicare una diminuzione della quantità di ossigeno trasportato nel sangue, che potrebbe essere causata da problemi respiratori, condizioni cardiache o altre patologie. La misurazione della SpO2 è particolarmente importante in situazioni in cui vi è un rischio di ipossia (livelli pericolosamente bassi di ossigeno nel sangue), come durante interventi chirurgici, nel monitoraggio dei pazienti in terapia intensiva, o per valutare l'adattamento alle alte altitudini.

Progetto

Il progetto si basa sull'acquisizione delle informazioni dal sensore tramite il bus I2C e, a valle dell'elaborazione dei segnali, la visualizzazione dei risultati sul display OLED sempre collegato sul bus I2C. Per il corretto funzionamento, il sensore ottico dovrà essere posizionato sulla pelle, di solito sul polso o sul dito, dove rileverà le variazioni nella luce riflessa causate dalle pulsazioni del cuore. Questi segnali vengono quindi elaborati dal microcontrollore, che calcola il battito cardiaco in tempo reale e la saturazione. Il risultato verrà dunque visualizzato sul display, consentendo all'utente di monitorare facilmente la propria frequenza cardiaca.

Per il funzionamento del progetto utilizzeremo la libreria SparkFun_MAX3010x_Sensor_Library che già integra tutte le funzioni di scambio di informazioni e configurazioni del nostro sensore per una rapida prototipazione.

In particolar modo, all'interno del nostro sketch, andremo a richiamare i seguenti file di libreria:

  • #include "MAX30105.h"            //MAX3010x library
  • #include "heartRate.h"              //libreria con algoritmi del battito cardiaco
  • #include "spo2_algorithm.h"     //libreria con algoritmi dell'ossigenazione
Inoltre, andremo ad usare le librerie per la gestione del display OLED includendo i seguenti file:
  • #include <Adafruit_GFX.h>        //OLED libraries
  • #include <Adafruit_SSD1306.h>

Infine, utilizzeremo anche il monitor Seriale per poter vedere i risultati intermedi dell'elaborazione del valore di saturazione del sangue, fondamentali per il capirne il calcolo e i risultati ottenuti.

Per quanto riguarda il calcolo del battito cardiaco, l'algoritmo è molto semplice: si osserva quanto tempo intercorre tra due battiti rilevati e si rapporta questo al numero di battiti per minuto. Al fine di garantire una stabilità della misura rilevata si effettua una media su diversi campioni in modo da evitare oscillazioni troppo elevate del battito.

Per quanto riguarda invece il calcolo della saturazione tutto risulta più complicato. Nella letteratura scientifica possiamo trovare innumerevoli lavori a riguardo che parlano di come i dati differiscono molto anche in base al soggetto su cui si sta effettuando la misura. Tuttavia, come riportato anche tra le linee guida della Maxim Integrated, esiste una formula di approssimazione che lega il valore di SpO2 al valore di R, dove R è indicato come il rapporto del rapporto. Praticamente, il valore R è calcolato come rapporto normalizzato tra l'ampiezza della pulsazione acquisita dal led rosso e l'ampiezza della pulsazione acquisita dal led infrarosso. La normalizzazione si effettua rispetto ai relativi valori in DC.

Nella Figura 3 è mostrata l'equazione approssimata per il calcolo della saturazione SpO2.

equazione del calcolo dell'ossigenazione SpO2

Figura 3: Equazione del calcolo dell'ossigenazione SpO2

Schema di collegamento

Lo schema di collegamento del sensore MAX30102 e del display OLED alla scheda Arduino è riportato in Figura 4. Come si può osservare, entrambi gli oggetti sono collegati sulla stessa linea I2C attraverso i segnali SDA e SCL della scheda Arduino. Tuttavia, notiamo come le linee di alimentazione sono diverse. Infatti, mentre il display è alimentabile con la 3.3V di Arduino MKR (attraverso il pin VCC), il sensore MAX30102 deve essere alimentato necessariamente attraverso la 5V. Lo schema di collegamento è molto semplice e si presta a facili adattamenti con le altre versioni di Arduino, come la UNO R3. [...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2387 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend