← All articles
LoRaWANHardwarePower

Designing for battery life: what actually drains a LoRaWAN node

Sleep currents, radio duty cycles, and the regulator choice that cost us eight months of runtime.

The number on the datasheet is rarely the number you get in the field. This is what we learned building Aurora — a LoRaWAN sensor node that needed to run for two years on a 2200 mAh cell.

Start with the sleep current

The first thing to do is ignore the radio spec entirely. Your node is asleep for 99.9% of its life. Get the sleep current as low as physically possible before optimising anything else.

On the STM32L4 we used, STOP2 mode draws about 1 µA from the MCU. The sensor we chose — an SHT45 — draws 80 nA in sleep. So far so good. The thing that nearly undid us was the LDO regulator.

We originally used a popular AMS1117-3.3 to generate the 3.3V rail. Datasheet quiescent current: 5 mA. We were so focused on the radio and MCU that we didn't notice until we measured the actual sleep current: 5.4 mA. At that draw, our 2200 mAh cell would last 17 days.

We switched to an MCP1826S with a 120 µA quiescent current. Sleep current on the full board went to 9.2 µA. That gave us a projected life of 27 years at our measurement interval — far more than we needed, but a useful margin.

Radio duty cycle is the second lever

LoRa sends a spreading factor (SF) and bandwidth that trade time-on-air for range. SF7 at 125 kHz takes roughly 56 ms to send a 12-byte packet. SF12 takes 2793 ms for the same packet. The SX1276 draws about 45 mA transmitting, so the difference in energy per transmission is approximately 50×.

We run SF9 in most deployments. It gives us adequate margin at 99% of the sites we've seen, with a reasonable 370 ms time-on-air per uplink.

At our measurement interval of 15 minutes and a duty cycle of 1 uplink per window, the radio contributes about 1.1 µA average draw — less than the regulator quiescent current.

What actually matters

In order of impact on our Aurora nodes:

  1. Regulator quiescent current — pick an LDO with < 200 µA, ideally < 50 µA.
  2. Peripheral sleep — anything that shares the power rail (sensors, level shifters, flash) must enter its lowest-power mode before the MCU sleeps.
  3. Spreading factor — run the lowest SF that gives you a link budget margin of 10 dB or more.
  4. Measurement interval — every factor-of-two increase in interval roughly doubles battery life.

The radio is rarely the problem. The regulator usually is.