CycleOps Pro300 PT to ANT+, Part 2, Details

Part 1, Identify the signals

After getting the bike and cleaning it up I started to follow each wire though the bike to identify what plugs into where. Overall the wiring is really simple. The hub of the freewheel in the back has all of the processing electronics inside of it and 2 AA batteries.

I do want to say how useful and downright interesting FCC documents are when first looking at unknown commercial hardware. FCC ID T8P-SL2P402 . They also have some great photos of the internals of the torque tube. From the FCC report we can find out that the hub is using 2.4GHz (same as ANT+ but this isn’t ANT+) but most likely back when this was build in 2007 they hadn’t yet figured out how to get the transmission power needed to get the range while keeping power consumption to reasonable levels (totally my guess). So they went with the approach of putting a receive very close to the hub to relay the data back to the head unit. My guess is this exact same protocol was used on the early wired PowerTap hubs.

Thankfully the connector used between the computer and the cable that runs to the rear pickup is a very common Molex Micro-Fit. I made a pass though cable that allowed for easy access to all the pins while keeping the rear pickup connected to the head unit

Some poking around with the Oscilloscope and I had the pinout figured out

PinFunctionWire Color
12.95VGreen
2DataWhite
3NothingBlack
4GNDRed

Let the fun begin, out comes the Logic Analyzer

I’ve done enough work with digital circuits and your run of the mill digital communication protocols to have some idea what to look for but this was my first time going in with no idea and no documentation to turn to for reference. The first 2 days was spent just watching as I applied force to the crank without turning, then  letting the cranks spin with no force applied just to see how the signal changed.

Logic for 0 Speed.jpg
A single packet of data

A packet would be sent every 1.043secPacket Repeat.jpg

I started by thinking it was just your run of the mill asynchronous serial. I found the shortest pulse in any given chain 1.535ms and assumed (1/0.001535) = 651.4, call it 650baud rate. After trying this and other with every combination of data bit, stop bit and start bit I quickly came to the conclusion this was not right. There really were no start or stop bits.

I know that the torque and speed data must be sent with each packet as both would be displayed on the stock head unit and I could see how the bits shifted depending on if only torque or only speed was applied

The great discovery was that the starting pattern told me everything.

  1. 4 bits of data in 7.249ms = 1.812ms per bit (The code uses 1.770)
  2. 6 bits of 0s in 9.152ms = 1.525ms per bit (The code uses 1.545)
  3. Repeat

Once I had this variable bit rate figured out the rest just fell into place

I doubt the method I came up with is the most elegant way to work with this data but it worked for me.

6 comments on “CycleOps Pro300 PT to ANT+, Part 2, Details”

    • Everything is working perfectly. I’ve had the circuit running on a breadboard for the last month or so waiting for some parts from China to arrive. The last part should arrive tomorrow and I will transplant the circuit into a nice box to mount onto the bike. I’ve just added an update on how I calibrated the torque and wheel speed

  1. Just read your update – looks good. Have you been using a pre-made breakout for ANT+ with the Arduino? I haven’t played around with electronics for ages, but keen to try something like this.

    Guessing the parts from China are a custom PCB?

    • John, thanks for the feedback and post suggestions, my next post will be a mini how-to for people who want to build this themself.

      The ANT+ Module I used is from
      https://www.aliexpress.com/item/F10644-NRF24AP2-Channel-1-Networking-Module/32472485832.html
      Took about 4 weeks to get to the east coast of the US but works perfectly. The descriptions calls it Channel 1 but it is the 8 channel version of the NRF24AP2. Meaning it could connect to up to 8 ANT+ devices at once.

      The last week was spent rebuilding the circuit from the breadboard I have posted pictures of into a small project box with an OLCD display and Arduino Pro Micro running at 3.3V to get rid of the level converters.

      • Sweet – I look forward to it!

        I’ve ordered myself a Nordic ANT+ dev board from Mouser, that hopefully I can play with next week when it arrives.

        With the Molex connectors, is it possible to get them in a form that doesn’t need a crimp tool? Maybe pre-assembled connectors or suchlike? I would take some cutters to the cable, but I don’t actually own the bike…

Leave a Reply to John Cancel reply

Your email address will not be published. Required fields are marked *

Copyright blinkyme 2024
Tech Nerd theme designed by Siteturner