Battery Chemistry and Selection

Comparing LiFePO4, LiPo, and lead acid battery chemistries for LoRa deployments, plus sizing methodology and BMS protection.

LiFePO4 vs LiPo vs Lead Acid for LoRa Deployments

Choosing the right battery chemistry for a LoRa mesh node is one of the most consequential hardware decisions you will make. The chemistry determines cycle life, safe operating temperature, charging behaviour, physical size, and total cost of ownership. This page provides a deep technical comparison of the three chemistries most commonly encountered in field deployments: Lithium Iron Phosphate (LiFePO4), Lithium Polymer (LiPo), and valve-regulated lead acid (VRLA/AGM).

Chemistry Overview

Property LiFePO4 LiPo (LiCoO₂/NMC) Lead Acid (AGM/VRLA)
Nominal cell voltage 3.2 V 3.7 V 2.0 V per cell (12 V = 6 cells)
Fully charged voltage 3.65 V 4.2 V 12.7 - 12.8 V (12 V battery)
Fully discharged cutoff 2.5 V (3.0 V recommended) 3.0 V (3.2 V recommended) 10.5 V (50% DoD recommended)
Usable energy density (Wh/kg) 90 - 120 Wh/kg 150 - 200 Wh/kg 30 - 40 Wh/kg
Cycle life (to 80% capacity) 2,000 - 4,000 cycles 300 - 500 cycles 200 - 500 cycles (50% DoD)
Self-discharge per month 1 - 3% 2 - 5% 3 - 5%
Thermal runaway risk Very low - does not propagate High - flammable electrolyte Low - explosive H₂ gas if overcharged
Operating temperature (discharge) −20 °C to +60 °C −10 °C to +45 °C −15 °C to +50 °C (capacity drops >30% at 0 °C)
Charging temperature minimum 0 °C (lithium plating below) 0 °C −20 °C (reduced rate)
Typical cost (USD, 2024) $0.25 - $0.50 / Wh (cells); $0.60 - $1.20 / Wh (pack) $0.15 - $0.30 / Wh (pouch) $0.10 - $0.20 / Wh
Cost per cycle (at rated life) $0.0002 - $0.0006 / Wh / cycle $0.0006 - $0.0010 / Wh / cycle $0.0004 - $0.0010 / Wh / cycle

Cycle Life in Depth

LiFePO4 is the standout performer for longevity. A quality cell from EVE, CALB, or Headway will reliably deliver 2,000 cycles at 100% depth of discharge (DoD) and can exceed 4,000 cycles at 80% DoD. At a 1-cycle-per-day charge rate typical of solar nodes, this translates to 5 - 11 years of service life.

LiPo cells (using LiCoO₂ or NMC cathodes as found in hobby packs and phone batteries) are rated for 300 - 500 full cycles. With daily cycling on a solar node, these cells will reach end-of-life in under 18 months. The LP503562 3.7 V 1100 mAh pouch cell common in hobbyist builds, for example, is typically rated 300 cycles by the manufacturer. Permanent deployments in LiPo are therefore not economical.

Lead acid (AGM) ratings of 200 - 500 cycles assume 50% DoD. Going to 80% DoD halves the cycle count. Because solar systems routinely deep-discharge during extended cloudy periods, real-world lead acid life in solar applications is often only 2 - 3 years.

Temperature Performance

This is where LiFePO4 dominates cold climates. At −20 °C, LiFePO4 retains approximately 70 - 80% of rated capacity on discharge - usable, though not ideal. LiPo cells at −10 °C typically retain only 50 - 60% of rated capacity and internal resistance rises sharply, causing voltage sag under load. At −20 °C many LiPo cells effectively stop functioning. Lead acid loses approximately 30 - 40% of rated capacity at 0 °C, and at −20 °C a fully charged lead acid battery delivers only 40 - 50% of its 25 °C rating.

