Solar Power for Arduinos
Can I use solar to run an Arduino off-grid?
Yes, for three good reasons: a) Arduinos consume relatively little power during operation, b) there are lots of controls to put it to sleep when it isn't performing any useful functions and c) if the power source does run out, they restart gracefully when power is applied.
^back to top
What is the basic setup?
Solar Panel Charges Battery - Battery Stores and Supplies Power - Runs Arduino
We like our small solar charger systems for these applications. The V25, V50, and V75 batteries charge efficiently from solar and have an "Always On" mode which keeps them on whether or not a device is drawing any power. We have more information on sizing your system below.
^back to top
How long will a given battery run the Arduino for?
It depends on the board, what mode the Arduino is in and what peripherals you have running. There are many of forums that discuss how to put the Arduino in sleep mode so that it consumes 5mA or less. If you're looking to run an Arduino off-grid, you will be able to run it longer with a smaller battery and panel if you can put the device in sleep mode as long as possible. We suggest implementing these modes and measuring the power consumption with a USB multimeter for a few hours and then using this calculator to size your system.
Besides the power consumption of the Arduino and peripherals, the small Voltaic batteries have a self-consumption of about 0.6Wh per day in Always On mode.
Here is a table showing the sleep capabilities of popular IoT boards and how to activate them.
Board | Deep Sleep Mode | Standby Mode | How to activate sleep |
Portenta H7 |
0.67mA |
2.95µA |
|
Portenta X8 |
18mA |
2.95 µA |
|
MKR NB 1500 |
|
60 mA |
With RTC library |
MKR NB 1500 |
1.1 mA |
|
Using LowPower.deepSleep() and modem shutdown |
MKR NB 1500 |
1.2 mA |
|
With non-usable GPIO pins set to INPUT_PULLUP, status LED disabled, and modem powered off |
MKR NB 1500 |
10.6 mA |
|
With modem shutdown and other optimizations |
MKRWAN 1310 |
104 µA |
|
- no I/O pins sourcing current
- no I/O pin sinking current
- no I/O pin floating
- Detach USB:
USBDevice.detach();
- Using external power source
- Remove solder jumper SJ1
|
When you know your power consumption when
sleeping,
sensing, and
sending, use
this calculator to size your system.
^back to top
What size solar panel do I need?
Power generation varies based on time of year, location and panel angle. We use the JRC Photovoltaic model to predict how much power a panel will produce, on average, each day. We then assume about 85% of that is converted into stored energy in the battery. When in doubt, get the bigger panel and battery.
For your convenience we have created tools to recommend solar and battery system sizes based on device power consumption and location for both small and large systems.
For more detailed solar irradiance estimates based on time of year and geographic location, see our solar modeling blog post and the calculator provides estimates as well.
Power Production into Battery per Day
Panel Size | Watt Hours Per Day Produced by Panel | Watt Hours Per Day Stored in Battery |
|
Texas Summer* |
Minnesota Winter** |
Texas Summer |
Minnesota Winter |
2 Watts |
9.4 |
5.3 |
8.0 |
4.5 |
3.5 Watts |
16.5 |
6.9 |
14.0 |
5.9 |
6 Watts |
28.3 |
15.9 |
24.1 |
13.5 |
*Assumes panel is angled South at 20 degrees to horizontal.
**Assumes panel is angled South at 60 degrees to horizontal.
^back to top
If the Voltaic battery runs out of power, then what happens?
If the V25, V50, or V75 run out of power while in Always On mode, your Arduino will stop working. Once the batteries build up a bit of a buffer of power from solar (normally about 20 minutes), the battery will power up and restart your Arduino. See more on the Always On page.
^back to top
How can I monitor battery state of charge?
We recommend monitoring battery SOC in any IoT application. The V25, V50, V75 have two pins that provide the analog voltage. We have details on this here.
The larger CORE systems have several monitoring options. You can read the voltage on the unregulated output, access the charge controller's RS-485 feed or use our optional battery monitoring system.