Documentation
Onboarding
Getting Started
Power & Battery
Hardware & Components
Build & Assembly
Radio & RF Design
Frequencies & Regulations
Firmware & Software
USB & Connectivity
GPS & Navigation
Morse & Communication
Modes & Operation
Field Operations & Rescue
Building Effectively
Build Variants
Project & Reference
Docs Power & Battery Cell Chemistry

Cell Chemistry

Edit on GitHub

Lithium-ion, LiFePO4, NiMH and alkaline compared for the beacon: voltage, capacity, cold weather and safety.

Cell Chemistry

Not every battery is the same chemistry, and chemistry decides voltage, capacity, cold behavior and safety. The beacon is designed around one chemistry but can run on others with settings changes.

The contenders

ChemistryNominal voltageCapacity vs weightCold behaviorSafety
Li-ion 186503.7 VExcellentGood to -10 C, degrades belowNeeds protection
LiFePO43.2 VGoodExcellentVery safe
NiMH AA1.2 VFairPoorVery safe
Alkaline AA1.5 VPoor at high currentPoorVery safe

Why the beacon wants Li-ion

The ESP32 needs a stable 3.3 V rail and bursts of 120 mA. A single 18650 supplies this directly through the regulator, packs the most capacity per gram, and is cheap and standardized. Everything in the standard build assumes this cell.

The voltage curve problem

Li-ion delivers 4.2 V charged, ~3.0 V empty. The firmware uses the Battery Monitor to track this curve and warn long before the regulator drops out. NiMH cells, by contrast, hold 1.2 V until they die suddenly: their curve gives almost no warning, which is bad for a beacon.

Cold weather

All chemistries lose capacity in the cold. Li-ion loses 20 - 30% at -10 C and substantially more below -20 C, plus the internal resistance climbs so the voltage sags harder under the TX burst. Cold Weather Batteries has the mitigation list.

LiFePO4 as an option

A 3.2 V LiFePO4 cell runs the ESP32 through the regulator but needs the low-voltage alarm thresholds adjusted in CONFIG mode, and its capacity per volume is lower. It is the right choice when safety and cold performance matter more than runtime.