Critical charging constraint: Both LiFePO4 and LiPo must not be charged below 0 °C. Charging lithium cells in freezing temperatures causes metallic lithium plating on the anode, permanently reducing capacity and creating an internal short-circuit hazard. Solar systems in freezing climates must incorporate a low-temperature charge cutoff. Many commercial LiFePO4 BMS modules include this feature.

Safety

LiFePO4 uses an olivine phosphate cathode that is inherently stable. Even in nail-penetration and overcharge abuse tests, LiFePO4 cells typically vent mildly without fire or explosion. This makes them suitable for enclosed enclosures and attic/wall installations.

LiPo cells with NMC or LiCoO₂ cathodes store significantly more energy per unit mass and release it rapidly in fault conditions. Thermal runaway in a LiPo pack can reach temperatures exceeding 600 °C and produces toxic HF gas. Never install LiPo packs in sealed enclosures without adequate ventilation or thermal fusing. For unattended LoRa repeater deployments in public locations, LiPo represents a meaningful liability.

Lead acid produces hydrogen gas during overcharge. In sealed VRLA/AGM formats the recombination rate is high, but a faulty charge controller can still cause pressure build-up and case rupture. AGM batteries should not be enclosed in airtight boxes.

Voltage Curves and State-of-Charge Estimation

LiFePO4 has an extremely flat discharge curve - the cell voltage sits near 3.2 - 3.3 V for the majority of its capacity range, dropping steeply only in the last 10 - 15% of charge. This makes voltage-based SoC estimation imprecise in the mid-range, but the flat curve is beneficial because the node's voltage regulator sees a near-constant input for most of the discharge cycle.

SoC (%) LiFePO4 OCV (V/cell) LiPo OCV (V/cell) 12 V Lead Acid OCV (V)
1003.60 - 3.654.18 - 4.2012.70 - 12.80
903.35 - 3.384.07 - 4.1012.50 - 12.60
803.32 - 3.343.98 - 4.0212.40 - 12.50
703.30 - 3.333.88 - 3.9212.30 - 12.40
503.27 - 3.303.73 - 3.7712.10 - 12.20
303.22 - 3.253.60 - 3.6511.90 - 12.00
203.18 - 3.223.55 - 3.6011.75 - 11.90
103.10 - 3.183.45 - 3.5511.50 - 11.75
0 (cutoff)2.5 - 3.03.0 - 3.210.5 - 11.2

All OCV values are resting voltage with no load applied for at least 30 minutes. Under load, voltages will be lower due to internal resistance. For LiFePO4, Meshtastic firmware reports battery percentage based on voltage thresholds; refer to the telemetry page in this book for specific ADC configuration.

Specific Product Recommendations

LiFePO4 - Recommended Products

LiPo - Acceptable for Short-Deployment or Prototype Use

Lead Acid - Only Where Weight/Cost Dominates

Summary Recommendation

For any unattended LoRa repeater or mesh node intended for permanent or semi-permanent deployment, LiFePO4 is the correct choice. The superior cycle life, wide temperature tolerance, and thermal safety profile outweigh its higher per-Wh cost compared to LiPo. Lead acid remains viable only when cost is the dominant constraint and the installation allows for routine (annual) battery replacement. LiPo is acceptable for short-term field deployments, handheld nodes, and prototyping, but should not be used in sealed enclosures or unattended permanent installations.

Battery Sizing for LoRa Mesh Nodes

Correctly sizing the battery for a solar-powered LoRa node prevents two failure modes: undersizing (the battery dies overnight or during cloudy periods) and oversizing (wasted cost and weight). This page walks through a systematic methodology and provides worked examples for three common node types.

Step 1 - Measure Actual Current Draw

Never rely solely on datasheet figures. Real-world current draw depends on firmware configuration, peripherals, GPS lock cycles, LoRa transmit duty cycle, and whether deep sleep is used. Measure with a USB power meter (e.g., UM25C, AT34) or an inline current shunt (e.g., INA219 module on the 3.3 V rail).

