The constraint: milliwatts and months
Most trackers are physically constrained by batteries. Every decision — radio, sensing, inference, logging, protocol — becomes a current budget. Convert requirements into duty‑cycles that fit the battery.
(Insert power_budget_stack.png
near here.)
A reproducible power budget
Break each reporting cycle into phases. Assign energy cost to each phase in mAh per cycle:
- Sleep leakage (MCU + sensors + LDOs)
- Wake + sense (ADC, I²C/SPI reads, stabilization)
- Edge compute (TinyML) (features, inference)
- Radio (TX/RX, association time, payload, retries)
Example: sensing 0.12 mAh, TinyML 0.08, radio TX 0.22, idle/leak 0.03 → total ≈ 0.45 mAh/cycle. With a 1200 mAh cell at one cycle per hour, life ≈ 111 days (before iteration).
(Insert duty_cycle_timeline.png
near here.)
Radios and their cost envelopes
- BLE: great for beacons and local gateways; on‑air time dominates energy.
- UWB: centimeter‑level ranging for RTLS; schedule ranging sparsely.
- LTE‑M / NB‑IoT: wide‑area coverage; configure PSM/eDRX aggressively.
- LoRa/LoRaWAN: energy tied to SF/retries; use ADR.
- Ambient IoT: ultra‑low‑energy IDs; pair with local sensing to avoid expensive uplinks.
TinyML levers that move the needle
- Streaming features; quantize to int8; shallow models.
- Replace CNNs with DS‑CNN/1D separable convs; prune.
- Early‑exit: skip the model when heuristics are decisive.
- Profile static vs dynamic current; RAM retention sometimes dominates.
Sensors: the hidden budget
- Power‑gate sensors; warm‑up just in time.
- Select parts with conversion‑time control modes.
- Use interrupts (wake on threshold).
- Calibrate less often; persist coefficients in NVM.
Firmware patterns
- Coarse scheduler (state‑machine) to avoid timer storms.
- Snapshot RTC once per cycle; batch page‑aligned logs; wear‑level + CRC.
- Brown‑out aware commits: if VBAT low, skip radio.
Telemetry & alert policy
- Separate telemetry and alerts topics; alerts get priority.
- Downsample slow values; delta‑encode fast ones; add hysteresis.
Field validation loop
- Measure with DMM + shunt or power analyzer (µA resolution).
- Create a cycle profile trace; annotate states; store CSVs.
- Run a week in environmental extremes.
- Compare budget vs observed; fix the largest gap first.
- Re‑forecast lifetime with pess/typical/optimistic bounds.
Example: two‑year target
- Cell: 1200 mAh Li‑SOCl₂ (‑20% derate for cold chain).
- Target: 2 years @ 1 check‑in / 6 h + occasional alerts.
- Budget target: 1200 * 0.8 / (2 * 365 * 4) ≈ 0.33 mAh/cycle.
- Allocate: sleep 0.02, sense 0.04, TinyML 0.05, radio 0.22.
- Feasible with uplink batching + BLE offload; NB‑IoT direct may miss without interval changes or harvesting.
Common pitfalls
- Over‑logging “just in case” (leakage).
- Watch‑dog storms writing too much.
- Misconfigured PSM/eDRX.
- ISR work that should be deferred.
- Over‑strong I²C pull‑ups.
BOM notes
- MCU with low STOP/SHUTDOWN current + fast wake.
- PMIC leakage matters at low loads; evaluate.
- LFXO + RC trimming balance accuracy vs startup.
- Mechanical: gaskets/potting affect humidity readings.
Wrapping up
Ultra‑low power = many small tradeoffs measured and verified. Combine duty‑cycling, TinyML, and smart radio policy to hit multi‑month or multi‑year targets. For device families and deployment options, see the EELINK Official Website (single link above).
Top comments (0)