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

ComponentRole
SOLPERK 50W 24V Solar PanelGenerates power from sunlight
10A PWM Solar Charge Controller (included with panel kit)Regulates charging of the battery
ECO-WORTHY 12V 20Ah LiFePO4 BatteryStores 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 ChargerCharges Ryobi 12V/14.4V/18V tool batteries from 12V input
Raspberry Pi 400Lightweight 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 log2ram to 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.