Take measurements in three states:

  1. Transmit peak: Current during an active LoRa TX burst (typically 80 - 120 mA at 3.3 V for SX1276-based modules at +17 dBm).
  2. Receive / idle: Firmware running, radio in RX mode, no TX (typically 30 - 80 mA depending on platform).
  3. Deep sleep (if used): Microcontroller and radio in lowest power state (0.01 - 10 mA depending on design).

Calculate a weighted average current based on the fraction of time spent in each state. For a Meshtastic router node set to 5-minute heartbeat with 20-second sleep cycles:

Example: T-Beam v1.1 (ESP32 + SX1276 + NEO-6M GPS)
 TX (0.5% of time at 120 mA) = 0.6 mA average
 RX active (79.5% at 80 mA) = 63.6 mA average
 Deep sleep (20% at 3 mA) = 0.6 mA average
 ─────────────────────────────────────────────────
 Weighted average ≈ 64.8 mA

Step 2 - Calculate Daily Watt-Hours

Multiply the average current (in amps) by the system voltage and by 24 hours:

Daily_Wh = I_avg(A) × V_system(V) × 24 h

Example: 64.8 mA × 3.7 V × 24 h = 5.75 Wh/day

If your system runs at 5 V (e.g., USB-powered node) or 12 V (e.g., Raspberry Pi gateway), substitute the appropriate system voltage.

Step 3 - Determine Required Autonomy Days

Autonomy is the number of consecutive days with no solar input (full cloud cover, snow burial, north-facing shade) the battery must sustain the node. Select based on your climate and criticality:

Deployment Type Recommended Autonomy Rationale
Sunny desert / Southwest US3 - 5 daysExtended low-sun periods are rare
Pacific Northwest / Northeast US5 - 7 daysMulti-day overcast events common Nov - Mar
High alpine / polar7 - 14 daysSnow burial possible; winter darkness
Non-solar (mains backup only)0.5 - 1 dayBridge a brief power outage

Step 4 - Calculate Raw Battery Capacity

Raw_Wh = Daily_Wh × Autonomy_days

Example (5 days autonomy): 5.75 Wh × 5 = 28.75 Wh

Step 5 - Apply Derating Factors

Real batteries deliver less than their nameplate capacity due to temperature, aging, and depth-of-discharge limits. Apply the following derating multipliers:

Factor LiFePO4 LiPo Lead Acid
Max recommended DoD80 - 90% (use 0.85)80% (use 0.80)50% (use 0.50)
Temperature derating (cold climate, −10 °C avg low)0.850.700.65
End-of-life capacity (design to still work at EOL)0.800.800.80
Combined derating factor0.85 × 0.85 × 0.80 = 0.5780.80 × 0.70 × 0.80 = 0.4480.50 × 0.65 × 0.80 = 0.260
Required_Wh = Raw_Wh / Combined_derating_factor

Example (LiFePO4, cold climate): 28.75 / 0.578 = 49.7 Wh → round up to 50 Wh

Step 6 - Add a 20% Safety Margin and Convert to Ah

Final_Wh = Required_Wh × 1.20 (20% safety margin)
Final_Ah = Final_Wh / V_nominal_pack

Example (LiFePO4, 12.8 V nominal pack):
 Final_Wh = 49.7 × 1.20 = 59.6 Wh
 Final_Ah = 59.6 / 12.8 = 4.65 Ah → use a 6 Ah pack

Worked Examples

Example A - ESP32 LoRa Repeater (T-Beam, indoor/outdoor enclosure)

PlatformTTGO T-Beam v1.1 (ESP32 + SX1276 + AXP192 PMIC)
Measured average current65 mA at 3.7 V = 0.240 Wh/h
Daily consumption5.76 Wh/day
Target autonomy5 days (Pacific NW)
Raw requirement28.8 Wh
After derating (LiFePO4, cold)28.8 / 0.578 = 49.8 Wh
With safety margin59.8 Wh → use 6 Ah at 12.8 V (76.8 Wh nominal)
Recommended batteryBioenno BLF-1206A (6 Ah, 12.8 V LiFePO4) or equivalent

