Need long battery life with fast connection interval

We need fast response from peripheral to central. That means we need a fast connection interval. We are using less than 100mS. But that results in an unacceptable battery life. We are trying different strategies to address this problem. One idea is to have a longer connection interval after some period of non-use. But this takes several seconds to renegotiate the connection parameters. Anyone got some idea about this?  I would think this is a common problem that has a solution.

Parents Reply Children
  • We have a small battery in the peripheral, about 150-200mAh. If we have a 100mS connection interval, that is about 44uA (According to online power profiler), even when using all the normal power saving efforts, the life is too short. About 70 days battery half life. We would like to have at least double that.

    How would the supervision timeout effect the power consumption?

  • Have you already considered slave latency? That might be enough for your power requirement.

    A 100ms interval with a slave latency of 10 would mean you only need to communicate once per second. And there would be no need to renegotiate, it would be up to the peripheral to decide whether to communicate every 100ms or not.

  • Yes we are trying slave latency. For some of the peripherals, its fine, because they do not receive data, only send as required. We've got another peripheral however, that will need to receive data. So we are thinking about some scheme where maybe we can adjust the slave latency depending on how often its used. If there is for example, 1 hour of non-use, then we increase the latency. That will result in a small delay, or maybe even a missed command, but that's ok. After some activity then the latency goes back to 0 until there is another lapse in use.

    We can't have some of the devices go to sleep, because they are not easily accessible. We must maintain some connection.

  • So we are thinking about some scheme where maybe we can adjust the slave latency

    Hmm.. Is there a way to tell the BLE stack to wake up on every interval even if you have a nonzero slave latency? Because as far as I know the only way to really adjust it is to renegotiate the connection parameters. And that undoes much of the benefits.

    If your device also sends some data to the central, then one option is to send dummy notifications. So keep a large slave latency all the time. And when you do want to wake up on every interval, send a dummy notification to force the peripheral to wake up.

  • I don't totally understand this. If the peripheral has a high latency, it won't be listening for data from the central. Am I wrong? I guess what we need is some way to force the peripheral to "override" the latency.

Related