Low Power Servo Actuator
I have been planning a build for a blind controller along with my openHAB/Arduino serial gateway. I currently have things running the the bench with a USB powered Uno. I was under the impression that this could potentially be accomplished using battery power on a pro mini.
I just read this post, and now I'm second guessing that this can be done. My plan was to power the arduino with 2AA batteries, and power the servo with 4 AA batteries.
Am I understanding correctly that having the remote actuator "listening" for commands from my serial gateway will consume batteries quickly? If so, is there any way around this?
To my knowledge, no radio chips with really low power consumption in receive mode exist. They all consume on the order of 10mA. Even Bluetooth LE consumes quite a lot when listening.
The best solution so far is to sleep with everything turned off, wake every once in a while and see if there is something to do, and then go back to sleep again. @riataman has made good use of this technique in this thread and is getting about 6 months battery life for 2xAA.
The drawback with that technique is that you get slow response time (up to 4 seconds in riataman's implementation) and that you need to have the controller repeat the same instruction over and over until the node decides to wake up.
How about putting a solar panel on your node to recharge the battery? Since the node is controlling blinds, I guess it will be close to a window, with access to sunlight?
Some interesting reading on the topic:
http://electronics.stackexchange.com/questions/59810/bluetooth-low-energy-power-consumption-in-sleep-state (about bluetooth LE)
https://lowpowerlab.com/forum/index.php?topic=775.0 (discussion about RFM69HW)
http://threadgroup.org/Portals/0/documents/whitepapers/Thread Battery-Operated Devices white paper_v1_public.pdf
Thanks for that info. I'm sure I'm not the first that has thought of it, but I wonder if it would be possible to have the remote actuator "poll" the controller for a status and wait for a response? There would be a delay, but maybe there could be a compromise between battery life and lag in commands being carried out by the actuator.
I haven't looked, but maybe someone has tried this already...
Yes, that would be possible as well. That would eliminate the need for the controller to keep re-sending until the remote node decides to wake up, and might shorten the time the remote needs to stay awake for a response. But the delay would still be there, if the remote node only polls every 4 seconds you may have up to 4 seconds delay between when you press the button and the remote node wakes up.
According to the nrf datasheet, the radio actually consumes less current when sending. 12.6 mA when receiving and
We have implemented a "Smart sleep" in development. That sends a heartbeat message and waits a bit for incoming data from the controller before going back to sleep that could be useful for this scenario.
I don't know if any controller supports this feature yet though. That is buffer outgoing messages and sending them when node wakes up.
I'm planning to add support for this in pymysensors and Home Assistant. Would you say the dev regarding this is tested enough that I shouldn't expect major problems in the implementation?
On the sensor node side it isn't very complicated and should work.
Guess we still could tweak the stay-awake time down a bit. But it depends on how many hops there are to the node.
On the controller side I imagine it would only be useful to buffer the last command sent.
Thanks for the comments. Sounds good. I'll report back when I have some progress.