Sistema Telemetria Fitness Arduino ANT+

Fin da giovanissimo ho frequentato nel mio paese l’ambiente della palestra. Inizialmente frequentavo la sala pesi per costruirmi un fisico forte e resistente. Con il passare del tempo, un po’ il lavoro, un po’ la famiglia, ho progressivamente abbandonato per poi tornare a più riprese, finchè un giorno decido di sottoscrivere un abbonamento annuale ad una delle più affermate palestre della mia zona. Durante questo periodo ho avuto modo di praticare, oltre alla classica disciplina della palestra da peso, una serie di altre attività, diciamo fitness-oriented, come il walking. Si tratta di camminare su un tappeto non motorizzato con inclinazione fissa. Il tappeto in pratica simula una salita costante con uno sforzo noto regolato dalla manopola della resistenza. Durante la lezione, che in media dura circa 45 minuti, si avvicendano vari esercizi cardio finalizzati a bruciare calorie e nel contempo migliorare la resistenza. Durante questo periodo ho approfondito la questione tecnica / teorica che è alla base di questo genere di attività e sono approdato al controllo della qualità del lavoro svolto. Mi sono quindi dotato inizialmente di un cardiofrequenzimetro, uno strumento che attraverso una fascia cardiaca capace di rilevare gli impulsi elettrici è in grado di calcolare la frequenza del cuore istante per istante.

Un dispositivo, tipicamente da polso, legge questa frequenza ed esegue delle statistiche. Acquistai un SIGMA PC25.10 al quale aggiungendo i dati di età, altezza e peso riuscivo ad ottenere:

  • il tempo di allenamento totale
  • le calorie bruciate in tempo reale e quelle totali a fine sessione
  • le percentuali delle varie zone cardiache (il tempo in ogni zona)
  • la qualità generale del lavoro svolto (solo indice)

In base all’età è possibile determinare la frequenza cardiaca massima, su internet c’è una ampia documentazione a riguardo. Una volta stabilito questo valore è possibile determinare le zone di frequenza cardiaca. Sono indicate in percentuale rispetto alla frequenza cardiaca massima e sono così suddivise:

  • minore di 60% – recupero / riscaldamento – al di sotto del 60% della frequenza cardiaca massima calcolata come indicato sopra si stà svolgendo attività di recupero o riscaldamento
  • dal 60% al 70% – zona brucia grassi – si stà lavorando per bruciare i grassi, in questa zona il corpo tenderà a privilegiare il consumo di grassi
  • dal 70% al 80% – zona aerobica –
  • dal 80% al 90% – zona anaerobica –
  • dal 90% al 100% – zona massima –
  • dal 100% in su – zona massimo sforzo ammissibile – normalmente in questa zona non si dovrebbe arrivare.

Inizialmente mi preparai un foglio MS Excel sul quale riportavo poi, tornato a casa, tutti i dati della sessione di allenamento svolto per cercare di aggregare i dati e ottenere delle statistiche oltre che stimare se il mio lavoro stava progressivamente migliorando col progredire dell’allenamento.

Inizia anche a correre ed a monitorarmi con lo stesso cardiofrequenzimetro riportando i dati sullo stesso foglio di calcolo Excel.

Nacque però subito una esigenza che si manifestò nella corsa e non nelle sessioni di walking. Per poter monitorare correttamente una sessione di corsa è necessario anche, oltre al cardio, ottenere i dati della percorrenza che associati allo sforzo fisica ti fanno capire quel che accade. Allora decisi di usare il mio smartphone come monitor dell’attività fisica. I primi programmi che uno subito trova sugli store delle app sono Runtustic, Sport Tracker e cose del genere. Un aspetto che di questi programmi non mi è mai piaciuto è che ti obbligano ad usare una loro fascia cardiaca per integrare i dati della percorrenza con i dati cardiaci. Li scartai subito. Cercavo qualcosa che fosse compatibile con la mia fascia del SIGMA PC25.10 ma scoprii subito, anche contattando la stessa casa produttrice SIGMA, che quella fascia usava un protocollo proprietario e non era possibile interscambiare dati con lo smartphone. Ovviamente all’epoca pensavo a qualcosa che fosse Bluetooth.

