Fitness Telemetry System Arduino ANT+

When I was young I used to went to the gym to built a strong and healthy body. During the time, for different reasons, the work and the family catch my free time and I didn’t have any more time for my extra activities even if as soon as I could I often came back to the gym. Some years ago I decided to get an annual subscription. During that year I used to practise fitness activities like tapis-roulant or walking. Essentially is a simulated walking on a special conveyor with a fixed inclination and not motorized. The walker simulates an uphill road with an integrated mechanical system to change the force needed by the user to walk on. The lesson is structured in such a way to alternate pure cardio-fitness activities to muscle one. The total lesson duration is about 45 minutes. In the meantime, I tried to learn as much as possible about such activities and I discovered that the theory part behind. When a person practices cardio-fitness activities, to ensure the effectiveness of the training there must be considered the whole quality of the entire session. At a first step, I bought a heart rate monitor, a watch capable to read in real time the frequency of the heart electrically transmitted by a chest belt.

A device, wearable, read the heart rate and calculates some statistical values. So I decided to buy a cheaper but well balanced in the quality device. My choice fell on SIGMA PC25.10. Setting my data in term of age, weight and height I could get:

  • total training time
  • calories burned in real time during the session and the total amount at the end
  • the percentage in term of time in every cardio-zone
  • an index giving an idea of the total quality of the training activity (index only)

What are cardio-zones? Depending on the age it is possible to calculate the maximum heart rate. The Internet is full of documentation on this argument. Knowing this parameter it is possible to determine the value of every cardio-zone. They are computed as a percentage of the maximum as follow:

  • less than 60% – recovery/warm-up – under the value of 60% of the maximum heart rate our activity is in the range of resting or warming-up
  • from 60% to 70% – fat burn zone – the metabolism is working consuming and burning as many fats as it can
  • from 70% to 80% – aerobic zone – it is the zone in which our body works better because it increases the strongness and involves the whole health of the cardiovascular system
  • from 80% to 90% – anaerobic zone – it is the zone where the power grows and we can train to increase the physical endurance
  • from 90% to 100% – maximum zone – it is the zone where we can train for explosiveness but we must stay in this zone as less as possible
  • from 100% and more – over the maximum zone – normally in this zone aren’t permitted to stay.

As soon as I started monitoring the heart rate, I prepared a MS Excel worksheet on which I collected all the data during the training sessions. The idea behind this was to aggregate data for further analysis like to estimate the progress at a long time or understand if a session was effective or had some lacks in term of quality.

In the same period, I start to practise jogging and reporting data to the same sheet to distinguish how different training activities could impact on the overall performances.

During the running sessions, there were a set of new needs that there weren’t into the walking ones. To get a range of quality data into the running sessions I needed to collect distances and timing associated with the heart monitoring data. So the next step was to use a device capable of collecting this data at one point. I decided to use my smartphone and apps like Runtustic, Sport Tracker and so on. One of the restrictions I found in software like this is that the user is constrained to use specific products to obtain the reading of the heart rate. So after initial usage and experimentation, I discharged the immediately. So I started searching for a compatible device able to read signals from my SIGMA PC25.10 heart chest belt monitor, but I discovered, involving the SIGMA Company also, that the chest belt uses a proprietary communication protocol closed-source and aren’t available possibilities to exchange data with smartphone directly. At that time I’m thinking, as an alternative, at communication possibilities driven by Bluetooth.

I searched on the internet for any information I could for communication possibilities between wearable devices and smartphones. I discovered an innovative and extremely versatile technology specifically developed for this purpose: ANT+. Incredibly my Samsung Galaxy S4 had ANT+ communication capabilities integrated natively.

I bought, via eBay, my first ANT+ chest belt heart rate monitor produced by ADIDAS MyCoach with wearable mini-watch included through I could see direcly the heart rate readed by the chest belt (whitout any other information!). In the Google Store I found immediatly some apps for ANDROID. The first one attract me was ENDOMONDO that was natively able to read the heart rate from the chest belt without any effort. And the second one was SportsTrackLive, that at the moment of writing this article is, according to me, the best software for function and interface and capable of catch-up ANT+ and Bluetooth protocol. So my choice fell up to this last one.

Note on ANT+ technology

It is a technology born by union of different companies that are involved into different fields with the common target to develop a interoperability system, essentially “OPEN” to interconnect biometric devices and instrumentation. An official website give us a huge quantity of information and resources, like documentation, pieces of software, a list of partners and their own products, instructions and a key-mode to enter in the system giving the possibility to develop your own ANT+ technologically compliant subsystems or products. The good news is that the ANT+ network give us a level of freedom and interoperability that nobody else could give, included the Bluetooth technology. Let imagine that a single sensor could be read by different nodes at the same time and that some nodes could act as bridge extending the total wireless range of the whole network. A wide range of devices are actually present on the market and many other are under production. Heart rate monitor, bio-impedance scales, blood-oxygen sensors, pedometer, bike speed and cadence sensors, racket sensor are only some examples of the type of sensors available. The whole documentation is available on the official website at

Reading the official website and the documentation on it, my brain turned on, I got the idea! I needed to build my own remote fitness telemetry system to test in the gym. After the initial time, I faced at to ways:

  • to use a USB ANT+ stick (of course, a GARMIN model, one of the biggest company into the ANT+ Symposium) coupled with a dedicated PC (and relative software on it)
  • to develop an embedded board with an ANT+ radio module capable to send the data pre-computed to a software on a remote PC able to compute the final data with statistics and give a live-session to show how fitness session is progressing

