Can RFM69W wake a sleeping Moteino?

Started by xujianningkp, January 21, 2014, 10:44:05 PM

Felix

This is a classic problem for meshing wireless networks. Your middle nodes are routers. They will need to stay in RX otherwise your mesh has failure points all over.
There are a few approaches.
One is to reduce the duty cycle as much as you can on the battery operated nodes, then the nodes where power is plenty can try hard to reach those routers (up to the inverse of the duty cycle time - ie if you sleep the routers 900ms and keep them in RX 100ms then end nodes would try 10 times at 100ms intervals, assuming one of the slots will be a hit).
Another approach is to keep the routers solar powered as well, then that simplifies your mesh topology issues, and you can assume 100% duty cycle with much less required redundancy.
I would go with the second approach especially if your deployment will be semi permanent or permanent.
Such a wide spread WSN requires autonomy and redundancy. It will cost you a lot more $ to drive up there to each one to change batteries, even once in a few months. A lot more than a few solar panels, in the long run.

KanyonKris

Quote from: Felix on February 19, 2014, 07:49:47 PM
All great tips Kris, I see you keep improving my code releases :)

If I were you I'd hold off calling my hacks "improving" until you've seen my code. :)

xujianningkp, I like Felix's ideas and hope you can use them.

Is there no way you can make the link in one hop with directional antennas on each end? Back in the day I got WiFi to go over a mile with my home-made directional antennas.

xujianningkp

Quote from: Felix on February 19, 2014, 09:59:58 PM
Another approach is to keep the routers solar powered as well, then that simplifies your mesh topology issues, and you can assume 100% duty cycle with much less required redundancy.
I would go with the second approach especially if your deployment will be semi permanent or permanent.
Such a wide spread WSN requires autonomy and redundancy. It will cost you a lot more $ to drive up there to each one to change batteries, even once in a few months. A lot more than a few solar panels, in the long run.

I was planning to install small solar panels on each of them. However, All of these middle Moteinos will be install in a forest where the most direct sunlight is blocking by tall trees. I might just add more batteries in parallel to increase the capacities...Thank you for your advise  :)

Quote from: KanyonKris on February 19, 2014, 11:54:55 PM
Is there no way you can make the link in one hop with directional antennas on each end? Back in the day I got WiFi to go over a mile with my home-made directional antennas.

The entire system will be installed in a wild life state park where the most area is coved by trees. They don't allow any object (antenna tower) stick into the ground more than 6 inches and those trees are very tall. Otherwise, Ubiquiti Nanostation will be the best solution for long distance transmission..... just plug n' play 8) Thank you so much for your help too  :)

Felix

Interesting. I wonder what the effect of all the trees, branches, leaves will have on the RF.
Have you already done any testing in that forest setting?
Unless the forest is very dense there will still be plenty of light for some solar panels. You will not need a lot of direct sunlight, and these days the solar cells are very good. Just pick a size of panel that will provide enough to charge a lipo battery for the night and keep everything running during the day. Maybe a small panel like 1-3W should be plenty, just a guess :P

xujianningkp

Quote from: Felix on February 20, 2014, 11:00:15 AM
Interesting. I wonder what the effect of all the trees, branches, leaves will have on the RF.
Have you already done any testing in that forest setting?
Unless the forest is very dense there will still be plenty of light for some solar panels. You will not need a lot of direct sunlight, and these days the solar cells are very good. Just pick a size of panel that will provide enough to charge a lipo battery for the night and keep everything running during the day. Maybe a small panel like 1-3W should be plenty, just a guess :P

I will test them with the solar panels and see how long the battery will last for. Thanks for your advise :)

backdani

Quote from: KanyonKris on February 19, 2014, 03:17:12 PM
Here's what I'm doing to reduce power in my Moteino project:

I have a gateway and one remote Moteino. The remote sleeps for 15 seconds then wakes up and checks a sensor. If the sensors is the same state (i.e. was high, now it's still high) the Moteino does nothing and goes back to sleep. If the state has changed (i.e. was high, now low) the remote transmits this change to the gateway, and after receiving acknowledgement it listens for a few hundred milliseconds (I use 200) for commands from the gateway before going to sleep. Currently the remote listens for commands for wireless programming and changing a few parameters like how often to check the sensor. By only leaving the receiver on for a short time after transmitting data I can have the CPU and radio sleep most of the time and save a lot of power.

If your project allows you to use this technique I recommend it - it's working well for me.

BTW, the example code for wireless programming released by Felix is a push design that requires the target (remote) Moteino to be listening a lot in order to receive the new sketch pushed out by the Python script / gateway. I had to tweak the gateway sketch and the Python program to a pull design where they sit and wait for a transmission from the target remote and then initiate the wireless programming. It took some trial and error but it works pretty good for me.

I will put my code up on Github soon. The code is messy right now so I need to clean it up before release.


Hi KanyonKris,

I am interested to implement wireless programming on a sleeping moteino. I was struggling with this yesterday but I did not succeed. It seems you have a working code and I am just wondering if it is available now?

Thanks,
Daniel

KanyonKris

backdani, my apologies, I forgot about this. I'm pretty busy but I'll see if I can clean up the code and post it.