# 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):

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

## 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 &gt;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.

<table id="bkmrk-device-avg-ma-ah%2Fday"> <thead> <tr> <th>Device</th> <th>Avg mA</th> <th>Ah/day (at device V)</th> <th>Recommended Battery</th> <th>Recommended Panel</th> </tr> </thead> <tbody> <tr> <td>nRF52840 repeater</td> <td>~12 mA</td> <td>0.29 Ah @ device V</td> <td>3 - 5 Ah LiFePO4</td> <td>3 W minimum</td> </tr> <tr> <td>ESP32 repeater</td> <td>~60 mA</td> <td>1.4 Ah @ device V</td> <td>8 - 10 Ah LiFePO4</td> <td>5 - 10 W</td> </tr> <tr> <td>Pi Zero gateway (idle)</td> <td>~125 mA @ 5V</td> <td>3.0 Ah @ 5V (≈1.4 Ah/day at 12V + loss)</td> <td>15 - 20 Ah LiFePO4</td> <td>20 W</td> </tr> <tr> <td>Pi 3B+ gateway (idle)</td> <td>~350 mA @ 5V</td> <td>8.4 Ah @ 5V (≈3.8 Ah/day at 12V + loss; active load draws more)</td> <td>40 Ah LiFePO4</td> <td>50 W</td> </tr> </tbody></table>