Skip to main content

Solar System Sizing Guide

Goal

Size your battery to survive N cloudy days, and size your panel to fully recharge that battery against your worst-month (winter) sun — with real positive margin, never sized "exactly" to the minimum.

Step 1 - Measure Your Device's Actual Current Draw

Use a coulomb-counting USB power meter (or a meter that logs mAh/Wh) over a multi-hour test. A plain multimeter in series reads only instantaneous current and will under-estimate average draw — radios spend most of their time receiving (low current) and only briefly transmitting (high current), so you must integrate consumption over time (mAh/Wh), not read a single instantaneous value. Do not rely solely on datasheet figures — real-world draw depends on firmware, radio duty cycle, and accessories.

Representative average current values (measure your own; these are examples, not specs):

DeviceAvg Current
ESP32 repeater (Heltec V3, no display, BT/Wi-Fi off)~40 - 80 mA (light traffic toward the low end; default/higher-traffic configs higher)
nRF52840 repeater (RAK4631 / T114), RX-mode average~10 - 15 mA (aggressive power-saving firmware can reach ~7.5 mA)
Pi Zero 2W gateway (idle/light load)~100 - 150 mA at 5V (an active gateway under Wi-Fi traffic can exceed 150 mA)
Pi 3B+ gateway (idle)~300 - 400 mA at 5V (a busy gateway draws 500 mA+, peaking near 950 mA under load)

Step 2 - Calculate Daily Energy

Work in watt-hours so device voltage is explicit. Daily energy: Wh/day = average current (mA) × 24 h × system voltage (V) ÷ 1000. To get amp-hours at a given bus voltage, divide Wh/day by that voltage. (mA × h alone gives Ah at the device's own voltage — you must multiply by voltage to get Wh, and account for voltage when sizing a battery at a different bus voltage.)

Example: a 60 mA ESP32 repeater on a 3.7 V single-cell bus = 60 × 24 × 3.7 ÷ 1000 ≈ 5.3 Wh/day, which is ~1.4 Ah/day at 3.7 V. If you instead power it from a 12 V LiFePO4 pack through a buck converter, the same 5.3 Wh/day is only ~0.44 Ah/day at 12 V, plus converter losses.

Step 3 - Size the Battery for Cloudy Days (with margin)

Multiply daily energy by the number of consecutive no-sun days you must survive. For general installs plan 3 - 5 days of reserve; for emergency-comms nodes plan 5 - 7+ days, because panels contribute nothing during a multi-day overcast or snow-covered stretch.

Example (5.3 Wh/day ESP32, 5-day reserve): 5.3 Wh/day × 5 days = 26.5 Wh of usable reserve needed.

For LiFePO4, plan to 80% depth of discharge for longevity — usable capacity = rated × 0.80. Sizing the pack exactly to the minimum leaves zero margin and ignores self-discharge, BMS/converter losses, cold-temperature capacity loss, and aging. Add real margin — roughly 1.3 - 2× the bare minimum. For the 5-day ESP32 case above (~26.5 Wh usable need ≈ a ~33 Wh pack at 80% DoD), step up to a ~50 - 65 Wh pack (e.g. an 8 - 10 Ah pack on a 6.4 V or 12.8 V bus) rather than sizing it razor-thin.

Step 4 - Size the Solar Panel

A solar panel produces roughly its rated wattage for a number of "peak sun hours" (PSH) per day. Do not assume a flat "4 PSH year-round." Use your location's winter PSH from NREL PVWatts: northern-US winter is only ~1 - 2.5 PSH (Seattle/Portland ~1.5, Chicago ~2.5, Anchorage ~0.5). Size the panel against the worst-month PSH and size the battery for cloudy-day reserve.

Energy harvested: Wh/day = panel watts × PSH × derate, where the overall derate factor is 0.75 (it lumps controller, wiring, temperature, and soiling losses). To convert to amp-hours at the battery, divide by the battery charging voltage. For a PWM controller, current into the battery is roughly the panel's Imp (PWM clips panel Vmp to battery voltage); for MPPT, use the power form (panel W × PSH × derate) ÷ battery charging voltage, since MPPT converts power rather than clipping voltage.

Example: a 5 W panel at a winter minimum of 2 PSH →
5 W × 2 h × 0.75 = 7.5 Wh/day harvested
That still covers a ~5.3 Wh/day ESP32 repeater, but with thin margin and no allowance for consecutive overcast days. At a northern latitude, step up to a 10 W panel for reliable winter recharge.

Step 5 - Account for Worst-Case Latitude and Season

Latitude >45° (northern US, Canada) in winter may have only ~1 - 2.5 peak sun hours — and that figure describes clear winter days. During storms, prolonged overcast, and snow cover, real harvest can fall to near zero for days at a time. Size the panel for the winter minimum and size the battery for 5 - 7+ consecutive no-sun days at high latitude. Check and clear snow from panels in winter.

Quick Reference Table

Device currents below are representative receive-mode/idle figures (measure your own). The mA values are at each device's own input voltage; the Ah/day column is computed at that voltage. When powering from a higher-voltage battery (e.g. 12 V LiFePO4) through a converter, convert via watt-hours and add converter loss. Battery and panel columns already include margin for cloudy-day reserve and winter PSH.

Device Avg mA Ah/day (at device V) Recommended Battery Recommended Panel
nRF52840 repeater ~12 mA 0.29 Ah @ device V 3 - 5 Ah LiFePO4 3 W minimum
ESP32 repeater ~60 mA 1.4 Ah @ device V 8 - 10 Ah LiFePO4 5 - 10 W
Pi Zero gateway (idle) ~125 mA @ 5V 3.0 Ah @ 5V (≈1.4 Ah/day at 12V + loss) 15 - 20 Ah LiFePO4 20 W
Pi 3B+ gateway (idle) ~350 mA @ 5V 8.4 Ah @ 5V (≈3.8 Ah/day at 12V + loss; active load draws more) 40 Ah LiFePO4 50 W