Bosch Sensortec's Asset Tracking Reference Design: What Ultra-Low-Power Edge AI Means for Your BLE Tag Battery Budget

Extending BLE asset tag battery life with Bosch Sensortec edge AI

A CR2032 holds about 220 mAh. Your product manager wants 3 years of life out of it. Do the division: that’s an average draw of roughly 8 µA, every second, for 1,095 days straight.

Look at your radio. A single BLE advertising event can pull 5 to 15 mA at peak. Fire one every second and you’ve blown your entire yearly budget in a few weeks.

The sensor isn’t your problem. Sampling an accelerometer costs almost nothing next to keying the transmitter. If you want multi-year life on a coin cell, the radio is the enemy, and edge AI is how you starve it.

Here’s the mechanism, the duty-cycle math, and the sensor config that actually banks the savings.

Where the Energy Actually Goes

A typical BLE asset tag spends most of its life asleep, wakes briefly to sample, occasionally runs some logic, and rarely transmits. The rough current draw per state, order of magnitude:

Component        Current (approx)
Deep sleep       |█                    ~1-3 µA
Sensor active    |███                  ~150 µA
MCU inference    |████                 ~1-3 mA (brief)
BLE TX event     |████████████████     ~5-15 mA (peak)

The bars hide the real story, which is time. Deep sleep at 2 µA runs 99% of the time, and that’s what you want: sleep dominating the average. A TX event at 10 mA lasts maybe 1-3 ms, but do it often enough and it swamps everything else.

The lever that matters most isn’t shaving microamps off sleep. It’s reducing how often, and how long, the radio is on.

The Always-Stream vs. Edge AI Model

There are two ways to get sensor data off a tag and into a decision.

Stream/cloud: sample at a high output data rate (ODR), push the raw stream off-tag continuously, and run classification in the cloud. Simple to build, and it keeps the radio busy nearly all the time. Some architectures also lean on cloud inference because the MCU can’t run the model, which locks you into a high radio duty cycle.

Edge classify: run the sensing and the inference on the tag itself, then transmit only events or state changes. “Asset moved.” “Asset stopped.” “Impact detected.” The radio sits near idle between meaningful events.

The difference is payload frequency. Streaming 50 Hz accelerometer data means constant TX. Sending one classification per minute means the radio wakes 60 times an hour instead of thousands.

This is where Bosch Sensortec parts earn their keep. The BHI360 packs a self-learning AI core and sensor fusion that runs motion and activity classification on the sensor die, so the host MCU can stay asleep. The BMA400 accelerometer has built-in activity and step detection plus wake-on-motion, all at single-digit microamp draw. STMicro’s MEMS line offers comparable machine-learning-core parts if you’re sourcing elsewhere. The point holds regardless of vendor: classify on-device, transmit conclusions.

The Power Math, Step by Step

Average current is a weighted sum. Each state contributes its current times the fraction of the cycle it’s active:

I_avg = Σ (I_state × t_state) / T_cycle

Battery life (hrs) = Capacity_mAh / I_avg_mA

Every design decision either lowers an I_state or shortens a t_state. Edge AI attacks the second term, hard, on the most expensive state.

Here’s a worked comparison. Treat these numbers as illustrative: they’re built from plausible datasheet figures (BMA400 low-power current in the low tens of µA, nRF52840 TX peak around 5-6 mA at 0 dBm), but you must verify against the current datasheet revision for your exact parts and settings.

                        STREAM MODE      EDGE AI MODE
Sensor ODR              50 Hz            25 Hz (wake-on-motion)
TX interval             1 s              on-event (~1/min avg)
Sensor I_avg            150 µA           40 µA
Inference I_avg         —                15 µA
Radio I_avg             ~180 µA          ~8 µA
-----------------------------------------------------
Total I_avg             ~330 µA          ~63 µA
CR2032 (220 mAh) life   ~28 days         ~145 days

Walk the radio line, because that’s where the split happens.

In stream mode, a TX event drawing ~6 mA for ~2 ms every second gives you a duty cycle of 0.002. Multiply: 6 mA × 0.002 = 12 µA just for the payload transmit. Add advertising overhead, connection events, and RX windows for acks, and the effective radio average climbs toward 180 µA.

In edge mode you transmit once a minute. Same 6 mA, same 2 ms burst, but now the duty cycle is 0.002 / 60, or about 0.000033. The transmit energy collapses by roughly 60x, landing near 8 µA once you fold in periodic advertising.

