Decrease power usage / manage central and peripheral connection interval

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

Hello PSoC Community,

First off, thank you for any help the community is able to provide.

We're looking to create a basic wireless tilt sensor system. Essentially we have a detector unit and an indicator unit.  The detector unit is composed of a CYBLE-012011-00, on/off tilt sensor, and coin cell battery.  This unit detects a tilt on a GPIO sensor and transmits the position to the indicator.  The indicator unit is composed of a CYBLE-202007, an LED, and a hardwired power supply.  This unit receives tilt information from the detector and turns on an LED corresponding to the tilt position.

We've developed the core of the application, that is to say the units automatically boot, establish communication, and transmit/indicate position.  However we are having trouble decreasing the power usage, in particular on the detector unit.  I’ve based most of our application on the Cypress 100 Projects in 100 Days, specifically project #47. This project automatically connects two modules and passes basic data along while switching one of the modules into low power mode.  We’ve stripped out the ADC portion and are just using a GPIO. The code for this project has the data transmission set at a very high speed, on the order of milliseconds.

I am having trouble however trying to save power and slow down the amount of data sent between the two devices.  The code for our the detector uses the same power scheme as listed in the ‘accelerometer’ code from project #47.  It looks like they have the power savings setup, but I can’t seem to figure out how to save more power.  Based on the code I’ve found, the module should go to sleep and wake from the BLE_bless_isr, which is governed I think by the connection interval.  I’m assuming if I can slow down the connection interval (or similar timing parameter) then I can have the module remain in sleep longer.  I’ve tried requesting connection parameters from the tailgate using the code illustrated in the power savings documentation, however it seems the central/cab is going to ignore this.  In all the examples I've found the central manages this connection interval but requires input from say the Cypress Dongle or the iPhone dictates the position

I was wondering if anyone would be able to provide some direction?  Am I on the right track with the power savings? And if so, how can I slow down the connection interval?  I can’t seem to find specific code or the right search terms to find this.

Thank you for your help,

Alex

0 Likes
1 Solution
Anonymous
Not applicable

Hi Alex,

BLE specification,  defines a connection interval which both the master and slave accepts during the connection setup. This interval is (always) first set by master and may be requested to be updated by slave after the initial connection has been made.

  

So as part of the accepted interval and because both master and slave use high accuracy clock, know the time at which both of them should initiate a data transfer (or empty packet) to maintain the connection. All other times, both master and slave shutdown their radio and put CPU to low power mode. This way they achieve the low power consumption. Therefore based on how frequently you want the communication to be between central and peripheral you can set the connection interval.

Thanks,

Ranjith

View solution in original post

0 Likes
3 Replies