With two lines of code and cutting one trace I reduced the use of my Arduino Nano Wireless Weather Beacon by 66%!
Why Reduce Power?
The Arduino Nano is already a reasonably low power device, using just under 15mA to run my small application. How much benefit is there in reducing the usage of 15mA?
With a quick check, we’ll notice that running this weather beacon with 2800mAh batteries gives us a runtime of just (2800 / 13.5 =) 207.4 hours or about 8.64 days; that’s assuming ideal discharge. If we drop our current draw to just 5.58mA, we get (2800 / 4.58 =) 611.35 hours or 25.47 days.
Even nearing a month isn’t as low-power as off the shelf wireless weather sensors. However, for a hobby project, this is a respectable amount of time to play and learn.
How to Reduce Power
Generally Speaking
There are some common areas to look at when reducing power:
- Reduce the frequency of your work by sleeping more or sending data less often.
- Turn off subsystems you don’t need like Analog to Digital conversion.
- Remove unnecessary parts like LEDs and regulators
- Use low-power modes where the majority of the microprocessor is shut down.
My Approach
I simply used the Low Power library by rocketscream to put the Nano to sleep for ~8 seconds, then I cut the trace on the power LED. Both are describe nicely by steps 1 and 2 of Arduino Low Power – How To Run ATmega328P For a Year On Coin Cell Battery. I also stopped sending debug information on there serial port, since nothing would be connected during normal operation.
Code
The latest code can be found on GitHub: basic-weather-station
Other Resources
I also found these articles helpful in exploring more options, even though I didn’t try them in my application.