Welcome Guest,Register Now
Log In

ANT Forum

Welcome guest, please Login or Register

   

Speed&Cadence; multi profile

Rank

Total Posts: 8

Joined 2018-05-22

PM

Hello.
I have a question.
1. In profile, Combined speed and cadence is only send data in page 0?
Couldn't get any data ? like battery, Serial etc..
2. If I use one MCU(nrf52832) and want to send individual speed(master) and cadence(master) data, the way is just open two channel and send data? is there any other collision or Frequency problem?
3.If I use one MCU and send seperate cadence and speed data (different channel), the licence fee is double? or it like one ant+ device?
thank you.
     
RankRankRankRank

Total Posts: 370

Joined 2012-06-27

PM

For Combined Bike Speed & Cadence (S&C) there is only the single page defined. Byte 0, which normally indicates the page number, is used to communicate cadence event time. This means that all the data can be packed into a single transmission, but unfortunately as you have discovered means that there is no flexibility in adding pages.

Yes you will need to implement two channels (or can even implement 3 including the combined profile). One channel will implement the Cadence profile (section 6 of the profile document), and the other the Speed profile (section 5 of the profile document). ANT manages coexistence of the channels internally within the radio stack. ANT and ANT+ supports the coexistence of multiple devices of the same type, or different types within the same physical space.

With multiple profiles implemented in your device, you will need to submit a certification request for both profiles. A tool for estimating certification cost can be found at https://www.thisisant.com/certRequest/v3/feeEstimator.php#.

Licencing is based on the volume of nrf52832 devices you are using, not the number of profiles each device implements (see https://www.thisisant.com/developer/components/nrf52832/ for more details).

Please let me know if I can be of further assistance.      

Signature

Ian Haigh

Rank

Total Posts: 8

Joined 2018-05-22

PM

Thank you for you reply

As I question, I try one mcu and 2 profile broadcasting Cadence and Speed.
but still happend collision two channel.
I open channel speed and start broadcasting, after that I open another channel start broadcasting.
first collision happend almost as soon as open two channel. after that periodly( 2 ~3min or more later) happed two channel collision.
Does I need another func? (ex. time slot API?)
I try seperate mcu(2 of 52832) and individually open , the collision not happend.
I use s332 and 52832.
Couly you give me any advise?


     
RankRankRankRank

Total Posts: 370

Joined 2012-06-27

PM

So long as you are getting only a few channel periods of collisions at a time, this is expected.

This occurs every couple minutes because the channel periods are slightly different and walk across each other. The radio resources are busy handling one of the channels and are unable to handle the second channel. When you are using two different MCUs, you won't see the collision event because this event indicates the hardware level contention. However, if you were to use a receiver to observe the channels you will likely see RX fails occur on the same 2 minute timings as a result of over the air interference.      

Signature

Ian Haigh

Rank

Total Posts: 8

Joined 2018-05-22

PM

Thank you for your kind

So you means,
In one MCU, it can be broadcasting several profile several master, but it can not avoid slightly Channel collision.
and this collision is enough expect.
Does any can remove this collision or reduce? because of the period is slightly different, Nothing to do??
     
RankRankRankRank

Total Posts: 370

Joined 2012-06-27

PM

Yes, because the channel periods are slightly different, there will always be a small number of collisions periodically. This is perfectly acceptable for the performance of the profiles. You do not need to do anything about it. You cannot do anything from an application perspective to improve this behavior. We design the channel periods for related profiles to behave in an acceptable manner.

In cases where the periods are identical or multiples of one another, you can use the offset argument to the sd_ant_channel_open_with_offset call to control the spacing.      

Signature

Ian Haigh

Rank

Total Posts: 8

Joined 2018-05-22

PM

I tried test a case.
using 52832, 15.3.0 SDK and S332 Softdevice.
It opened each channel Speed and cadence separately on one MCU.
Data was controlled Speed is 30 km/h and RPM is 60.
Then Connect garmin Edge 820 device.
Connect was successful and data also display what i expect.
problem is here. when collision was happened, temperately display value is down
For instance, 30 30 30 30 (collision happened) 28 25 24 20 (END) 25 28 30 30 30...
The value and count is not exactly. refer to the flow. Cadence value was also that.
Collision is happened periodly almost 2 min.
When took data from usb dongle, collision data is exactly 16 time per collision.
ex) 1 = collision, 0 = normal
Speed 0 1 0 0 1 1 0 0 1 0 1 1 1 0 1 0
Cadence 1 0 1 1 0 0 1 1 0 1 0 0 0 1 0 1
one channel is collision and another channel can send data.
and the count of collision is exactly half and half.

test result is normal? Is it enough expect case when collision is happened?
In my opinion, if it use cycling situation, it can't be use. Value is not correct value when collision is happened.
If assume 16 packets per 2 min, 4 seconds can't reliable per 2 min garmin edge and user perspective .
On garmin edge, is there any procedure or some rules if rx failed?

Thany you .      
RankRankRankRank

Total Posts: 370

Joined 2012-06-27

PM

This collision behavior is normal. For the speed or cadence profiles, every page contains the speed or cadence information. In your case you would see at most 3 channel periods where the display does not update. Many displays only update at a lower rate such as 1 Hz, so this would not be perceivable.

I cannot replicate the behavior where the display values dip while collisions occur. I am wondering if it is related to a detection of "coasting" on the Edge. How are you encoding the page data while collisions are occurring? For example: are the event time and revolution count both updating together, are you updating the page transmission every collision by handling the collision event, or is the transmitted page content constant through the collisions?

Ian      

Signature

Ian Haigh

Rank

Total Posts: 8

Joined 2018-05-22

PM

You means that most displays update lower rate (1 or 2 Hz?), Don't need update 4Hz only?
Garmin edge devices update 1Hz? In profile, can update up to 4Hz, so I thought should update 4Hz.

I didn't use coasting Detection. When you Simulated( one muc and 2 profiles), did not happend collision?
If collision does not happened, what channel period did set(1Hz or 2Hz)?
I encode every time and revolution count together when Tx event happened. so I think while collision, not encode.
when collision was happened, I didn't do anything.
If collision is happened, one of two channel receive normal data and another can't receive data, and data of the display that received data is constant data.

     
RankRankRankRank

Total Posts: 370

Joined 2012-06-27

PM

The profile defines the transmission rate at ~4 Hz, so you should update the content at this rate if possible, but receiving devices may not refresh their displays every time a page is received. Many displays implement a time synchronous update to allow changes from multiple sources to be encapsulated into a single display refresh. This may be at any rate the implementer has chosen. The display device may choose to display a decimation of this data, add filtering, etc as part of their product design considerations.

I believe Edge bike computers implement such a scheme, and choose to update what is displayed to users at 1 Hz. You can test this by transmitting a new cadence and speed with each message period and observing the display updates.

I see the collision happening, but I don't see any impact to the displayed values. They stay the same before, during, and after the collision. I am using SimulANT+ which updates page content in response to TX events and collision events.

I believe the reason you are seeing the speed decrease is that you are not updating the broadcast while the collisions are occurring. With the encoding scheme the profile uses, you need to update the page content regardless of success/failure of the transmission.

Ian      

Signature

Ian Haigh

Rank

Total Posts: 8

Joined 2018-05-22

PM

Thank you.
some mistakes, edge display did not work normally.
I sent wrong time data.
after saw SimulAnt+ Sensor data same options, I changed.
After then, I don't need to handle when Collision event occurred.
now it was work perfectly.
I appreciated your kind reply.