Battery operated actuator

  • Has anyone had success with a wireless battery receiver?

    I think at this point battery transmiter are well unsderstood and can last years on batteries.

    But an arduino that can listen for commands is harder to pull of since the radio needs to be awake to receive commands, but that consumes lots of power.

    I searched for a ultra low (< 500uA) wireless receiver that could wake the arduino on receiving and but didnt find anything even close.

    The only other option i was thinking about is introduce an acceptable delay. Say you sleep for 8s (max watch dog timer lenght) and then listen for commands for 100ms or so. The transmitter would have to be either constantly transmiting for 8s when it wanted to issue a command or keep a synced clock with the reciver (it could be keep up to date in every transmission) depending on the acuracy of the clocks the receiver awake time could be minimized.

    Anyway iam going to test that last strategy after i finnish my proyect to operate on constant wall power and then ill try to switch it to batteries (its an AC remote control)

  • Hero Member

    For a receiver, you can get huge power savings by using Listen Mode on the RFM69. Depending on settings, It can run for 10 years (maybe longer) on a set of batteries. It also has much better range.

  • Hey NeverDie, is there any documentation/tutorial on that? I googled it and only ran into an arduino forum thread that dismissed that mode.

  • Hero Member

    The datasheet.

  • I haven't done this yet, but my plan was to have the remote sensor act just like any other transmit only node, except that it would request status from the controller for the light or whatever it is controlling, and wait a short time for a reply.

    This would also introduce delays in activating said device, but would allow the node to sleep and just wait a short time for a reply rather than waiting for an asynchronous command. It would also not require any synchronization of clocks nor continuous retransmission.

    Basically, the actuator polls the controller whenever it desires to see if a change in state has been requested.

  • @brianc1969
    It is absolute possible.
    I am pooling this way a relay statuses when node starts.

  • So I got around to implement this. My project is an air conditioner controller. I decoded my AC remote IR protocol and write code to send it using an arduino pro mini.

    This is the mainloop I'm using, basically I sleep 2seconds, then listen for commands for 15milli seconds.

    void loop()
      bool gotCommand = false;
      RadioCommand data;
      // Power up the radio, start listening and then sleep 15MS to allow
      // the radio to receive any commands.
      LowPower.powerDown(SLEEP_15MS, ADC_OFF, BOD_OFF);
      // Clean the full pipeline. Only execute the last command
      while ( radio.available() )
      {   &data, sizeof (RadioCommand));
        gotCommand = true;
      if (nLoops > PING_LOOPS)
        nLoops = 0;
      // If we got a command and its actually different than last time
      if (gotCommand && lastSeq != data.seq)
        SendWhirlpoolCommand (;
        lastSeq = data.seq;
      LowPower.powerDown(SLEEP_2S, ADC_OFF, BOD_OFF);

    The sending side is a raspberry pi that just tries to send the same message for 5 seconds when it wants to send a command.

    I have very good reception so it always picks the package on the first try, this gives me an average command actuation of 1second, pretty good.

    I ran this in two AA rechargable nimh batteries for 3 days and the voltage didn't changed at all. Today I changed the batteries for two ElCheapo alkalines, the ones that I actually want to use. I'll report back how the batteries are progressing.

    I want to add a temperature/humidity sensor, probably going to be ordering either the Si7021 or the HTU21D as I need it go work with low voltages as I'm not using any step up, I'm running everything directly from the batteries.

    BTW, I'm not using any of the software as I wanted to write the whole stack myself for the learning experience (I have already the the nodes, controller and web interfaces for this) but I have found that this community has a lot of the same goals that I do.

  • In case anyone is interested in this topic I'm updating with my battery results after 1 month.

    Master is the sensor running the code I posted above, I hope I'm in good track for the battery to last at least 6months. JP and Magy are running the same code but sleep for 4 seconds instead of 2. I think they are following the same pattern as master but almost 2x slower. Ups in voltage seems to be 100% temperature related. Those are running in 2 AA batteries.


  • Any chance of another update @riataman ?

  • 0_1454087697334_voltage.png

    There you go, I think the rate of discharge went down a little bit inline with the 2A alkaline discharge curves I have seen.

    You can't tell exactly by the chart, but all updates are up to today (Jan 29) Master is at 2.88V, JP is at 3.027V and Magy is at 2.979V.

    I think I'll call this a success since looks like I'm en route to last at least the 6months that was my original goal.

    By the way, I added a Si7021 sensor to the "master" node and it now reports temperature and humidity every 3minutes. It also has now a magnetic window sensor that it monitors via a pin interrupt to report open/closed state of a window.

    I'll try to find time to document all this project for the contest, here is an screenshoot of the web UI that I'm using to control the whole thing.


    The web UI is basically jquery mobile widgets plus a bit of javascript. The backend is written in python+flask running in a raspberry pi, that sends commands to my radio control, written in C also running in the same raspberry pi, the controller manages the radio communication, the nrf radio is directly wired to the raspberry pi IO pins.

    It controls 5 independent AC units, three are running on batteries and two are wall powered. The interface scales very well to desktop/mobile so I can control my ACs from anywhere on the internet.

    One of those nodes can also controls a Lutron IR wall switch. Another one has a natural gas sensor. And most of them have temperature/humidity sensors.

  • Great project. I also had the same thought to control my AC and TV but was afraid of power consumption and that I will be forced to power it from wall. But seems like the sleeping periods work great till now.

    I'll suggest that you implement in your project a technique to detect if anybody is at home or not, and if nobody is at home you can increase the sleeping time to wake every 1 or 2 mins or even more for example.

  • @ahmedadelhosni: A big part of me doing this project is for controlling the ACs when I'm not home (for example if I'm heading home and I want it to be warm/cool when I arrive). I can access the controlling UI from anywhere as long as I have internet. What I was thinking is that I can increase the sleep time during the night when I usually not sending commands.

    I think you can still improve my power consumption, the RF24 library has some delay() calls that could potentially be changed to sleep calls, or just don't do them at all since you'll be sleeping in another moment, would need careful review. Also my arduino pro mini is consuming a bit more current than what I have seen other archive, I never was able to figure out why, probably with a barebones Atmega328 board you can improve on those too.

    Another area that could use more research is the listening time, I'm listening for 15ms and that was the barely necessary in my test, but I kind of remember if you didn't sleep the radio you could get away with shorter listening times, that maybe end up using less power. Also I'm using the 250kbps transmission speed of the RF24 radio, if you go with the 2mbps the time to transmit a packet over the air maybe shorter, I'll be worth investigating that.

    I have two nodes that are connected to the wall and I have found that I don't really need them to be directly pointed to the AC, if you get very bright IR leds and drive them at full voltage/current the IR light will basically bounce in the whole room and that gives you a lot more flexibility in placement.

    The other bit that I have and that I forgot to post is a node that I wired in the switch box and is using current transformers and the EmonLib to monitor the current going to the AC units, that allows me to know if the AC is turned on or off, something very useful when I want to control them remotely. I'll try to post pictures of that tomorrow.

  • @riataman, have you looked at this:, it's based on the HeatpumpIR library I've written? I just added a few new heatpump models yesterday and today into the library...

    Anyway, in my project I'm currently using Arduino Nano + NRF24. I placed this inside the indoor unit's covers, IR led next to the IR eye of the unit, and I even stole the power from the air conditioner, as its logic is running on +5V, which is conveniently the same as the operating voltage of the Nano ๐Ÿ™‚ Of course I can't recommend anybody to do that ๐Ÿ™‚

    I just got some Sensebenders this week, so I'm trying to build a way smaller device for the other A/C unit I have.

  • @ToniA Tony that's way cool and very similar what I'm doing. The split units that I have are GE and Whirlpool. I don't see you having support for those in HeatpumpIR, I hope to find the time to publish my analysis of their protocol (I only decoded it partially, those have long sequences to maintain time/timers but I just hard coded that).

    I was thinking about tapping into the condenser, specially to see if I could find a better way to detect if the unit was on since the indirect method of measuring the current going to the unit has some drawbacks (when the unit is in heat mode and it reaches the target temperature the current that it draws is the same as when its off, so there's no way to tell on/off state at that point).

    At the end I decided against fiddling with the unit itself since my wife wouldn't be very happy if I broke it.

    What kind of UI do you use to control the units? I'm really not using any MySensors code/controllers at all, everything I have is written from scratch (minus sensors libraries) .

  • This is what I'm using as the control interface:

    It's still under work, but I should be able to have events running on Domoticz, like turn on the A/C if it gets too hot inside the house etc.

  • Admin

    I have been looking into battery operated actuators and thinking that the RFM69 radio with its unique low-power listen mode may be the way to go. @tbowmo has created an NRF24L01+ to RFM69HW adapter that provides a fairly seamless integration Here is an excerpt from the RMF69 data sheet, page 39

    4.3. Listen Mode
    The circuit can be set to Listen mode, by setting ListenOn in RegOpMode to 1 while in Standby mode. In this mode, SX1231H spends most of the time in Idle mode, during which only the RC oscillator runs. Periodically the receiver is woken up and listens for an RF signal. If a wanted signal is detected, the receiver is kept on and the data is demodulated. Otherwise, if a wanted signal hasn't been detected after a pre-defined period of time, the receiver is disabled until the next time period. This periodical Rx wake-up requirement is very common in low power applications. On SX1231H it is handled locally by the Listen mode block without using uC resources or energy.

    I don't have time to auger into this aspect of my project right now but want to share it with you guys because it may be a via path to drive power down to something feasible for battery operated actuators. The forthcoming gateway will include pads for an RFM69HW radio so I am giving the RFM69HW serious consideration for my battery actuator projects.

  • Since some people people have found this useful I'm posting an update. Six months have passed and I'm very happy with the results. The nodes using the 4 second sleep are barely now into the nominal voltage of two AA batteries (3V) and I think those can last a copule of years like that.

    The 2 second sleep node is dipping a lot faster, but I suspect that the cause is the Si7021 taking readings every 3minutes that is accelerating the decline, even then I think this one could almost make it to a year.


  • @riataman, any chance you could share the hardware and software used in your project? I'm looking to build a battery operated A/C controller.

  • @ozrex,

    Welcome to the forums.

    Looks like OP was "Last Online 1 Dec 2019" according to his profile, also this thread itself is quite old. He may or may not return to reply.

    In case he doesn't, it looks to me (I only scanned the thread) that he was using standard Arduino Pro Mini + nRF24 radios, although with some more custom code he implemented (which can be found in the thread). There was some discussion about nRFM69, but that seems more "WIP" to me and would require following some of the links in the thread and doing more research.

    Or did you mean the A/C interface part? That would depend on how your A/C is controlled (433mhz? wires? etc.). Need more info there.

  • @TRS-80 Thanks for your reply. My A/C is infra-red. I'll take a further look and see how I go. Thanks again!

  • @ozrex,

    I don't want to assume your knowledge level. However the truth is that you will probably need to put together different bits and pieces from various threads in order to come up with your own custom solution (the A/C interface (IR) part, the battery part, etc...).

    Maybe it is worth it to create your own new thread, or maybe you want to keep researching / trying on your own a little longer first. The latter is admirable, and is the way I usually do it, too. Some times to a fault in my own case. ๐Ÿ™‚ Don't suffer along in silence if you are struggling to find the information, make a thread instead. If it becomes too difficult you may give up. We all need some small successes along the way to keep motivated and keep it fun. ๐Ÿ™‚

    Probably best to create a new thread (I don't want to derail this one too much) but something you might want to look into is OpenMQTTGateway. I use it for my 433mhz, but it also supports RF, BLE, LoRa (and perhaps others in future) all on the same gateway! To me that was the way to go... And so far has been flawless for me.

Suggested Topics