To run a remote solar powered Arduino weather station drawing an average of 120mA at 5V continuously, you need a 20W monocrystalline solar panel and a 12V 10Ah LiFePO4 battery to survive 3 days of zero-sun autonomy. You will pair this with a 10A PWM charge controller and a high-efficiency 12V-to-5V synchronous buck converter. This configuration prevents the deep-voltage sag that plagues lead-acid setups and avoids the thermal runaway risks of raw LiPo pouch cells.
System Block Architecture: Source to Load
A reliable off-grid embedded system follows a strict unidirectional power flow. For a 12V nominal DC architecture, the system block progresses from the Source (solar array) to the Regulator (charge controller), into the Storage (battery bank), through a DC-DC Converter (buck/boost), and finally to the Load (microcontroller and sensors). If your enclosure requires environmental control, an Inverter branches off the battery bus to handle AC loads.
Below is the exact power budget and specification sheet for a modern, low-power remote node using the Arduino Nano ESP32 and a cellular telemetry module.
| Component | Nominal Voltage | Active Current | Sleep/Quiescent | Duty Cycle | Daily Energy (Wh) |
|---|---|---|---|---|---|
| Arduino Nano ESP32 | 5V (via USB/VIN) | 85 mA | 12 µA (Deep Sleep) | 5% Active | 0.51 Wh |
| BME280 Env Sensor | 3.3V | 1.2 mA | 0.1 µA | 5% Active | 0.01 Wh |
| SIM7600G LTE Module | 5V | 800 mA (TX Burst) | 3 mA (Sleep) | 2% TX / 98% Sleep | 2.88 Wh |
| 12V to 5V Buck (LM2596) | 12V In / 5V Out | ~15 mA (Iq) | ~15 mA | 100% | 2.16 Wh |
| Total Daily Load | - | - | - | - | 5.56 Wh/day |
Notice the buck converter's quiescent current (Iq). A cheap linear regulator like the L7805 would waste over 60% of your solar harvest as heat. Always use a synchronous switching buck converter with an Iq under 20mA for solar applications.
Sizing Math: Battery Capacity, Solar Array, and Peukert's Law
Sizing the battery requires calculating your daily Watt-hours (Wh), multiplying by your desired days of autonomy, and adjusting for Depth of Discharge (DoD) and system efficiency.
The Sizing Calculation
Our daily load is 5.56 Wh. For 3 days of autonomy, we need 16.68 Wh of usable energy.
Because we are using Lithium Iron Phosphate (LiFePO4), we can safely use an 80% DoD without degrading cycle life.
Usable capacity required = 16.68 Wh / 0.80 = 20.85 Wh.
Converting to Amp-hours at a 12.8V nominal LiFePO4 voltage: 20.85 Wh / 12.8V = 1.63 Ah.
However, we must apply a system efficiency factor. Wiring resistance, charge controller losses, and buck converter inefficiencies typically consume 15% of your energy.
Adjusted Ah = 1.63 Ah / 0.85 = 1.91 Ah.
Where Peukert's Law Applies
If you were using a Sealed Lead Acid (SLA) battery, you would have to apply Peukert's Law to account for capacity loss at high discharge rates. An SLA battery rated for 7Ah at a 20-hour rate might only deliver 4Ah if your LTE module pulls a 2A burst. The Peukert exponent for lead-acid is typically 1.3. Fortunately, LiFePO4 chemistry has a Peukert exponent very close to 1.05, meaning high-current bursts from the SIM7600G module will not significantly rob your total capacity. We round our 1.91 Ah requirement up to the nearest commercial off-the-shelf size: a 12V 5Ah LiFePO4 pack.
Solar Array Sizing
To replenish 5.56 Wh per day, we must account for local insolation and panel degradation. Using the NREL PVWatts Calculator, a location with 4 peak sun hours requires:
Panel Wattage = (Daily Wh / Peak Sun Hours) / 0.75 (system derating factor).
Panel Wattage = (5.56 / 4) / 0.75 = 1.85 Watts.
While mathematically a 5W panel suffices in summer, winter obliquity and cloud cover demand a 3x to 4x oversizing margin. A 20W monocrystalline panel is the practical minimum for year-round reliability.
Series vs. Parallel Consequences for V and Ah
If you are building your own 12V pack from raw 3.2V LiFePO4 cylindrical cells (e.g., 32700 cells rated at 6Ah each), you must understand how wiring topology changes your output:
- Series (4S1P): Connecting 4 cells in series adds the voltages but keeps the capacity identical. Result: 12.8V nominal, 6Ah. This is what you want to match a 12V charge controller and minimize I²R transmission losses over long wire runs to the panel.
- Parallel (1S4P): Connecting 4 cells in parallel keeps the voltage identical but adds the capacity. Result: 3.2V nominal, 24Ah. This is useless for a standard 12V Arduino buck converter setup without a complex boost converter, and it creates massive current imbalances if not managed correctly.
Charge Controller, Inverter, and DC-DC Sizing Limits
Every battery chemistry has strict charge and discharge C-rate limits. A C-rate of 1C means discharging or charging the battery's total Ah capacity in one hour. For our 12V 5Ah LiFePO4 pack:
- Max Charge Rate: Typically 0.5C to 1C (2.5A to 5A). Your solar panel's short-circuit current (Isc) must not exceed this. A 20W panel outputs roughly 1.2A at 18V, which is a safe 0.24C charge rate.
- Max Discharge Rate: Typically 1C continuous (5A), 2C peak (10A). The LTE module's 800mA burst is well within the 5A continuous limit.
- Charge Controller Sizing: A 10A PWM controller is perfectly sized for the 1.2A panel current, leaving headroom for a future panel upgrade.
Inverter and Charger Sizing for Auxiliary Loads
What if your weather station is in a freezing climate and requires a 120V AC enclosure heater to keep the LiFePO4 cells above 0°C (charging lithium below freezing causes permanent anode plating)? Let's size an inverter and an AC bench charger for this scenario.
Inverter Sizing: A standard 40W AC silicone heater mat requires 40W. Inverters are typically 85% efficient.
DC Draw = 40W / 0.85 = 47W.
At 12V, that is 3.9A continuous. To handle the resistive surge when the heater's thermostat clicks on, add a 25% margin.
Minimum Inverter Size = 47W * 1.25 = 58.75W. You would select a 100W Pure Sine Wave Inverter. (Never use a modified sine wave inverter for thermostat-controlled resistive loads; the harmonic distortion will cause the thermostat relay to chatter and fail).
AC Charger Sizing: When bench-testing the system before deployment, you need an AC-to-DC LiFePO4 smart charger. The charger must output the exact LiFePO4 absorption voltage of 14.6V (not the 14.4V used for lead-acid). To charge the 5Ah pack from empty in roughly 3 hours, you need a 2A (0.4C) charger. A 14.6V 2A LiFePO4 smart charger is the correct specification.
Lithium Fire-Safety and Cell Matching Rules
Lithium-based cells contain highly reactive electrolytes. If a cell is punctured, overcharged past 4.2V (for Li-Ion/LiPo), or short-circuited, it can enter thermal runaway, venting toxic gas and igniting at temperatures exceeding 1,000°F. LiFePO4 is significantly more stable and rarely vents flame, but the BMS and surrounding wiring can still catch fire if subjected to sustained overcurrent. Always house raw cells in a fireproof LiPo safety bag or a grounded metal enclosure when testing on the bench.
When building your own battery packs, the most common catastrophic mistake hobbyists make is paralleling mismatched cells.
The Danger of Mismatched Parallel Cells
If you wire a brand-new 3.2V 6Ah cell in parallel with an older, degraded 3.2V 4Ah cell, the newer cell will violently dump its current into the older cell to equalize the voltage difference. This uncontrolled cross-current bypasses the external BMS and can easily exceed the cell's max C-rate, melting the nickel strip interconnects and triggering a thermal event.
Rule of thumb: Never parallel cells unless they are the exact same chemistry, manufacturer, capacity, and have been top-balanced to within 0.01V of each other prior to welding. For a solar powered Arduino project, bypass this risk entirely by purchasing a pre-assembled, BMS-protected 12V LiFePO4 drop-in battery (such as those from Ampere Time or Power Queen, typically costing around $40-$60 for a 12V 6Ah unit in 2026). These internal Battery Management Systems (based on ICs like the TI BQ769x2 series) handle cell balancing, over-current protection, and low-temperature charge cutoff automatically, allowing you to focus on your embedded C++ code rather than battery chemistry.
By respecting the Peukert realities of your chosen chemistry, oversizing your solar array for winter insolation, and strictly adhering to C-rate limits, your solar powered Arduino node will run for years without a manual reset.






