Wednesday, 21 August 2013

Bigger displays! No medium sized displays.

The character height of the displays that came with the dx.com modules was 10mm.

This was fine when testing but not large enough to be seen well out on the track.

Upsizing seemed like the sensible thing to do. Let's try doubling to 20mm (https://www.sparkfun.com/products/11405 -- common cathode with same pinouts).

  After some soldering and extension so the displays fit:



 Looks great - real advertisement potential there.

 Let's try it on the hat. Uh-oh, now we are too big to run with and it flaps about.

 Let's try and find a display that is just right:
 I decided to go with these ones  (http://www.digikey.com/product-detail/en/LDQ-N516RI/67-1450-ND/252641) as the unit is a one off and the slightly more orange-than-red colour fit in with the aesthetics more. I got a few of these cheaper ones just to have as spares too (http://www.digikey.com/product-detail/en/LTC-5723HR/160-1879-ND/3198988).

Just right....


Software - ANT+

There was not much refined software out there for talking to ANT devices from Arduino.

I took the code at Digital Hack's Blog (http://digitalhacksblog.blogspot.com.au/2012_10_01_archive.html) as a starting point (Thanks!) and tidied it up and created a slightly more useable library.

This is at: https://github.com/brodykenrick/ANTPlus_Arduino

The library talks to ANT+ devices, like nRF24AP1/2, over UART. It allows for simple setting up of channels and receiving broadcast messages.

The trouble with Garmin GPS devices....

It turns out that you can't actually talk to a Garmin Forerunner 410 GPS in a meaningful way out on the road.

I wanted to get the distance information essentially in real time. It turns out this is not possible.

 I did some testing against my USB ANT+ Stick that came with my Gamrin Forerunner and a modified version of the Python ANT Downloader on Ubuntu (https://github.com/brodykenrick/python-ant-downloader).

You can only get ANT-FS "files" for download from a FR410 after a run. Never anything (useful) during the run.

 See http://www.thisisant.com/forum/viewthread/4059/

That meant that we wouldn't be getting any distance info out of the watch. Not what we wanted. Was it just going to display messages and no real time info?

 Luckily there is another way to get distance information from the Garmin ecosystem. The Garmin Foot-pod.

 So now rather than integrate with GPS we are integrating with the Foot-pod sensor directly. As an added benefit we'll be able to display stride counts too!

Software - 7-Segment Display (MAX7219)

I rewrote the  Arduino LEDControl (http://playground.arduino.cc/Main/LedControl) to do all ASCII characters. Some good, some OK and a few bad.

https://github.com/brodykenrick/MAX72xx_SPI_Arduino

I added a greater range of characters, support for double-wide characters (like M and W) and generally made it better for use as a alpha+numeric display (rather than just numbers).

What would we need?


What would it take to make this display?
  • A micro-controller
  • A power source
  • An ANT+ module
  • A display 
  • An ANT+ source of distance information (Garmin Forerunner 410 Foot-pod)

MCU
I have quite few Arduino boards lying around, so that seemed to be the easy choice on the processor. I ended up using a Tinyduino (Tinyduino) and an Arduino Pro Mini (link) in my two separate iterations.

 Power
I also have some LiPo batteries around from other projects. Lightweight and powerful (link).

A display
7-segment displays are cool in my opinion and so that was the display I decided would make most sense (in spite of the difficulty in getting some letters represented). These seemed to be good and cheap options based on the MAX7219 (http://dx.com/p/8-segment-led-display-board-module-for-arduino-147814) and cheaper than I could get the main chip for myself.

ANT+
An ANT+ module for talking to the Garmin. This would need to be purchased. The sparkfun modules (link) seemed good - however they weren't available anywhere. I ended up buying from Goodluckbuy.com in China (http://www.goodluckbuy.com/nrf24ap2-wireless-module-zigbee-module.html)

Source
I have a Garmin Forerunner 410, Heart Rate Monitor and Foot-pod.

What we wanted to create

My girlfriend is training for the Sydney Running Festival Marathon (September 2013). The training is with a group called CanToo that raise money for cancer research and offer professional training and a great group of people for spending the many hard number hours out on the road.

In order to make the training a bit more fun and to advertise both the CanToo cause and the effort and distances being run we came up with the idea of a wearable device worn whilst running that would indicate to bystanders the distances of the training runs and allow for a few other messages.

We wanted to be able to display on the back of a hat the distance that a Garmin GPS had measured for a run, the distance left for the day and some motivational messages for fun and general support.

The thinking was to create a hat mountable display that could connect to a Garmin Forerunner 410 (over ANT) and read out the distance for the run and display.


Arduino and ANT+ and 7-segment displays

What do you get when you combine: Arduino, ANT+ (Heart-rate-monitor & Foot-pod) and 7-segment displays?

A pretty strange device worn on a runner's hat that I am calling the Retro Runner Readout.

I wanted to document the details online in case someone wants to follow down this same path of wearable runner's tech.


Here is a shot of it in "inaction":