Ant + protocol

Hey everybody,

I wanted to ask if anybody had managed or considered to interface gear with the arduino using the ant+ protocols? I know that ANT is proprietary but this is what they had to say regarding being open:

"Some argue that a big drawback of proprietary technology is lack of interoperability. However, that’s not a
problem for ANT because of the introduction of the ANT+ managed networks. An example is ANT+ Sport.
This hybrid model offers the benefits of the ANT protocol combined with an open, interoperable managed
network (featuring pre-defined device types and data formats) while preventing ANT from becoming
entrenched by the standards setting process and allowing the manufacturers to continue optimising ANT’s
ultra-low power attributes."

Any thoughts?

"Some argue that a big drawback of proprietary technology is lack of interoperability. However, that’s not a
problem for ANT because of the introduction of the ANT+ managed networks. An example is ANT+ Sport.
This hybrid model offers the benefits of the ANT protocol combined with an open, interoperable managed
network (featuring pre-defined device types and data formats) while preventing ANT from becoming
entrenched by the standards setting process and allowing the manufacturers to continue optimising ANT’s
ultra-low power attributes."

Sounds like a bunch of crap to me. Standards are a good thing. Justifying not having standards is plain stupid.

I have played with ANT a bit for my forthcoming micropower-Arduino project. I posted some very quick & dirty interface code here and an EAGLE breakout board for the pre-assembled modules, but got busy with some other stuff and haven't got around to making it into a library yet. That code does work though :slight_smile:

If you don't want to decode it on the device end, there is source code around for PC clients (such as libfitbit) that can probably serve as a starting point to interfacing a specific device. If you have a specific device in mind, check around in case someone has already done the work to reverse-engineer its protocol; may save you a lot of time!

So far I have only used ANT radios to talk between my own microcontroller boards (or microcontroller board to ANT USB radio stick); I haven't tried talking to an ANT+ (or any other 3rd-party) gadget. I also haven't looked much at the "+" standards, but I remember them being pretty well-defined for the published ANT+ profiles. If you can, dig up documentation for ".FIT file format" and "ANT-FS"; two related standards a given ANT+ device might use. You might have to sign up an account on their Web site or buy a development kit (or use google-fu...) to download those standards though.

As implied by the "not-quite-a-standard" rhetoric, if the device does not conform to one of the published ANT+ profiles (of which there are just a handful), including having vendor-defined fields you want to access, you will probably have to do some amount of device-specific coding for the particular ANT+ (sport, etc.) device you want to talk to. I don't know the rules on what gets to be marked as an "ANT+" device, but my understanding is that the data for any published profile device will be accessible by any ANT receiver using the 8-byte key defined by the profile. (Some ANT (non-"+") devices are on so-called private networks; to get anything from them you have to know - or reverse engineer - a secret 8-byte key. Fortunately these keys are a somewhat poorly-kept secret (google is your friend) for most of the well-known manufacturers, and many of those devices' protocols are reverse-engineered already.)

Hi Drmn4ea,

Thank you so much for your thorough reply. I will have a look at it now and see if I can get anything working. With all the sports gear manufacturers switching to this standard including Sony mobile phones it will be the only way to interact with them. I´m working on building some data loggers, hopefully being able to fuse the outputs of two different systems to one microprocessor. As soon as I have something to show I will be posting here.

Thanks!

Just an fyi for anyone reading this thread, I'm in the process of developing a high level ANT driver based off the popular XBee driver xbee-arduino by Andrew Rapp. See GitHub - cujomalainey/ant-arduino: An implementation of a ANT driver for Arduino, Mbed and ESP-IDF