The sensor line drops too, for a different reason. Halving ODR from 50 to 25 Hz cuts active current, and gating the whole pipeline behind wake-on-motion means the sensor only runs hard when the asset is actually moving. A pallet sitting in a warehouse for 20 hours draws close to nothing.

Inference adds a small term, 15 µA here, but it buys the 172 µA you saved on radio and sensing. You spend a little compute to avoid a lot of transmit.

The result: 28 days versus 145 days on the same cell. Push the event rate lower or add a slightly larger cell and multi-year life comes into reach.

Sensor Config Specifics That Realize the Savings

The model only pays off if you configure the silicon to match it. Most of the savings live in five register-level choices.

ODR selection. Match the output data rate to what your classifier actually needs, not the sensor’s max. Detecting “moving vs. still” doesn’t need 200 Hz. 25 or even 12.5 Hz is often plenty, and current scales roughly with ODR.

FIFO plus watermark interrupts. Let the sensor buffer samples and interrupt the MCU only when the FIFO hits a watermark. The MCU sleeps through the fill, wakes once to drain a batch, then sleeps again. This turns hundreds of tiny MCU wakes into a handful of larger ones, amortizing the wake and boot overhead.

Low-power and suspend modes. The BMA400 runs a genuine low-power mode in the single-digit µA range and a suspend mode below 1 µA. Use suspend when the tag is provisioned but not yet deployed, and low-power as your resting state.

Wake-on-motion / any-motion interrupts. This is the master gate. Configure an any-motion interrupt so the accelerometer itself decides when something is worth waking for. Until then, the MCU and radio stay dark.

On-sensor fusion / self-learning core. If you’re using a BHI360, push classification onto the sensor’s own core so the host MCU never wakes for inference at all. That deletes the MCU-active term from your budget entirely.

A config checklist to drop into your init sequence:

[ ] Set ODR to minimum viable for classification (try 25 Hz)
[ ] Enable FIFO, set watermark for batched MCU wakes
[ ] Default resting state = accel low-power mode
[ ] Pre-deployment state = suspend mode (<1 µA)
[ ] Configure any-motion INT to gate MCU/radio wake
[ ] Route classification to on-sensor core where available
[ ] Transmit on state-change only, not on timer

Bosch Sensortec publishes reference application notes for these settings; hold the numbers against your board’s measured current before you commit.

The Offload Side, Where the Events Go

Once the tag only emits a handful of events per hour, the connectivity math changes with it.

BLE still needs an uplink. Those events have to reach a backend somehow, and that path is a real line item most tag budgets ignore until late. Gateways cost money to buy, install, power, and maintain. In a warehouse that might be fine. Across a rail yard, a port, or an open supply chain, gateway capex can dwarf the tag cost.

A zero-gateway model changes the sum. Hubble Network runs a satellite plus terrestrial system (7 satellites in orbit today, with the constellation expanding) that receives standard BLE advertising packets directly, so there’s no gateway hardware to deploy. Their asset tracking guide covers how the tag side maps to that uplink. It’s one option among several; the reason it’s relevant here is the interaction with edge AI. Smaller, less frequent payloads are exactly what a constrained satellite uplink wants. Edge classification shrinks the payload. That makes the cheaper, infrastructure-free uplink viable, and it drops the total system cost, not just the tag’s.

Model the tag and the uplink together. A tag that lasts 3 years but needs a $2,000 gateway per site isn’t cheaper than one paired with zero-capex backhaul.

Building This Into Your Design

Radio transmission dominates the budget, edge AI starves it by sending conclusions instead of raw data, sensor config is where the savings actually land, and the uplink economics decide the real system cost. Model all four in one spreadsheet before you pick parts, working through:

[ ] Build the I_avg model with your real datasheet currents
[ ] Confirm radio is your dominant term (it usually is)
[ ] Move classification on-device (MCU or smart-sensor core)
[ ] Switch TX from timer-based to event-based
[ ] Tune ODR, FIFO watermark, wake-on-motion to gate the pipeline
[ ] Measure actual current on hardware, don't trust the model alone
[ ] Cost the uplink (gateway vs. zero-gateway) into the system total

Get the model right first. The parts are easy to swap once the math tells you which term to kill.


Hubble Network delivers zero-gateway backhaul over BLE, so your tags reach the satellite directly instead of forcing capex into per-site gateways. See how it works →