As a sportsman, I always liked to monitor the sports I practice. Once time, I used a cell phone attached to my arm to monitor how much I ran a soccer match. Then I started using the Nike Fuelband that has a very good gamification system and I used it for almost two years to monitor my workouts. My bike tours also always been a fun where my phone was attached to the bike and this way tracking my ride on the streets. In this case in particular I liked to make “drawings” through the city streets as you can see in the images below (more pictures on my behance)
Like at Manaus/Amazon – Space Needle at Seattle/EUA – Cactus at Guadalajara/MEX
When Microsoft released Microsoft Band I got really excited, especially because it is not a product in the same smartwatches line that other companies were adopting but a product in the fitness line helping to monitor the health and also serving as notifications of what happens in my mobile phone. Microsoft Band has several interesting sensors as: Heartbeat, ultra-violet rays, skin temperature, GPS, accelerometer, microphone and others.
The SDK (Software Develpoment Kit) for the Band was released in February/2015 and I, as a mobile developer passionate about sports, could not fail to make an app for the Band. In this year of 2015 I am participating in the CDC Kart Cup and for the second race of the championship I made an application for my Windows Phone that communicates with the Band, the goal of app was:
1) notify the driver with the lap time info
2) notify the driver with the maximum heart rate that it had during the race and an average heart rate as well.
3) notify the driver with the maximum skin temperature and skin temperature average (not important to the case, but only to explore the sensor)
4) Record the GPS data throughout the race in order to calculate speed, position on the track and gravitational force. also known as G-Force
By using the SDK, I realized that the system is quite simple. Developers must not develop an application that runs in the Band, but develop an application for Windows Phone (or Android or iOS because the SDK also covers other mobile platforms). A mobile application communicates with the Band for 3 summary features:
1) Create/Remove Tiles in the Band
2) Read sensors from the Band
3) Send notifications and messages to the Band
In the case of Kart app, I made an app that reads the heartbeat sensor and skin temperature sensor from the Band. The GPS coordinates are read from the phone itself. Although the Band have a GPS sensor, it does not expose to the developer the ability to get the GPS coordinates. This is a very logical reason: all current smartphone also features GPS and most likely the cell and the Band will be with the person at the same time, ie, at the same GPS position.
The app then monitors the above data and sends notifications to the Band so informing the driver of the lap time, heart rate and skin temperature.
The source code of the app is available in my GitHub account. Take a look there!
The most important information: the lap time, is calculated by a GPS position I set in the phone app (attached in my arm). The GPS point I set after qualify lap and before start the race. The app checkpoint on the track is not the same official checkpoint track system, since the official checkpoint is at the finish line and the application checkpoint ended up being the end of the last curve before the finish line
As time is a very important information in a race, I did a comparison of the times calculated by the application and the official time of Kart track. Below is a comparison:
Lap Official Time App Time Diff
1 1:06.12 1:06.26 +00.24
2 1:06.82 1:07.82 +01.00
3 1:11.70 1:10.58 -01.12
4 1:06.44 1:07.45 +01.01
5 1:05.86 1:06.06 +00.20
6 1:08.01 1:08.09 +00.08 (closer)
7 1:05.88 1:06.12 +00.24
8 1:06.01 1:07.18 +01.17
9 1:07.80 1:07.33 -00.47
10 1:06.23 1:06.53 +00.30
11 1:07.54 1:08.04 +00.50
12 1:06.73 1:06.33 -00.40
13 1:05.98 1:06.11 +00.13
14 1:06.76 1:06.31 -00.45
15 1:05.74 1:08.53 +02.79 (further)
16 1:05.72 1:05.10 -00.62
If we get out the closer time and the further time from table above and calculate an average, we have a standard difference of 0.56 seconds. Then you decide: the 0.56 seconds is a satisfactory difference? In my opinion is a reference time, which helps the driver to know if that curve slightly closed or an increase on zebra worsened or improved the lap time. Therefore for me it was worth it to know times.
With a GoPro camera attached to my helmet I recorded the whole race where you can see me being notified by Band of lap times. The video is edited with a visual layer where you can also view the speed data, heart rate and temperature of my skin, and a nice graph showing the G-Force and kart track position.
Abstract video version on channel9
FULL RACE version on youtube: https://www.youtube.com/watch?v=5RvvSJ21L9Y
The app developed recorded all the GPS positions every 1 second in a GPX file format. This file format is used in sports applications such as Sports Tracker and stores not only the GPS positions as well as heart rate and temperature. Once saved the file on the phone, I added a function in the application to connect on my personal OndeDrive and upload there, that way then I could download the .GPX file on my computer.
To make the visual layer in the video showing the Band, the track and the G-Force, I used a software called Dashware whose company was recently acquired by GoPro and made the software free, anyone can download and use the software freely.
The Dashware offers various gauges, which are visual components, but, of course, there was no gauge with the look of the band, so I created one :)! If someone else wants to use the component can download it here: Microsoft Band
I empower developers to build awesome apps