Dopo una ricerca su internet ho scoperto la fantastica tecnologia ANT+ del quale il mio Samsung Galaxy S4 era anche dotato nativamente. Acquistai via eBay una fascia cardiaca ANT+ della ADIDAS MyCoach addirittura con bracciale dotato di display per la visualizzazione dei dati della fascia (senza statistiche e senza ulteriori pretese!). Nel panorama delle app disponibili per ANDROID mi colpirono da subito ENDOMONDO capace di leggere sia dispositivi Bluetooth che ANT+ e SportsTrackLive che è attualmente il software secondo me più avanzato in assoluto in questo settore. Così decido di acquistare quest’ultimo e di usarlo per monitorare tutte le mie attività.

ANT+ Note su questa tecnologia

E’ una tecnologia nata da un consorzio di aziende del panorama tecnologico di diversi settori che unitesi hanno voluto creare una piattaforma fondamentalmente “OPEN” per interconnettere tra loro dispositivi diciamo così biometrici. Un sito web di riferimento mette a disposizione una miriade di informazioni tra cui, i partner del consorzio, i dispositivi attualmente sul mercato, tutta la documentazione tecnica ufficiale, le chiavi per entrare a far parte del consorzio fino a mettervi in grado di sviluppare un vostro sistema in tecnologia ANT+. Il bello di tutto questo è che la rete ANT+ permette un livello di interoperabilità inimmaginabile con il Bluetooth. Pensate che lo stesso sensore può essere letto da più dispositivi contemporaneamente e alcuni nodi della rete possono diventare dei bridge di segnale estendendo così la portata fisica della rete stesso. Diversi dispositivi esistono in circolazione, dai classici cardiofrequenzimetri alle bilance impedenziometriche, ai sensori per l’analisi dell’ossigeno nel sangue, ai sensori pod per la stima della passo del piede, ai sensori per le biciclette. Tutta la documentazione è facilmente reperibile sul sito www.thisisant.com.

Proprio consultando il sito web ufficiale e tutta la documentazione a corredo mi si accese l’idea! Realizzare un sistema di telemetria di gruppo da applicare in palestra durante una sessione di fitness. Studiando le varie possibilità ero di fronte a due strade:

  • utilizzare una chiavetta USB ANT+ (tipicamente GARMIN, una delle aziende fondatrici ed aderente al consorzio ANT+) e quindi usare un PC dedicato
  • sviluppare una scheda embedded con un modulo radio ANT+ da integrare e successivamente inviare i dati ad un software sul PC che potesse visualizzare la sessione real-time e fornire le statistiche a fine sessione

Secondo voi quale scelsi?
Ovviamente la seconda. Questa scelta fu dettata fondamentalmente da

  • corta distanza del segnale emesso dal sensore
    dalla documentazione tecnica, confermata da alcune prove che avevo condotto con la mia fascia cardiaca ANT+, il segnale emesso dall’unità è di bassissima potenza (ovviamente avendolo addosso è stato pensato per irradiare il meno possibile il corpo stesso)
  • la chiavetta USB ANT+ mi costringeva ad utilizzare un ambiente di sviluppo che ho sempre tenuto alla larga, il .NET!
  • volevo oltretutto realizzare un sistema affidabile, espandibile, ergonomico, semplice e divertente.

