I want to build a remote control project when both the transmitter and the receiver will use 2 AA batteries.
The transmitter has a push button and the receiver have a led. The push button on the transmitter turn on the led on the receiver.
Something like this sample, but with push button:
I use Arduino mini pro 3.3V without led and regulator and NRF24L01 RF model.
I want to be as most power efficient as possible (the project should work for more than a year on one set of batteries).
In the transmitter its not a problem, I can wake the Arduino on interrupt from the button and then power on the radio and send the packet.
My problem is in which approach to use to create the most efficient receiver?
I can think of methods of, for example to wake the receiver every 200MS to 50MS and when the transmitter transmit, to repeat the transmission every 25MS for 10 times. I'm sure that there are better pattern solution and I don't want to invent the wheel...
So, In which ways can I create the project more battery efficient?
You are on the right track with synchronized transmissions. But the efficiency will be roughly inversely proportional to the latency. So in idle, how much response delay can you tolerate? I think you have to keep tight timing on both the transmitter and receiver, so that there is a good chance of the transmitter being active during the receiver wake-up window. Initially, the receiver can wait for a signal. If you do this right, the first received signal will contain sync information so it knows when is the next time to wake up and listen.
But although receiver power requirements vary, I'm sure that you can see that there is no way it can be in any mode but fully on, when expecting an incoming transmission.
I've been thinking about this, because I also need to do it.
If I want to allows to more than one transmitter to "talk" with the receiver, The transmitter should sync itself to the reciver listening window ?
I can allow a delay of one second between the button press on one of the transmitters until the led light response, what is the best practice of sleep / wake / transmit / receive pattern to save energy?
If I want to allows to more than one transmitter to "talk" with the receiver, The transmitter should sync itself to the reciver listening window ?
I can allow a delay of one second between the button press on one of the transmitters until the led light response, what is the best practice of sleep / wake / transmit / receive pattern to save energy?
How on earth would the transmitter know what the receiver is doing? No.
So transmit once a second, wake up and listen once a second. You can't send the button press instantaneously. I hope you can see why.
Eladh:
I can think of methods of, for example to wake the receiver every 200MS to 50MS and when the transmitter transmit, to repeat the transmission every 25MS for 10 times. I'm sure that there are better pattern solution and I don't want to invent the wheel...
Some time ago I built a system like that for an IR receiver running off an 80mAh LiPo.
The trick is to keep the transmitted message as short as possible - a few millisecs should be enough.
The receiver has to wake for a bit more than 2.5 times the length of the message. If it is only twice as long it could wake halfway through and get the last half and the first half of two messages.
The transmitter should repeat its message continuously for a period slightly greater than the combined sleep and wake time of the receiver to ensure it catches a wake period. Because the transmiitter operates much less frequently its energy consumption should be less of a problem.
That should allow a sleep time of 200 millisecs and a wake time of (say) 10 millisecs. Longer sleep times could be allowed if the person transmitting has patience.
It would also be useful to study the nRF24 datasheet carefully to see what energy saving options it has. Maybe it can wake the Arduino when it detects a message.
I call to the button unit - button
And to the led unit - led
The led button should transmit a ping every 10MS, the transmit length is about 3usec (and the transmission power is about 20ma).
The bottom unit should wake the receiver when the button changes its state. Then the receiver should stay up until it's read the transmission from the led unit.
Then, it should send the new state via writeAckPayload.
The led unit should consume energy for 3usec * 100 (times in a second) * 60 * 60 * 24 * 365 = 9460800000useq which is 9460 seconds which is less than 3 hours of transmission per year!
If the transmission power is 20ma than in a full year the unit should consume less than 100ma.
The button unit should receive for 30ms (3 times the window unit) when the button pressed.
If we press the button every minute than in a year should be 6024365 presses = 525600.
If every press wake the transmitter to 30ms all the presses wake the transmitter to 525600*30/1000 which is 15768 seconds = 4.38 hours of transmitting in a year which are also less than 100ma in a year.
You define button and led as two separate things. Then in the next sentence you say "The led button should transmit"
Surely only the button should transmit and the LED should receive.
And if the LED is the receiver this makes no sense
"The led unit should consume energy for 3usec * 100 (times in a second)"
why would it do anything until it receives a PING ?
I want to build a remote control project when both the transmitter and the receiver will use 2 AA batteries.
The transmitter has a push button and the receiver have a led. The push button on the transmitter turn on the led on the receiver.
Something like this sample, but with push button: http://www.instructables.com/id/Wireless-Remote-Using-24-Ghz-NRF24L01-Simple-Tutor/
I use Arduino mini pro 3.3V without led and regulator and NRF24L01 RF model.
I want to be as most power efficient as possible (the project should work for more than a year on one set of batteries).
In the transmitter its not a problem, I can wake the Arduino on interrupt from the button and then power on the radio and send the packet.
My problem is in which approach to use to create the most efficient receiver?
I can think of methods of, for example to wake the receiver every 200MS to 50MS and when the transmitter transmit, to repeat the transmission every 25MS for 10 times. I'm sure that there are better pattern solution and I don't want to invent the wheel...
So, In which ways can I create the project more battery efficient?
Remains one question: are there modules of lower standby power?
jlettens commented in that thread that the LM358 draws 2.5 mA, which is more than half the total quiescent current draw. If you are good with a hot air rework station, perhaps it could be replaced with a much lower power op amp.
how did jlettens register his account after his first and only post
Because the forum shows posts in YOUR local time where as the registration time is not your local time unless you live in the same time zone as the default time on the server which I think is GMT +1.