In the first part of this series, we discussed commonly used primary batteries in IoT applications and limitations they impose.
Though it is always a challenge to design an embedded application that has to run on a very tight power budget, integrating a radio makes it even more challenging in IoT applications. The radio is not just the major contributor to overall system power consumption, it also causes high instantaneous current that can be up to hundreds of mA in the case of Wi-Fi and tens of mA in the case of low-power wireless technologies like ZigBee or Bluetooth Low Energy (BLE). The BLE technology outperforms other wireless technologies when it comes to battery-operated applications, as it is the lowest-power wireless technology available with a strong ecosystem. Even when designing with BLE, battery operated systems need to be optimized for power consumption for better utilization of battery capacity. Several methods can help to reduce peak and average power in BLE-based IoT applications and thus help end-customers replace batteries less frequently. In this second part of the article series, we will discuss BLE Generic Access Profile (GAP) roles in BLE devices, possible BLE states in each role, and how to optimize power in the advertising state.
BLE GAP roles
Every BLE device has one or more (in the case of multi-role) of the following GAP roles.
Peripheral – In a peripheral role, a BLE device can advertise and connect to a central device. An example of a peripheral device is a fitness monitor.
Central – In a central role, a device scans for connection requests from peripheral devices and connects to them. An example of a central device is a mobile phone that scans a connection request from a fitness monitor (peripheral) and then connects to it.
Broadcaster – In a broadcaster role, a device does not establish a connection with other devices. A broadcaster only advertises messages. Examples of a broadcaster device can be a beacon or a wireless sensor node.
Observer– In an observer role, similar to a broadcaster role, a device does not establish a connection. An observer device only listens to broadcast packets.
Figure 1 shows possible BLE states; only some of these states are possible in each GAP role. A low-power implementation needs to ensure power-optimization in each of the states based on GAP role, and the maximum time should be spent in the standby state.
Figure 2 shows possible states based on GAP roles (shaded states are the possible states in the particular GAP role).
Now, let’s look into each of these states and some methods that can be useful to bring down power consumption in each of them.
Power optimization in advertising state
For devices in advertising state, power consumption mainly depends on the following: transmit power, advertising interval, type of advertising and advertisement/scan response data payload size. Each parameter should be selected after careful consideration of the effects caused by the particular parameter.
Transmit power plays a vital role in deciding peak power consumption and average power consumption. Using high transmit power results in a longer range but requires higher peak current. The required range of operation needs to be defined clearly for the system. Use of higher transmit power than what is actually required to maintain communication up to the required range drains the battery unnecessarily. Beyond the power consumption, higher transmit power may cause interference in the advertising channels, and it can corrupt packets originated from other devices. Maintaining power level within the required limit minimizes interference with other devices that are operating at 2.4 GHz in close proximity. If the operating environment of the product is not known in advance, it is a good idea to give an option to select transmit power/range. This can be done either by using a user interface on the device itself, such as a button, or by using over-the-air upgrade of the transmit power requirement.
The advertising interval determines how frequently the device needs to come out of the low-power mode (or some other state based on the system implementation) and enter into the advertising state. Power consumption is inversely proportional to the advertising interval, therefore, having a well-defined requirement for the advertising interval is critical for the battery to run for a longer period. For example, if a beacon is used in a shopping center to advertise promotional offers, it is possible to calculate how much time will elapse from when a customer walking at an average speed enters and leaves the transmit range of the beacon. Advertising at a rate much higher than required would be of no use. Additionally, having a long advertising interval ensures less interference with other beacons in the store.
Advertising types can broadly be classified as connectable and non-connectable. Non-connectable advertising can further be classified into two types: non-connectable, undirected advertising and scannable, undirected advertising. Non-connectable advertising is used to broadcast to all devices, while, connectable advertising is used to establish connection with a central device. Non-connectable, undirected advertising results in one-way communication, with information only transmitted from the device. All other advertising events based on their type i.e. connectable advertising or scannable, undirected advertising, start listening to connection or scan requests after sending the advertisement packet. Scannable, undirected advertising has little value, as it results in higher power consumption compared to non-connectable undirected advertising due to its power consumption in receive mode and transmit mode. When data needs to be broadcasted to all devices in a given area, to keep power consumption low, it is good to use non-connectable, undirected advertising instead of scannable, undirected advertising and to include as much information as possible in the advertisement packet. When data needs to be sent to a few known peer devices with acknowledgement, scannable, undirected advertising can be used. In this case, use a scan request as an indication that a particular central device has received the data, or use the White List to provide more information by sending scan responses to the only devices in the White List. Once a peripheral device gets scan requests from all devices, the device can stop advertising. This helps to ensure a reliable exchange of data in a trusted environment.
When it comes to connectable advertising, directed advertisements can be very useful; only a device that is addressed by a directed advertisement packet can send a connection request, so unnecessary connection or scan requests can be avoided. Directed advertising helps achieve faster connections, hence a device does not need to spend much time sending advertisement packets. Directed advertising can be further classified into two types: low-duty-cycle, directed advertising and high-duty-cycle, directed advertising. During high-duty-cycle, directed advertising, a device keeps advertising continuously for 1.024 seconds until it is connected. If the device ends up advertising for that long and does not get a connection request, it results in very high current consumption for a long period of time, which impacts battery capacity. However, if it is likely that an initiating device will send a connection request quickly, high-duty-cycle, directed advertising is better compared to low-duty-cycle, directed adverting, as the device will not need to waste power making several transitions from one power mode to another to achieve a connection.
Another factor that impacts power consumption during advertising state is data size. More data being transmitted requires more power consumption. Every packet has significant overhead, so, as much as possible, instead of sending payloads frequently, each packet’s payload should be maximized and to reduce the number of transmissions required.
In summary, peripheral and broadcaster devices can be optimized for power consumption by optimizing power consumption in the advertising state. Multiple factors can help in reducing power consumption in the advertising state, including minimizing transmit power, increasing advertising interval, selecting the appropriate advertisement type, and making efficient use of payload size.
In the next part of this series, we will look at initiating and connection states and how to improve power consumption in them.
I have a mobile application developed on Bluetooth Low Energy. The external BLE peripheral battery is getting life of 20 days while using with Android App. Whereas using with iOS application, hardly 5 days of battery life we are getting. Kindly share your opinion on this issue if known.