Today it's cloudy and I had some used/old stuff in my electronic box. So I decided to make some powerpacks for future projects.
Step 1: Getting Used Parts
Unsolder some solar panels from defect garden lamps. One was not working anymore. The other three had 1V, 2V & 3V. Together 6 Volt should be enough for charging.
Brick some old Laptop batteries to get some 18650 Li-Ion batteries (4,2 Volt each).
Step 2: Getting New Parts
If not in your electronic box, buy some TP4056 Li-Ion charger modules. 5 Pcs costs only a few bucks.
Update: If you have to buy some, take the never version. (Thanks to Orngrimm / see Discussions)
Step 3: Powerpacks
Solder cables to the cells and protect with duct tape.
Step 4: Charger
Solder the solar panels to one TP4056 and fix it with some hot glue on a solid base. I also made one with power adapter.
Step 5: Testing
The version with the power adapter is working fine as expected.
The version with the solar panels charged between 0.5 and 1 Volt during the day (cloudy an no real sunshine). Need to be monitored on another day.
But sun don't cost anything, so why not charge two, three days? The TP4056 will stop charging, if the target of 4.2 Volt is reached.
Step 6: Extension: Monitoring
Like in the discussions requested, I made a way to monitor the charging process.
I added an ESP8266 and connected the ADC input via a 120 KΩ resistor to + of the charging battery.
Why a 120 KΩ resistor? The ADC of an ESP has an internal volatge divider and is able to measure up to 3.3 V. But the fully chared battery will habe 4.2 V. So I added this value, to change the relationchip of the voltages. Now an ADC value of 1023 (max.) match 4.2 V.
The ESP is waking up every 15 minutes from deep-sleep, reading/calculating the voltage and sends it via HTTP request to my raspberry. You can use any other webservice, via email, mqtt, etc if you implement it in your code.
Day 1 was cloudy, with a little sunshine. Day 2 was cloudy and sometimes raining.
The demo-code for the ESP8266 you'll find on GitHub.