Solar-powered LoRa sensor nodes dying in winter: an energy budget judgement
An environmental monitoring project has 30 solar-powered nodes in the Himalayan foothills. Each node has a 12 V 7 Ah sealed lead-acid battery, a 5 W panel at fixed tilt, and a controller that switches between panel and battery. The load is a 3.3 V microcontroller sleeping at 20 µA, a sensor that must be warmed for 30 s at 80 mA (5 V) before every reading, and a LoRa module drawing 250 mA at 5 V for 8 s per transmission. Readings are taken and transmitted every 2 minutes. The 12 V rail feeds a linear regulator whose quiescent current is 6 mA at all times. December at the site yields about 2.5 peak sun hours. The nodes survived the monsoon but died after a four-day overcast spell in January, and the surviving logs show repeated brownout resets during transmission. Firmware can currently be updated only by a technician visiting the site with a laptop.
1. Build a daily energy budget referred to the 12 V battery and show whether December harvest covers it. Identify the dominant consumers and the likely cause of the brownout resets.
Read the worked answer
A linear regulator draws the same current from 12 V as it delivers at 5 V, so the 7 V difference is pure heat.
- Sensor warm-up: 80 mA × 30 s = 2.4 As = 0.667 mAh per reading; 720 readings/day = 0.48 Ah → 5.76 Wh.
- LoRa transmit: 250 mA × 8 s = 0.556 mAh per transmission × 720 = 0.4 Ah → 4.8 Wh.
- Regulator quiescent: 6 mA × 24 h = 0.144 Ah → 1.73 Wh.
- MCU sleep: 20 µA is negligible by comparison (milliwatt-hours).
Total ≈ 12.3 Wh/day, about 1.02 Ah/day at 12 V.
December harvest: 5 W × 2.5 peak sun hours = 12.5 Wh, derated by roughly 0.55 for controller loss, low sun angle, temperature and soiling → ~6.9 Wh/day. Even a clear day is in deficit by about 5.4 Wh; on overcast days harvest falls under 1 Wh, so the deficit is about 11 Wh/day.
Battery: 84 Wh nominal, 50% depth of discharge = 42 Wh usable; at near-zero temperature and three years of ageing that is realistically about 20 Wh. Under two days of autonomy - a four-day overcast spell is fatal.
Dominant consumers: the sensor warm-up and the linear regulator's waste, not the radio alone.
Brownout cause: during transmit the regulator must pass 250 mA while dissipating about 1.75 W. A cold lead-acid battery has raised internal resistance, so the 12 V rail sags below the regulator's dropout (5 V + ~2 V), and the MCU resets. Nothing holds the rail up during the 8 s burst.
2. Recommend design changes with quantified justification. Is LiFePO4 worth the extra cost?
Read the worked answer
Ordered by benefit per rupee:
- Buck regulator instead of linear. Cuts the 5.76 Wh and 4.8 Wh items by roughly half and removes 1.75 W of heat at transmit; expect total to fall to about 7–8 Wh/day.
- Reduce the duty cycle. Two-minute sampling is far beyond what an environmental parameter needs. At 10 minutes the sensor cost falls fivefold to about 1.15 Wh; at 15 minutes with batched transmission, total drops under 3 Wh/day. Justify against the scientific requirement, not convenience.
- Switch the sensor rail with a MOSFET so it draws exactly zero when off, and drive sampling from the MCU's low-power timer.
- Harvest side: a 20 W panel gives 20 × 2.5 × 0.55 ≈ 27 Wh/day, a 3–4× margin; add MPPT or a temperature-compensated PWM controller and a low-voltage disconnect at 11.5 V so the node sleeps instead of resetting.
- LiFePO4: a 12 V 6 Ah pack gives about 61 Wh with 80% usable ≈ 49 Wh, far better cycle life and lower internal resistance - worth it for hard-to-reach sites. Caveat: LiFePO4 must not be charged below 0 °C, so specify a BMS with low-temperature charge cut-off, otherwise winter charging will destroy the pack.
- Decoupling: 1000 µF low-ESR plus 100 nF at the radio and regulator, and 470 µF on the 12 V rail, to ride through the 8 s burst.
- Firmware: enable watchdog and brown-out detection, and persist state so a reset resumes rather than loses the reading.
3. Propose a recovery and update strategy both for the 30 nodes already in the field and for future builds.
Read the worked answer
Fielded nodes:
- Try a LoRa downlink update first if the protocol supports fragmented, acknowledged downlink; prioritise sites with the tightest energy margin and the most reset events.
- Where a visit is unavoidable, carry a modification kit: bulk capacitors, low-voltage cut-off, and a replacement buck module. During the visit record battery open-circuit voltage and internal resistance, and replace any battery older than two years.
- Change the sampling interval through a configuration frame, not a recompile, so behaviour can be tuned remotely per site.
- Add a safe mode: if the node resets more than N times in an hour, it sends a diagnostic frame and sleeps for six hours to recover charge.
Future builds:
- Bootloader with A/B slots, signed firmware, and OTA over LoRa or NB-IoT; a hardware watchdog plus a recovery image that is never overwritten.
- Telemetry should carry energy counters - harvested Wh, consumed Wh, minimum battery voltage - so a failing site is visible before it dies.
- Bench-test every design against a simulated seven-day zero-sun profile on a bench supply before deployment, and add a site survey step that measures actual peak sun hours rather than trusting the map.
Why this order: the firmware fix is worthless if the node cannot stay powered long enough to receive it, so energy margin is addressed first and remote update capability second.