Simple Low-Power Arduino Weather Station

With two lines of code and cutting one trace I reduced the use of my Arduino Nano Wireless Weather Beacon by 66%!

BaselineLow Power LibraryCut LED Trace
Max (mA)14.4813.2211.70
Min (mA)12.73
NotesAlways on7 seconds @ 4.7
2 seconds @ 13.0
7 seconds @ 2.75
2 seconds @ 11.0

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.


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.

Posted in Projects and tagged , , , .