# Power Consumption by Platform

Understanding your node's actual power consumption is essential for correctly sizing a solar system. The current figures below are **representative community benchmarks - always measure your own node**, since values vary significantly by firmware version, radio activity, transmit-power setting, and configuration. Use one consistent figure per platform across your sizing calculations.

## ESP32-based nodes

ESP32 nodes have higher baseline power draw than nRF52 devices but offer WiFi and faster processing. As a planning figure, treat an always-on optimized ESP32 (Heltec V3) node as drawing **~40-80 mA average** (higher with WiFi/MQTT active).

<table id="bkmrk-statefactory-default"><thead><tr><th>State</th><th>Factory defaults</th><th>Optimized config</th><th>Notes</th></tr></thead><tbody><tr><td>Idle (radio listening)</td><td>~150 mA</td><td>~40 mA</td><td>Representative; WiFi off, screen off, BT power reduced. LoRa RX is ~40-80 mA; measure your own</td></tr><tr><td>Active receive (packet processing)</td><td>~180 mA</td><td>~55 mA</td><td>Brief peak during processing (approximate)</td></tr><tr><td>Transmitting (high power)</td><td>~280 mA</td><td>~280 mA</td><td>TX current is set by the LoRa module's PA, not the host MCU. ~280 mA is typical for a 1 W (SX126x + external PA) module; varies with supply voltage and PA design. Confirm against your module's datasheet, and verify the TX power is legal in your region</td></tr><tr><td>Display on (OLED)</td><td>+15 - 20 mA</td><td>N/A (disabled)</td><td>Disable for any unattended deployment</td></tr><tr><td>WiFi active</td><td>+60 - 120 mA</td><td>N/A (disabled)</td><td>Disable unless serving TCP bridge</td></tr></tbody></table>

**Key optimizations for ESP32 repeaters:**

- Disable WiFi: largest single saving for non-TCP deployments
- Disable display: set screen timeout to 0
- Reduce BT TX power: sufficient for app connection at short range
- Result: ~150 mA factory → ~40 mA optimized ≈ 3.75× improvement (illustrative; depends on your measured endpoints)

## nRF52840-based nodes

nRF52840 devices are the preferred choice for solar and battery-only deployments due to dramatically lower power draw. As a planning figure, treat an optimized always-on nRF52840 (RAK4631, T-Echo) router/repeater as drawing **~10-15 mA average**. Note that the LoRa RX/TX current is dominated by the SX126x radio, not the nRF52840 MCU.

<table id="bkmrk-statefactory-default-1"><thead><tr><th>State</th><th>Factory defaults</th><th>Optimized config</th><th>Notes</th></tr></thead><tbody><tr><td>Idle (radio listening)</td><td>~25 mA</td><td>~5 mA</td><td>Representative; MCU sleep current plus SX126x LoRa RX (~4.6 mA boosted). Measure your own</td></tr><tr><td>Active receive</td><td>~30 mA</td><td>~8 mA</td><td>Processing packet (approximate)</td></tr><tr><td>Transmitting (high power)</td><td>~120 mA</td><td>~120 mA</td><td>TX current is set by the LoRa module's PA, not the host MCU. ~120 mA is typical for a module with an internal PA (e.g. RAK4631 ~22 dBm); a 1 W external-PA module draws far more (see ESP32 table). Confirm against your module's datasheet</td></tr><tr><td>Deep sleep (between polls)</td><td>N/A</td><td>~0.2 mA</td><td>With Repeater role sleep scheduling (bare-MCU System OFF can reach ~11 µA)</td></tr><tr><td>GPS active</td><td>+25 mA</td><td>N/A (disabled)</td><td>Disable GPS for repeaters (typical GPS acquisition 20-40 mA)</td></tr></tbody></table>

**Key optimizations for nRF52 repeaters:**

- Enable Repeater role sleep scheduling: radio polls at configurable interval between transmissions
- Disable GPS module (not needed for repeater operation)
- Disable BLE advertising when not in setup mode
- EasySkyMesh firmware is a power-saving fork of **MeshCore** (built on MeshCore v1.14.1), not Meshtastic. With its aggressive power profile (radio front-end LNA/FEM disabled) it has been measured at ~5.5 mA idle on the Heltec V4.3 (an ESP32-S3 board) while still actively listening as an always-on repeater. This is a specific firmware/config result, not a general nRF52 figure.

