The Brief
A global technology company needed a ruggedised IoT asset tracker for demanding industrial environments: yard and port management, construction, mining, and automotive manufacturing. The full system architecture and embedded firmware were designed and delivered across the product family, working in close collaboration with the client's hardware and mechanical teams.
The Challenge
A single platform had to integrate four wireless stacks (BLE 5.1, LoRaWAN, multi-constellation GNSS and NFC) while achieving a three-year battery lifetime from a primary cell pack. GNSS, LoRaWAN and BLE are each individually power-hungry; running them concurrently without careful management would exhaust the battery within weeks. The core challenge was a firmware architecture that deployed each radio only when needed, for the minimum time necessary.
System Architecture
We designed the system around a Nordic Semiconductor nRF SoC, chosen for its BLE performance, deep-sleep current profiles, and mature SDK. A dedicated LoRa transceiver, multi-constellation GNSS module, and NFC front-end were integrated via SPI and I²C, with careful RF layout to maintain antenna isolation between BLE at 2.4 GHz, LoRa at 868/915 MHz, and GNSS at 1.575 GHz within a compact overmoulded housing.
Motion-Gated Positioning
The centrepiece of the firmware is an accelerometer-gated state machine. The device sleeps at microamp-level quiescent current until the accelerometer fires a hardware interrupt on motion. The firmware then selects the appropriate positioning mode, BLE RSSI-based positioning when indoors or multi-constellation GNSS (GPS, GLONASS, BeiDou) when outdoors, transmits the result over LoRaWAN, and returns to sleep. Configurable acquisition timeouts bound the worst-case energy cost of each positioning cycle.
LoRaWAN Stack
We implemented LoRaWAN 1.0.4 with regional parameters for EU 868 MHz and US 915 MHz, supporting all three operating classes. Class A covers standard uplinks for position reports and heartbeats. Class B adds time-synchronised downlink windows used for remote alert activation, triggering the onboard LED and buzzer to locate a specific asset. Class C supports FUOTA, allowing firmware updates to be pushed to deployed fleets over the air. A configurable heartbeat interval of 1–255 hours gives operators control over the battery-versus-visibility trade-off.
NFC Configuration
To reduce deployment friction, we implemented an NDEF-based NFC interface allowing any NFC-enabled smartphone to configure the device without a dedicated app. Writable parameters include GNSS thresholds, accelerometer sensitivity, BLE transmit power, alert settings, and LoRa network credentials. The same parameters can be updated remotely via LoRaWAN downlink once devices are in the field.
Power Budget
Achieving three years from 4,800 mAh required rigorous analysis at every stage. Key measures: accelerometer interrupt-driven wake with zero polling, aggressive peripheral power gating between events, LoRa ADR to minimise transmit energy per byte, bounded GNSS acquisition with graceful fallback to last-known position, and temperature-compensated battery state reporting in every heartbeat payload.
Working on something similar?
If you're developing an IoT product or multi-radio embedded system, we'd like to hear about it.
Start a conversation →