What do you think about my choice?
Of course, the second one and my choice was determined by:

  • short range of the signal (in term of distance)
    this issues was confirmed by official technical documentation and by a series of my own tests with my ANT+ cheast belt. The electromagnetic signal emitted by the sensor is really low power level (it is simple to understand because the sensor is really closer to the body)
  • the ANT+ USB drive constrain me to utilize a specific software development environment that I want to keep out of my projects: the .NET framework!
  • and in my mind, there is the idea to realize a never existed before system, simple, expandable, ergonomic and funny!

After consulting the base documentation my choice fell up a Nordic Semiconductors that produces a radio module called nRF24AP2 ( There are two kinds of nRF24 module: the first one capable to manage only one radio channel and a special module capable to manage eight channels at the same time. I bought the last one model.

For the main processor I selected the Arduino Pro Mini, version 3.3V – 8MHz to obtain electric compatibility with the Nordic radio module and to contain spaces. I began to write a my own Arduino library to connect the main processor to the radio module and exchanging data. My trainer would like to support my project and bought some heart rate monitors from WTek.  We took the HS-2+. I bought a MIO LINK Green Lemon. So we got 5 sensors to test the system.

When all the components were ready I started with the test phase. My first focus was to stabilize the communication library between Arduino and the nRF24 radio module. So I was able to test the communication with one heart rate sensor. After a few sets of test and data collecting, I reached the idea that the module had a low level of sensitivity to the radio signal and when the distance grows the signal is lost and to catch-up again it takes a lot of time. After an intensive test with different sensors, my conclusion was that the radio module is not a good solution for a gym session. Surfing on the network I found a special version of the module that could be equipped, through an SMA connector, with an external antenna. So I searched and found an amplified antenna with a gain level of 20dBi.

My choice was perfectly right! The total range of the module began enough to cover a gym room and the gained sensitivity permitted to the radio section to be immune to some noises. So was the turn of the software developing to support up to 8 channels for simultaneous communication.  I wrote the PC interface also using PROCESSING and a communication protocol between the application on the PC and one on the Arduino main processor. I used to connect those parts by a USB / TTL serial converter, totally integrated into the USB plug: the PHA2303X.

After a long-time test session in my room, I decided to start a session directly into the fitness room of my favourite gym. Some friends are monitored along the training with different sensors like WTek and Adidas one. During some sessions, I and my wife were present as participants, monitoring even with other sensors reaching the total number of 5 people monitored.

The first results are really good. So I finalized the electrical project of the so-called “ANTENNA”. Within a metal box, I inserted the circuit between ARDUINO and the Nordic Radio Module. I installed an antenna support outside the box fixing definitively the antenna with a special high-frequency antenna cable.

I developed, in the next phase, I optimized the PC end-user interface enabling the association between a sensor and a user that wears-up, managing the whole data of the user like age, weight, height and so on. A special page of the software is capable of showing real-time data along the sessions with analysis and graphics, statistics for every heart zone.

So the system get the name Fitness Telemetry System Arduino ANT+.

The system had different targets:

  • it enables the trainer to monitor the fitness quality of the participants – the trainer can push the people up to the level him would reach from that specific training – can arrange a session maintaining some level of force and resistance
  • all participants became aware of their own bodywork, providing values and focus people to a specific target
  • facing the heart zone informs on how cardiovascular system reacts depending on what charge is active at that moment
  • with statistics let know how our body becomes better under training
  • it gives us a precise scope: for instance, if I need to train my resistance, I need to stay as long as possible into the anaerobic zone.

The system flow is the following:

  • the trainer let wear sensors to the participants
  • from the PC, after the antenna module is connected, he starts the searching for ANT+ nodes
  • after sensors are discovered into the network, he associates them to the people
    • manually if the participant uses a shared sensor, for example, if provided by the gym
      • if the user is a casual one, the sensor is provided to him at that moment
      • if the user is a follower then it can be connected to a database list
    • automatically if the user is the owner of the sensor. So if a registered into database user enter into the gym the system is able to recognize the serial number of the sensor and activate the user automatically, without the need of trainer intervention and the game is on
  • the trainer starts the TRACKING, the system switch to real-time monitoring mode displaying the heart rate value for all users registered into the active session, all participants get ready to really start the training
  • when all people are ready to go, the trainer starts the RECORDING. The system gets graphically animation recording all data and displaying the following information
    • date, hour and training time
    • system status

for the individuals, the following data are displayed

  • heart rate in real-time, medium and maximum heart rate reached
  • the range of different heart zones, a graphical pointer indicating in which zone the user is, textual description, zones totalization
  • heartbeats from the beginning of the training
  • calories burned at a real-time interval
  • calories distributed for minutes
  • training quality displayed by a heart rate distribution bar-graph
  • global graphic of the zone and heart rates along the time
  • at the end of the session, the trainer can stop the recording and
    • save the session data for all the users
      The system is able to save data simultaneously into this formats

      • a report, essentially an XML file for further elaboration or, because the open-nature of the file, for exchanging between other applications, for improved statistics or data aggregation, and so on…
      • a TCX report, an exchanging file adopted by a wide range of fitness software available on the market or by services available online
      • a PNG image, essentially an image, intended to be sent via e-mail or saved on a PENDRIVE
    • Display the final results to be discussed and shared with the participants

Actually, the system is under development and as soon as possible it will implement new functionalities like result e-mail sending to the users with all data and graphics.

Overall system characteristics:

  • data capture system base on Arduino built inside a circuit extremely compact and light
  • fully ANT+ compliant and supports the global sensors available actually on the market
  • PC interface and application available on different operative systems: WINDOWS, LINUX, MAC
  • extremely simple to use thanks to Plug’N’Play philosophy
  • advance user management
  • statistics powered by many data, quite simple to understand
  • different file formats supported to permit the user to exchange data as it would.  Just for mention some available software: Runtastic, Endomondo, Sport Tracker, SportsTrackLive, Strava, Nike+ and so on…