With the ESP32-S3 PowerFeather making it easy to create ESP32-based solar + LiPo/Li-Ion projects, it’s time to power something bigger! The next logical step is to give your single board computers like the Raspberry Pis some PowerUPS (pun intended). This enables much more computing power on your remote/off-grid projects - maybe something needing a vision, audio processing, or some sort of edge AI.
However, unlike the ESP32-S3 PowerFeather, I will be building this in public with the hardware design (schematic & layout) available from the start. I hope to leverage the stuff I learned and did for ESP32-S3 PowerFeather in this new project; and in turn, the stuff here can also be fed back into it to make it even better.
If you’re interested in supporting this project, please do take a look at what the ESP32-S3 PowerFeather can do. If you like what you see, consider purchasing one to use in your project. The proceeds will be used as to fund the development of PowerUPS.
You can also show your support by following this project, liking or sharing it to other people. You can also join the Discord server for discussion about PowerUPS.
Goals
For now, the primary target are Raspberry Pi Zero’s, but should be also usable for full-sized Raspberry Pi’s provided there aren’t too many USB devices attached.
As mentioned, the design will be similar to ESP32-S3 PowerFeather, but scaled up to support higher currents. So some of the things that ESP32-S3 PowerFeather can do, that you can expect PowerUPS to also be able to do are:
- Supply voltage/current measurement
- Battery voltage/current measurement
- Battery charge %, health %, time-to-full/time-to-empty estimate
- Battery temperature sensing
- Battery charging current reduction/cutoff based on temperature
- Solar panel MPP voltage adjustable from firmware/software
- etc.
But since it is a UPS for Raspberry Pi, I also hope to implement software features like:
- Shutdown/wakeups based on
- Schedule
- Battery level
- Supply presence
- RTC functions
- Programming API from Raspi OS
- etc.
However, for this particular UPS, I have additional hardware design goals:
- LiFePo4 support
LiPo/Li-Ion are popular because of their high power density. There’s a reason why almost all consumer devices right now use it - it’s well-known and safe enough if treated well.
LiFePo4 has an advantage in lifespan (more charge/discharge cycles) and operating temperature range. However, its biggest advantage by far is it has more stable chemistry, and can take much more abuse without going up in flames. See that stability in action in this video:
LiFePo4 support means users that want to trade off the power density for more safety have that option.
- Bottom-mount/under-slung
Some other UPS’s already do this, with the UPS connected via pogo pins. I thought it was a good idea so I’m also doing it for PowerUPS. Mounting under the Pi means that it won’t interfere with other HATs - especially cooling solutions.
- Use of Raspberry Pi’s 5 V USB connector
Most existing Pi UPS’s have their own USB connectors, and ask their users to use that instead of the Pi’s USB connector. While this is no big deal most of the time, the biggest reason why I want to still support using the Pi’s USB connector is the use of gadget mode. This is especially true on Pi 4 and onwards, where the USB input also has data, and can be configured such that the Pi can act as a USB device. If the UPS advises users to not use the Pi's USB connector, then they can't also use gadget mode.
Initial Design
Components Selection
- Charger - BQ25622E
Here, I went with the BQ25622E, which is a higher max charging current version of the charger IC used in the ESP32-S3 PowerFeather, the BQ25628E (3 A vs 2 A). Other than that, the footprint, registers, functionality and behavior seems to be mostly the same so I can take advantage of the existing circuit design and SDK code for the PowerFeather.
- Fuel Gauge - MAX17260
The LC709204F...
Read more »