[HN Gopher] How to run an Arduino for years on a battery (2021)
___________________________________________________________________
How to run an Arduino for years on a battery (2021)
Author : thunderbong
Score : 103 points
Date : 2025-07-17 06:39 UTC (3 days ago)
(HTM) web link (makecademy.com)
(TXT) w3m dump (makecademy.com)
| ggm wrote:
| running RF for wifi or BT or something may boost the budget a
| bit. Fixed point sampling capture would mean clock coordination
| which drifts. Sending a wake call to come out of low power states
| is what the old "Morse code" audible pulses of interference on
| radio in the GSM days were doing: making the higher cost digital
| signalling stack wake up.
|
| I think zigbee does stuff in this space. 6lowpan too.
|
| Put a wifi or bt shield on, battery will drop faster.
|
| If the led can blink a code, you could remote read it off a phone
| or something. Newton's did IR networking. The conference
| translation headsets use it too: the radiators for the signal get
| appreciably hot.
| userbinator wrote:
| _Sending a wake call to come out of low power states is what
| the old "Morse code" audible pulses of interference on radio in
| the GSM days were doing_
|
| No, that's the phone itself transmitting in its TDMA timeslots.
| https://en.wikipedia.org/wiki/Time-division_multiple_access#...
| ggm wrote:
| So I got the directionality wrong, but it did seem to presage
| a call event: you heard the distinctive tones before the
| ring.
|
| Would you agree it's part of the re-initialisation sequence,
| even if not directly caused by the transmission infra talking
| to the phone?
| KaiserPro wrote:
| > Sending a wake call to come out of low power states is what
| the old "Morse code" audible pulses of interference on radio in
| the GSM days were doing
|
| kinda, but in this instance the radio in receive mode is quite
| expensive, something like 1-20ma. To get years long battery
| power you need micro amps.
| icedrop wrote:
| Are images loading for anyone else? Seem broken for me.
| can16358p wrote:
| Not loading for me either.
|
| Otherwise great post, though I'd love to have seen the images!
| shlip wrote:
| Try https://web.archive.org/web/20210928210220/https://makeca
| dem...
|
| Else, the schematic is here (the first pic is just a shot of
| the atmega chip): https://ibb.co/8gVbm1XR
| jcynix wrote:
| archive.org has saved the images:
|
| https://web.archive.org/web/20210615000000*/https://makecade...
| JdeBP wrote:
| An apparently very common CloudFront misconfiguration that has
| spawned a thousand articles and StackExchange Q&As on how to
| fix it. Randomly chosen one:
|
| * https://minac.github.io/2015-05-20-s3-cloudfront-access-
| deni...
| xmprt wrote:
| I wonder how well this works in practice with a more complicated
| project. For example, if you have something that's usually
| sleeping but still needs access to wifi in order to send data and
| can also be woken up by another sensor in which case the loop
| isn't as simple. Throw in some threads running in parallel and it
| becomes much harder to manage. There are sleep modes that you can
| use for this but it's not as simple as this.
| imhoguy wrote:
| There is no free lunch, but you can sleep for minutes, you can
| use BLE for comms, e-ink for infrequent display updates etc.
| KaiserPro wrote:
| Wifi is about 20-60ma, so its unlikley.
| whatever1 wrote:
| Maybe there are specialized microcontrollers that just
| efficiently sleep and wake up other microcontrollers?
| fake-name wrote:
| The ATmega328 (i.e. arduino without the garbage) _is_ that
| microprocessor.
|
| It can sleep and only use ~66 microamps at 5V with the watchdog
| timer enabled. That's 330 microwatts. A 1000 mA lithium cell
| (3.6 watt-hours) could then run it for ~10909 hours, or 454
| days (~1 1/3 years).
|
| Almost _every_ microprocessor made these days has some sort of
| low-power sleep. The ATmega series aren 't even particularly
| good at being low-power.
|
| Of course, you then realize the "arduino" is really just a
| badly designed development board for an atmega, and they went
| and used cheap voltage regulators that have an idle current
| consumption of > 1 mA, and give up on the whole project.
| crocowhile wrote:
| Arduino a poorly designed board is up there with the iPod
| being lame. Arduino was designed to be accessible and lower
| entry barriers and it became unrivaled for these purposes. If
| you want to have long lasting battery powered project you
| just power directly with 3.3v.
| mtlmtlmtlmtl wrote:
| I spent some time* working on the firmware side of
| developing custom electronics based on various AVR chips,
| ATmega328 among them. Arduinos are not good for much more
| than babby's first microcontroller project. They're not
| even that great for prototyping. Besides the aforementioned
| hardware design issues, the "arduino" language(really just
| C++) and core library had several problems both in terms of
| code quality and abstracting over things that shouldn't be
| abstracted over when working with such a limited chip(8bit,
| 2k SRAM...), like significant memory allocations and
| interactions with SREG.
|
| My EE partner in crime ended up designing a prototyping
| board himself, with various creature comforts included that
| we needed shields for with Arduino, and I ended up writing
| just C with avr-libc instead of using any of the arduino
| library/tooling, developing a set of core modules to use
| the things we added to our boards, in a more flexible
| manner than the Arduino library. It took some time, but it
| saved us a lot of time and friction in our future
| prototyping efforts.
|
| All that being said, there's nothing wrong with Arduino as
| a platform for learning and personal tinkering. I do think
| they could've done a better job bridging the gap between
| that and prototyping though.
|
| * Ten years ago, so my memory of specifics is very fuzzy
| and only reflects the state of things back then.
| sokoloff wrote:
| > Arduinos are not good for much more than babby's first
| microcontroller project.
|
| Baby's first microcontroller project is exactly what they
| excel at and, by doing so, they made hobbyist
| microcontroller development vastly more accessible.
|
| The Arduino value comes from the ease-of-starting and
| they made that a lot easier than the then-extant state of
| the art.
| FirmwareBurner wrote:
| _> Arduinos are not good for much more than babby's first
| microcontroller project_
|
| So ... exactly for what the device is being sold as?
| Weird complaint: "I purchased an apple, and all I got was
| an apple that's only good as an apple."
|
| _> I spent some time_ working on the firmware side of
| developing custom electronics based on various AVR chips,
| ATmega328 among them*
|
| Then you would know that ATmegas are in a lot of
| successful commercial products from the past.
| mtlmtlmtlmtl wrote:
| >So ... exactly for what the device is being sold as?
| Weird complaint: "I purchased an apple, and all I got was
| an apple that's only good as an apple."
|
| Like I said:
|
| >>All that being said, there's nothing wrong with Arduino
| as a platform for learning and personal tinkering.
|
| I was just adding my 2 cents on Arduinos based on
| personal experience. That is all.
|
| >Then you would know that ATmegas are in a lot of
| successful commercial products from the past.
|
| Yes. What led you to believe I was suggesting otherwise?
| I made no criticism of the ATmega328, any other ATmega
| chip, or the AVR ISA for that matter. I could make some
| if I wanted to, but it doesn't seem relevant. The topic
| was Arduino boards, which typically contain an AVR chip,
| but is in fact not a chip but a dev board.
| guenthert wrote:
| TI's MSP430 is well suited for low-power applications (sleep
| current less than one uA) and has a number of other interesting
| features. Chances are the run-time is then limited by the self-
| discharge rate of the battery.
| criddell wrote:
| I keep hoping that somebody way smarter than me will
| eventually make a modern version of the TRS-80 Model 100. The
| original would run for days on 4 AA batteries. You would
| think that with modern chips and displays, you could get
| months of runtime on a set of 4 AA batteries.
|
| The ideal system for me would be almost identical to the
| original machine. Simple OS (not Linux), basic applications,
| no web browser or WiFi.
| colechristensen wrote:
| they are called "nanowatt"
|
| i.e.
| https://ww1.microchip.com/downloads/en/devicedoc/39941d.pdf
| lpribis wrote:
| This functionality is commonly built in to the microcontroller
| itself. MSP430s, STM32s ATMegas, and many others have real time
| clock and gpio wakeup functionality, which effectively lets you
| power off almost the entire die until either a time period
| passes or a gpio changes state. Commonly you can do similar for
| more complex peripherals as well, eg power off the core until
| you receive a UART message, but typically this is not a full
| power down like RTC sleep as it requires some peripheral clocks
| to stay running.
| apple1417 wrote:
| On one of the projects I worked on, I brought a PIC16 down to
| ~20nA - where our fancy meter only went down to 10nA precision.
| It was completely unnecessary, but I'm still quite proud of it.
|
| For more standard cases, the 43uA from the article is roughly
| the same order of magnitude you'll get from pretty much any
| micro in sleep mode, after doing your first pass low power
| optimisation. The stuff I normally work with gets about 10. The
| thing is just, most of the time, that's low enough already -
| for this project 2500mAh/43uA = 6 years of sleeping. The bigger
| factor is the current it consumes while awake - and that's
| where the Arduino's a bit of a letdown, the stuff I normally
| use is only in the order of 100uA while awake.
| Avamander wrote:
| Yes, they're called low-power (or nano-power) system timers.
| Some also incorporate watchdog timer functionality. These chips
| turn on power to the main CPU based on some given interval. TI
| has a few that consume ~30nA (@2.5V), like the TPL5100.
|
| This is when the MCU itself you're using doesn't have this
| functionality of if it's still consuming too much power. MCUs
| like the ATMega368(PU) consume ~100nA in their deepest sleep
| states, so it can be a rather drastic reduction in some cases.
| _ache_ wrote:
| There is an obvious mistake in the include.
| #include <JeeLib.h;>
|
| And the library doesn't seems well documented and rather shady
| actually.
|
| What is the casino thing ? It looks like an abandoned project
| that got web squatted / Brandjacked.
| lioeters wrote:
| > JeeLib is an Arduino IDE library for JeeNodes (made by
| JeeLabs)
|
| Source code: https://github.com/jeelabs/jeelib
|
| Website: https://jeelabs.org/202x/sw/jeelib/
|
| The latter redirects to a page that shows Git commits, but it's
| a hidden page in a Dutch site about online casinos. It does
| look a bit shady. In the GitHub org of jeelabs, there are only
| two authors and neither seem to be based in the Netherlands.
|
| Here's an archived website that documents the jeelib library.
|
| https://archive.ph/nmF5Q
|
| Relevant line:
|
| > a Sleepy class for ultra low-power sleeping of ATmega and
| ATtiny uC's
|
| From a quick skimming of the codebase, I couldn't find this
| class. If I were the author, I would have forked the Sleepy
| class for my own use.
|
| Edit: Here's the definition of the Sleepy class.
|
| https://github.com/jeelabs/jeelib/blob/6df2d8da785aca77790e9...
|
| It uses avr-libc's sleep functions.
|
| > <avr/sleep.h>: Power Management and Sleep Modes
|
| https://www.nongnu.org/avr-libc/user-manual/group__avr__slee...
| JdeBP wrote:
| The root page that you want is https://jeelabs.org/w/ .
| KaiserPro wrote:
| Jeelabs was a guy that made a whole ecosystem of compact
| lowpowered arduino boards with radios attached.
|
| He did a series of posts as he made it ever more power
| efficient, but that was about 10 years ago.
___________________________________________________________________
(page generated 2025-07-20 23:01 UTC)