Example B - nRF52840 Ultra-Low-Power Node (RAK4631 + solar harvest)

PlatformRAK WisBlock Core RAK4631 + RAK12500 GPS (GPS duty-cycled off)
Measured average current8 mA at 3.7 V = 0.0296 Wh/h (with aggressive sleep)
Daily consumption0.71 Wh/day
Target autonomy7 days
Raw requirement4.97 Wh
After derating (LiPo, moderate climate)4.97 / (0.80 × 0.80 × 0.80) = 9.71 Wh
With safety margin11.65 Wh → at 3.7 V = 3.15 Ah → use 3.5 Ah LiPo
Recommended batteryEEMB LP905060 3.7 V 3500 mAh or Adafruit 3.7 V 4400 mAh (#328)

Example C - Raspberry Pi Zero 2W + SX1302 HAT Gateway

PlatformRPi Zero 2W + RAK2287 SX1302 HAT + LTE modem
Measured average current620 mA at 5 V = 3.1 W = 3.1 Wh/h
Daily consumption74.4 Wh/day
Target autonomy3 days (sunny climate)
Raw requirement223.2 Wh
After derating (LiFePO4, warm climate: 0.85×1.00×0.80 = 0.68)223.2 / 0.68 = 328 Wh
With safety margin394 Wh → at 12.8 V = 30.8 Ah → use 40 Ah pack
Recommended batteryBattle Born BB10012 (100 Ah, 12 V LiFePO4) or 4× EVE LF50K in 4S (50 Ah, 12.8 V)

Rule of Thumb Quick Reference

Node Type Typical Daily Wh Minimum Battery (5-day, LiFePO4)
nRF52840 sleepy node0.3 - 1.5 Wh2 - 6 Ah @ 3.7 V
ESP32 Meshtastic router (no GPS)3 - 5 Wh3 - 5 Ah @ 3.7 V
ESP32 + GPS always-on5 - 10 Wh4 - 8 Ah @ 3.7 V
Pi Zero 2W gateway60 - 90 Wh30 - 50 Ah @ 12 V
Pi 4 + LTE gateway100 - 150 Wh50 - 80 Ah @ 12 V

Battery Management Systems and Protection Circuits

A Battery Management System (BMS) is the electronic circuit that protects lithium cells from conditions that cause permanent damage or fire. Understanding what a BMS does - and detecting when one has failed - is essential for maintaining reliable solar-powered LoRa nodes.

What a BMS Does

A BMS monitors cell voltage, current, and temperature in real time and opens a protection MOSFET to disconnect the battery when it detects an out-of-bounds condition. The primary protection functions are:

Protection Function Trigger Condition Consequence if Missing
Overvoltage protection (OVP) Cell voltage > 3.65 V (LiFePO4) or 4.25 V (LiPo) Electrolyte decomposition, capacity fade, fire (LiPo)
Undervoltage protection (UVP) Cell voltage < 2.5 V (LiFePO4) or 3.0 V (LiPo) Copper dissolution, cell permanently damaged (cannot accept charge)
Overcurrent protection (OCP) Discharge current > rated maximum (e.g., 1C - 3C continuous) Cell heating, electrolyte venting, cable fire
Short-circuit protection (SCP) Near-instantaneous high current spike Cell fire, explosion
Over-temperature protection (OTP) Cell temp > 60 °C (some BMS modules) Accelerated aging, thermal runaway risk in LiPo
Low-temperature charge inhibit Cell temp < 0 °C Lithium plating on anode, internal shorts, reduced cycle life
Cell balancing (multi-cell packs only) Voltage delta between cells > 20 - 50 mV Weakest cell reaches cutoff early, reducing pack capacity

Why 18650 Cells Always Need a BMS

Bare cylindrical 18650 cells - including popular Samsung 30Q, LG HG2, and Panasonic NCR18650B - have no built-in protection. They are raw electrochemical cells. Connecting multiple 18650 cells in series or parallel without a BMS creates a serious hazard. If one cell has slightly lower capacity (as all real cells do), it will be over-discharged before the others during a deep cycle, permanently damaging it. On charge, it will be over-charged, potentially causing thermal runaway.

Even for a single 18650 used to power an ESP32 node via a TP4056 charging module, the TP4056 only handles charging protection - it does not provide discharge-side UVP or OCP. A DW01A + FS8205A dual-MOSFET protection IC circuit (commonly integrated into 18650 holder modules sold on AliExpress) is the minimum acceptable protection for bare-cell usage.

Built-in BMS on LiPo Pouch Cells

Consumer LiPo pouch cells sold for drones, hobby use, and electronics (Adafruit, SparkFun, EEMB, Polymer Lithium) typically include a small protection circuit module (PCM/PCB) laminated between the cell and the outer casing. This PCM provides OVP, UVP, and OCP - but usually not balancing (since these are single-cell packs) and rarely temperature protection. The PCM is designed for the specific cell and chemistry, with cutoff voltages pre-set at the factory.

When purchasing LiPo cells, verify the datasheet explicitly states "with protection circuit" or "PCM included." Bare (unprotected) LiPo cells are also sold, typically labeled "battery" without "protection" in the listing. Bare cells require an external BMS.

LiFePO4 Packs - BMS Inclusion Varies

LiFePO4 prismatic cells (EVE, CALB, Winston) are sold bare. DIY packs require a separate BMS module. Common choices:

BMS Module Cell Configuration Continuous Current Features Approximate Cost
Daly 4S 40A BMS 4S LiFePO4 (12.8 V) 40 A OVP, UVP, OCP, balancing, UART $8 - 12
JBD/Overkill Solar 4S 60A 4S LiFePO4 60 A Bluetooth app, UART, active balancing option $20 - 35
Ant BMS 4S 100A 4S LiFePO4 100 A CAN bus, SOC display, temp sensor $30 - 50
Texas Instruments BQ76920 3S - 5S Li-Ion/LiFePO4 Configurable IC-level, requires MCU interface; used in custom designs $4 - 8 (IC only)

Packaged LiFePO4 batteries from Bioenno, Dakota Lithium, and Battle Born include an integrated BMS and are safe to use without additional protection hardware.

Cell Balancing in Multi-Cell Packs

In a series-connected pack, cells must stay at nearly equal voltage. Over hundreds of cycles, manufacturing variations cause cells to drift apart. A balancing circuit periodically bleeds charge from higher-voltage cells (passive balancing) or shuttles charge from high to low cells (active balancing) to keep the pack uniform.

Passive balancing is simpler and more common. The BMS bleeds excess energy as heat through a resistor. Balance current is typically 50 - 200 mA, which is adequate for slowly drifting cells in solar nodes.

Active balancing (capacitor or inductor-based charge shuttling) is more efficient but more expensive. For LoRa nodes with <100 Ah packs, passive balancing from a Daly or JBD BMS is entirely sufficient.

Signs of BMS Failure

Parallel Cell Balancing Considerations

When connecting cells in parallel (e.g., 2P or 4P for higher capacity), cells must be at the same voltage before paralleling. Connecting cells with a voltage difference of >100 mV causes a large equalisation current spike that can damage cells and weld connectors. Always charge all cells to the same voltage (within 10 mV) before forming a parallel group.

Parallel cells naturally balance themselves during use because they share the same terminal voltage. Balancing circuits are only required for series-connected groups in a larger series-parallel pack (e.g., 4S2P). The BMS sees each parallel group as one "cell" and balances between groups.