Dopo aver letto la documentazione individuai il modulo radio ANT+ prodotto dalla Nordic Semiconductors che era il nRF24AP2 (http://www.nordicsemi.com/eng/Products/ANT/nRF24AP2-8CH). Di questo modulo esistono 2 versioni, una versione capace di gestire un solo canale, cioè ricevere i dati da un solo dispositivo, ed il modulo a 8 canali, capace di ricevere fino a 8 sensori anche diversi (cardio, bilance, ossimetri, pod, etc.). Optai per questo. Acquistato da eBay anche questo.

Come processore per il mio sistema scelsi subito un Arduino Pro Mini versione a 3.3V – 8MHz sia per mantenere i livelli di compatibilità delle tensioni col modulo Nordic sia per contenere gli spazi. Dopo un lungo tempo di attesa per l’arrivo dei primi materiali mi misi subito all’opera. Ho scritto una pseudo-libreria per Arduino per consentire di interfacciare il modulo e scambiare i dati, giusto per eseguire i primi test. Nel frattempo il mio istruttore di walking vedendo la cosa decise di compartecipare al progetto ed acquistò n.3 sensori ANT+ della WTek, altra azienda aderente al consorzio. I sensori in questione sono gli HS-2+. Io contestualmente acquistai un MIO LINK Green Lemon e con la mia fascia ADIDAS raggiungemmo rapidamente il numero di 5 sensori contemporaneamente disponibili per i test.

All’arrivo dei componenti iniziai i test preliminari. Resi subito stabile la libreria di comunicazione tra Arduino e l’nRF24AP2 ed testai la comunicazione con un sensore. Mi resi conto subito che il modulo Nordic nRF24AP2 aveva una scarsa sensibilità alla ricezione del segnale nel momento in cui aumentava la distanza dallo stesso, spesso perdeva il segnale e lo riagganciava con difficoltà. Provando varie sessioni di test anche con sensori multipli giunsi a conclusione che il modulo non era proprio idoneo ad una sessione in palestra. Girovagando per la rete sui vari store trovai un venditore che forniva una versione speciale del modulo in questione che aveva la possibilità, attraverso un connettore SMA, di collegare una antenna esterna. Acquistai il modulo e cercai sulla rete una antenna con un alto livello di guardagno. Ne presi una 20dBi.

La scelta si rivelò subito  vincente! Il raggio di azione del modulo era sufficiente a coprire una sala da fitness e abbastanza sensibile da rendersi immune ad alcuni disturbi. Così mi concentrai a questo punto a sviluppare il software che girava su Arduino per gestire fino ad 8 sensori, sviluppai il software sul PC usando PROCESSING e sviluppai un protocollo di comunicazione robusto per scambiare i dati via USB tra i due. Optai per un adattatore USB / TTL seriale integrato nella spina USB: il PHA2303X.

Eseguita una lunga sessione di debug del sistema, diedi inizio ai test direttamente in sala fitness. Alcuni volontari si sottoposero al monitoraggio in tempo reale dell’allenamento dotandosi dei sensori WTek. Io stesso partecipai ad alcune sessioni di allenamento con la mia fascia cardiaca ADIDAS mentre mia moglie usava il MIO LINK! 5 sensori connessi in contemporanea.

I risultati cominciavano a giungere. Resi così definitiva l’elettronica della ormai così chiamata “ANTENNA”. In un box metallico alloggiai la scheda con Arduino + il modulo Nordic e fissai l’antenna al case connettendola con un cavo acquistato durante i test.

Potenziai il software di interfaccia lato utente consentendo la gestione dell’anagrafica utente, l’associazione del sensore alla persona che lo indossa, il monitoring in tempo reale, analisi e grafici durante la sessione di allenamento, calcolo della densità e qualità del lavoro, zone cardiache di lavoro e statistiche dettagliate a conclusione.

Nacque il nome di Sistema Telemetria Fitness Arduino ANT+.

Diverse sono le finalità del sistema:

  • consentire all’istruttore di monitorare la qualità del lavoro dei partecipanti – gli consente di spingerli ai livelli che vuole ottenere da quello specifico allenamento – può programmare una sessione collettiva e mantenere costante il livello tra i partecipanti
  • rende consapevoli i partecipanti del lavoro che stanno conducendo e creandone il totale nel tempo fornisce parametri per stimare gli obiettivi raggiunti
  • visualizzando la zona nella quale ci si trova in tempo reale informa su come si comporta la risposta del sistema cardiaco allo sforzo richiesto
  • eseguendo statistiche nel tempo ci rivela se il nostro corpo è progressivamente migliorato con l’allenamento
  • dà uno scopo ben preciso: esempio, se voglio allenare la resistenza devo stare per la maggior parte del tempo in zona anaerobica

Il sistema funziona seguendo il seguente flusso:

  • l’istruttore fa indossare i sensori ai partecipanti
  • dal PC, dopo che questi si è connesso al modulo antenna, avvia la “ricerca” nodi ANT+
  • dopo che i sensori sono stati individuati associa gli utenti
    • manualmente se gli utenti usano un sensore condiviso, ad esempio fornito dalla palestra
      • se l’utente è occasionale viene inserito in quel momento
      • se l’utente è un abitudinario viene associato dall’anagrafica degli utenti memorizzati
    • automaticamente se l’utente è proprietario del sensore. Cioè ad esempio se vado io che ho in dotazione la mia fascia cardiaca, appena entro nella sessione, il sistema riconoscendo la mia fascia cardio associa il mio profilo con tutti i miei dati, il gioco è fatto
  • a questo punto l’istruttore avvia il TRACKING e visualizza in tempo reale i dati della frequenza cardiaca, tutti si preparano ad iniziale l’allenamento
  • appena inizia l’allenamento l’istruttore avvia la REGISTRAZIONE ed a questo punto il sistema si anima, registrando e visualizzando i seguenti dati
    • data, ora e tempo dell’allenamento
    • stato del sistema

per tutti i partecipanti vengono visualizzati i seguenti dati

  • frequenza cardiaca in tempo reale e frequenza massima personale
  • zona cardiaca nella quale ci si trova con colorazione dell’indicatore della frequenza, descrizione e totalizzazione percentuale durante l’allenamento
  • numero di pulsazioni cardiache dall’inizio
  • calorie consumate in tempo reale
  • frequenza cardiaca media durante l’allenamento
  • calorie al minuto medie
  • qualità del lavoro e distribuzione della frequenza con grafico ad istogrammi
  • grafico generale dell’andamento della frequenza nel tempo
  • a fine sessione l’istruttore termina la registrazione e può
    • registrare la sessione per tutti gli utenti.
      Il sistema registra la sessione nei seguenti formati:

      • Report, un file in formato XML utile per le future funzionalità di aggregazione dati per utente, statistiche personalizzate, etc.
      • TCX report, un file di interscambio ormai adottato da tutti i software di cardio fitness e relativi siti web
      • Immagine PNG, un file grafico, una immagine vera e propria che può essere spedita via email all’utente o salvato su pennetta USB localmente
    • Visualizzare la sessione live sul monitor per poterla commentare con gli utenti stessi e proporre un piano di allenamento specifico

Il sistema attualmente è ancora in via di sviluppo e test e presto implementerà funzionalità come l’invio della sessione di lavoro via email ai partecipanti, le statistiche delle varie sessioni di allenamento.

Caratteristiche del progetto:

  • sistema sviluppato intorno ad Arduino su scheda estremamente compatta e portatile
  • 100% compatibile ANT+ e con tutti i sensori di questa tecnologia
  • interfaccia PC funzionante su diversi sistemi operativi: WINDOWS, LINUX, MAC
  • estrema facilità d’uso, quasi Plug’N’Play
  • gestione avanzata degli utenti
  • statistiche e facile interpretazione dei dati
  • file generati in diversi formati, esportabilità e compatibilità praticamente con tutti i sistemi fitness in circolazione (giusto per citarne qualcuno… Runtastic, Endomondo, Sport Tracker, SportsTrackLive, Strava, Nike+ ed altri…)