Is there a solar power manager board with i2c?

I bought one of the DFRobot “Solar Power Manager” boards to use with Li-Po battery and solar panel to power an ESP32 running ESPHome at remote location (OK, its only my greenhouse in the back yard, but no mains power there).

I discovered that when the battery runs down, the battery’s under-voltage protection shuts off power and the ESP32 just dies without warning. Is it too much to ask that the microcontroller is given an opportunity to send a low battery notification, and shut down cleanly ?

To get any info about the battery and solar panel voltages we have to add more circuitry which at least doubles the cost and complexity. I do understand that each “feature” adds complexity and cost - but surely cheaper to build them into the “power manager” board than tack them on piecemeal afterwards ?

But the real kicker was following the ESPHome INA3221’s documentation to SwitchDoc.com’s page and discovering that SwitchDoc Labs were selling power managers with all these features back in 2016 ! But Covid and part availability led them to discontinue their maker-oriented business.

Looking in HA and Adafruit forums this is a fairly common issue, so surely there are other LiPo & Solar charger boards that provide a low battery warning to an attached microcontroller ? Probably better to use an INA3221 to allow the microcontroller to monitor battery and solar power via i2c … and maybe a KA75330 or similar to awaken the microcontroller only after the battery has recharged sufficiently.

I‘m in the same situation, probably same requirements.

Have you found a solar power manager with i2c? What is your solution now?

What’s the point of I2C here?

To have some kind of coltage/current measurements on the solar power manager PCB and read them via i2c.
Otherwise I have to create some circuits to e.g. INA228…

Why I2C? Not analog, not serial, not pwm, not SPI… Like a magic happens with I2C communication.

No, I have not seen any power “manager” with i2c. I have tried a few battery monitor breakout boards, ending with Adafruit’s INA3221. Be very wary of cheap chinese INA3221 boards as many of them are setup differently and are not suitable for this purpose.

While it is good to see the actual power figures from LiPo, solar panel and USB-In … the LiPo battery voltage is all you really need … and even that doesn’t need to be the actual number of volts. My battery or power manager board seems to handle over voltage, but under voltage seems to cut in at 2.8V … which is lower than I want. My only real issue is detecting when the LiPo voltage gets down to the point where I want to put my ESP32 into long deep-sleep.

There is a simple voltage divider circuit requiring 2 resistors which provides a reduced voltage you connect to an analog pin of your microcontroller. You want to reduce the voltage because microcontroller pins are designed for 3.3V only. Your microcontroller can read the value of the voltage on that pin like any other analog pin.

You have to calibrate a voltage divider yourself. The value from the analog pin will probably be half the actual LiPo’s voltage (assuming both resistors were the same value) - but the important thing is to find the value at which you want to take action - but that shouldn’t be difficult.

I cannot understand why DFRobot and others have not even added a 2 resistor voltage divider and an output pin to allow a microcontroller to tell whether the battery voltage is getting too low. Do they really think that we want power cut off from our projects without any warning ?

Because i2c is easy to connect, provides data in an digital format, and doesn’t use any more GPIO pins. We’re not all experienced electronics engineers :wink:

I now understand the circuitry required for i2c would be overkill because there is really only one value you need, and it doesn’t even have to be callibrated.

Thanks @donburch888 for your detailed reply.
In my case it is a remote weather station. I realy can use these infos.

1 Like