This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

How is the connection interval controlled with multiple slaves?

If I have 10 slaves and one master in a bluetooth low energy network, and the connection interval for all 10 slaves are set to 7.5ms, how would the master manage this?

If I want to send a "trigger" signal to all 10 slaves, so they can act at the closest time. how should I do this? For example, all slaves are controlling their own ADCs, and I want the ADCs to start sampling at the same time after received the "trigger" signal from the master.

Parents
  • When the number of slaves increase, and the connection interval is kept low, the connection events will start overlapping at some point. At this stage, the device will have to drop events. I'm not sure what device you are using, but our SoftDevices will try to serve links that are close to supervision timeout. If there is a lot of interference, this particular setup could be very fragile.

    For your second question, it depends on your tolerances for "at the same time". If it's within the same second, simply sending e.g. write commands or notifications could be good enough. You could time this yourself, by looking at the spacing between the TX_COMPLETE events. These signalize that the remote peer has ACKed the packet.

    If you need millisecond precision, you should look into implementing the Current Time Service and synchronize time among the peers. Then you can signal a certain timestamp you want the sampling to start at.

Reply
  • When the number of slaves increase, and the connection interval is kept low, the connection events will start overlapping at some point. At this stage, the device will have to drop events. I'm not sure what device you are using, but our SoftDevices will try to serve links that are close to supervision timeout. If there is a lot of interference, this particular setup could be very fragile.

    For your second question, it depends on your tolerances for "at the same time". If it's within the same second, simply sending e.g. write commands or notifications could be good enough. You could time this yourself, by looking at the spacing between the TX_COMPLETE events. These signalize that the remote peer has ACKed the packet.

    If you need millisecond precision, you should look into implementing the Current Time Service and synchronize time among the peers. Then you can signal a certain timestamp you want the sampling to start at.

Children
  • Thank you, Ulrich. For the first question, there will be no more than one byte for the master to receive from each slave at every connection interval. I guess this will take the master less than 1ms. Will the master smart enough to spread the connection interval evenly to have more reliable connections? For example, at time 0ms, 7.5ms, 15ms ... to serve slave one; at 1ms, 8.5ms, 16ms ... to serve slave 2; at 2ms, 9.5ms, 17ms... to serve slave 3; ...

    For the second question, I need ms or better precision if possible. I'll look into the Current Time Service . Thanks again!

  • You have not yet revealed what master you are using, so I cannot say for sure. But the more recent S13x v2 should indeed be a bit smart in the scheduling. It depends a lot on the links and how they overlap. We should try to round-robin a bit, but there are many factors (interference, short supervision timeouts, etc.) that can break this.

    I think your best shot would be to test the timing of your solution extensively, because the SoftDevice cannot make any promises on link fairness. It will try its hardest to keep all links alive.

Related