## Notable hardware benchmarks

These are representative community measurements for specific boards and firmware - **measure your own node** before sizing a system.

<table id="bkmrk-devicemcuaverage-cur"><thead><tr><th>Device</th><th>MCU</th><th>Average current (repeater, optimized)</th><th>Notes</th></tr></thead><tbody><tr><td>Heltec Mesh Node V4</td><td>ESP32-S3</td><td>~40 mA</td><td>Wi-Fi + BT disabled (representative)</td></tr><tr><td>Heltec V4.3</td><td>ESP32-S3</td><td>~5.5 mA idle</td><td>EasySkyMesh (MeshCore-based) firmware with radio LNA/FEM off; specific config only</td></tr><tr><td>RAK4631 WisBlock</td><td>nRF52840</td><td>~10 - 15 mA</td><td>Active MeshCore/Meshtastic repeater (community-measured; measure your own)</td></tr><tr><td>LilyGo T-Echo</td><td>nRF52840</td><td>~8 mA</td><td>GPS disabled, e-ink refresh minimal (community-measured; ~3-6 mA achievable with aggressive power saving)</td></tr><tr><td>Station G2</td><td>ESP32-S3</td><td>~45 mA</td><td>High TX power option; powered from 15 V PD (≥20 W) input</td></tr></tbody></table>

## Daily energy budget calculation example

To size your battery correctly, work in two steps. First find the daily charge in amp-hours, then convert to watt-hours by multiplying by the pack's nominal voltage:

- **Ah per day = (average mA × hours) / 1000**
- **Wh per day = Ah per day × nominal voltage (V)**

Example: RAK4631 running optimized at ~12 mA average, 24 hours, on a 3.7 V cell:

```
Ah per day  = (12 mA × 24 h) / 1000 = 0.288 Ah/day
Wh per day  = 0.288 Ah × 3.7 V       = ~1.07 Wh/day

Battery sizing for 5-day autonomy:
 0.288 Ah/day × 5 days = 1.44 Ah of usable capacity needed
 With 80% usable (LiFePO4 DoD): 1.44 / 0.8 = 1.8 Ah rated minimum
 Apply further derating for cold-weather capacity loss and end-of-life
 fade, plus margin for TX spikes and extra cloudy-day reserve.
 Practical recommendation: 5 - 10 Ah LiFePO4 gives a comfortable margin
 for this ultra-low-power node. For higher-draw nodes (ESP32, Pi),
 rerun the full derate chain (usable DoD × cold × end-of-life × margin)
 so the method scales correctly.

```

## Voltage and battery type reference

The temperature ranges below are **discharge/operating** ranges. The **charge** range is narrower for lithium chemistries: **never charge any lithium battery (including LiFePO4) below 0°C (32°F)** without a low-temperature charge cutoff - sub-freezing charging causes lithium plating, permanent capacity loss, and a hidden internal-short fire risk. A solar node charges every day, so for cold climates require a BMS with low-temp protection or a charge controller with a battery temperature sensor.

<table id="bkmrk-chemistrynominal-vol"><thead><tr><th>Chemistry</th><th>Nominal voltage</th><th>Discharge temp range</th><th>Charge temp range</th><th>Cycle life</th><th>Recommended for</th></tr></thead><tbody><tr><td>LiFePO4</td><td>3.2V/cell</td><td>−20°C to +60°C</td><td>0°C to +45°C (no charging below freezing without BMS lockout / self-heating)</td><td>2000+ cycles</td><td>All outdoor deployments</td></tr><tr><td>LiPo (LiCoO2)</td><td>3.7V/cell</td><td>~−20°C to +60°C</td><td>0°C to +45°C</td><td>300 - 500 cycles</td><td>Indoor/portable only</td></tr><tr><td>NiMH AA</td><td>1.2V/cell</td><td>−20°C to +50°C</td><td>0°C to +45°C</td><td>500 - 1000 cycles</td><td>Ultra-budget temporary nodes</td></tr></tbody></table>

LiFePO4 is strongly recommended for permanent outdoor deployments: it handles temperature extremes (within the charge-temperature limit above) and has roughly 4× longer cycle life than LiPo. It is also much more resistant to thermal runaway than LiCoO2/NMC and rarely ignites - but it is **not** immune: severe overcharge, an internal short, or a puncture can still cause venting or fire. Always use a BMS and proper fusing.