Solar-powered pi
Disclaimer: This post was written with the assistance of Claude Sonnet
Solar-Powered Tool Shed: My Setup Guide
This is a writeup of the small solar charging system I built on top of my tiny tool shed. It’s designed to keep my Ryobi power tool batteries charged from sunlight, with enough overhead to also run a low-power Raspberry Pi as a static web server.
The Components
| Component | Role |
|---|---|
| SOLPERK 50W 24V Solar Panel | Generates power from sunlight |
| 10A PWM Solar Charge Controller (included with panel kit) | Regulates charging of the battery |
| ECO-WORTHY 12V 20Ah LiFePO4 Battery | Stores energy for use when the sun isn’t out |
| 24V→12V Buck Converter (10A / 120W) | Steps down the controller’s load output for 12V devices |
| CharIend One+ Ryobi Charger | Charges Ryobi 12V/14.4V/18V tool batteries from 12V input |
| Raspberry Pi 400 | Lightweight static web server, powered via USB |
How It’s Wired
The system has two distinct paths: a charging path and a load path.
Charging Path
Solar Panel (24V)
↓
PWM Charge Controller
↓
LiFePO4 Battery (12V)
The charge controller is connected directly to the battery. It auto-detects the 12V battery and applies an appropriate charge profile, while the panel feeds it on the input side.
Load Path
PWM Controller (load output)
↓
Buck Converter (24V→12V)
↓
Ryobi Charger
↙ ↘
Tool Batteries USB Port
↓
Raspberry Pi
The buck converter steps the load output down to a stable 12V, which the Ryobi charger expects as a vehicle-style input. The charger then handles the battery chemistry-specific charging for the tool packs, and offers two USB-A ports as a bonus for charging phones or running a small device.
A Note on the Voltage Mismatch
The panel is a 24V nominal panel and the battery is 12V. With a PWM controller in the middle, this means the system only captures roughly half of the panel’s rated wattage — a 50W panel behaves more like a 25W panel in this configuration.
This is because PWM controllers don’t convert excess voltage into extra current; they essentially just connect the panel to the battery and modulate the connection. The “lost” voltage is dissipated rather than harvested.
Why I left it this way: the system meets my actual demand. My tool batteries get charged, the battery stays topped up, and I have headroom for the Pi. If I ever find myself power-limited, the upgrade path is to swap the PWM controller for a small MPPT controller (something like the Victron SmartSolar 75/10 or an EPEVER Tracer 1210AN). An MPPT controller would convert the excess panel voltage into usable current and roughly double the harvest from the same panel.
Powering a Raspberry Pi from the Ryobi Charger’s USB Port
The Ryobi charger has two USB-A ports in addition to its tool battery port. For a Raspberry Pi 400 running nothing but a static site, this works well.
A static site server is an extremely light workload — the Pi will idle around 2-3 watts, well within what a basic 5V USB-A port can supply. The main things that matter:
- Use a good USB-A to USB-C cable. Cheap, thin cables cause voltage drop, which causes the Pi’s undervoltage warning. A short, thick cable rated for 3A solves this.
- Make the SD card resilient to power loss. Since power depends on battery state, enable the Pi’s read-only overlay filesystem, or use
log2ramto keep writes off the SD card. This prevents filesystem corruption on sudden shutdowns. - Pick a lightweight server. Caddy is the easiest choice for static hosting (and it handles HTTPS automatically). nginx works too. Either will idle near zero CPU.
Power Budget
A back-of-envelope calculation for the Pi’s draw on the battery:
- Pi at ~3W continuous = 72 Wh/day
- LiFePO4 battery capacity: 12V × 20Ah = 240 Wh
- One full day with zero solar input: battery drops to ~70%
Even mediocre solar days should easily make up for that, especially since the tool battery charging is intermittent rather than continuous.
Future Upgrades I’m Considering
- MPPT controller swap — to actually capture the panel’s full output.
- Direct 12V-to-USB-C buck converter for the Pi — bypassing the Ryobi charger entirely would be slightly more efficient and give the Pi a cleaner 5V supply.
- A second panel — if I ever add more loads, doubling up panels is cheaper than upgrading the controller alone.
Lessons Learned
The biggest one: system design matters more than component specs. A 50W panel that’s only delivering 25W of usable power isn’t a “broken” system — it’s a system that works, just not optimally. Knowing where the inefficiencies are means I can target upgrades when (and only when) the system stops meeting my needs.
The other lesson: LiFePO4 is wonderful for this use case. It tolerates partial-state-of-charge cycling far better than lead-acid, has a built-in BMS for protection, and is light enough to mount easily inside a small shed. Worth the price premium over a sealed lead-acid battery for any solar project that gets daily use.