Calculating Solar Panel Size

I am running an ESP32 off of a LiPo battery (3.7V), and I have the a LiPo Solar Battery charger from DFRobot.

The ESP32 component uses around 110mA (measured with a DMM), and it is always on. The solar charger can handle 4.4-6V.

How do I go about calculating how much power I really need for my project if I want to keep the battery topped off?

I'm also considering the Adafruit LiPo Solar charger; however, it is a lot more expensive. I've been running a few other smaller components using the DFRobot solar charger with great success (they use around 1-4mA).

How much sunlight is available in your area? How many cloudy/rainy days in a row must the unit keep operating?

Thanks for the quick response! I live in Central Texas and I can place the component is full sun. I would say at most 3 days cloudy (that's what I saw during late Fall).

You need to first choose the battery capacity in milliAmpere-hours (mAh) to power the system continuously for those three dark days, without destructive overdischarge.

Solar panel current output in mAh/day, averaged over one year in your location, should be be more than (average current draw in mA*24h*1.5) or thereabouts.

If your ESP8266 is using 110mA at 3.7v then that is 0.407 watts. I suggest doubling that to give a margin for error so let's round it off to 1 watt.

Assuming it is running 24-7 then it will need about 24 watt-hrs per day. That many watt-hrs will have to be produced while the sun is shining. If the sun shines for 12 hours then you would need a 2-watt solar panel - but that may not be enough in winter when the days are shorter and the sun is lower in the sky.

The stated power outputs of solar panels always assume the panel is clean and in perfect condition and directly aimed at the sun when the atmosphere is crystal clear.

Your guess is as good as mine about what would be a more realistic assessment of the situation. I think I would go for a panel with double the required output.

This JRC website may help with assessing the likely output at your location.

...R

Thanks for the great answers. Calculating the battery capacity is definitely where I need to start.

czu001: Calculating the battery capacity is definitely where I need to start.

Why you need the full 110ma draw of the ESP 24/7?

You can do a surprising amount of things in a fraction of a second and then sleep off the rest of that second.

Why you need the full 110ma draw of the ESP 24/7?

I'm actively scanning for BLE devices, and there could be up to 100 of them. So I scan for 5s, sleep for 1s.

Are you sure it really draws that much power while scanning BLE? Sounds more like the peak current for connecting to WiFi. Did you measure this current using a multimeter or you just guessing?

110 mA * 24 * 3 = 8,000 mAh. If you really draw that power constantly. That's a good sized LiPo battery. Note that even on cloudy days your panel will be producing power, albeit much less than on a sunny day.

A 5W solar panel with proper exposure will be enough to keep that charged.

Are you sure it really draws that much power while scanning BLE?

The ESP32 is a dual core 240mHZ uC. I want to say normal operation is somewhere around 80-90mA without any other components. Add Arduino hardware, BLE, LED's, etc... and that's what I'm seeing. Having said that, the ESP32 can be configured to be lower power (working on that), but I am a somewhat limited in the Arduino IDE.

Did you measure this current using a multimeter or you just guessing?

I used the following tool (maybe it measures high?): https://www.amazon.com/gp/product/B07FL5Y821/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1

110 mA * 24 * 3 = 8,000 mAh

Yeah... I definitely need to figure out a way to be "smarter" with my firmware. If I'm sleeping 1s every 5s, I think my power consumption is really 110 mA * 3300s = 363,000 mAs / 3600s = 100 mAh (which reduces down to 7,200).

I think I can also (in Arduino) configure the core to run at 80mHZ which should get better results. I'm open to other suggestions, but I get it's going to be specific to my situation.