Waking Arduino when XBee Receives a message

Hey guys!

I'm still working on my WSN-Fire and Panic Alarm System prototype and got certain functions already working.

But I would somehow like to take it a step further by managing power settings for my nodes generally consisting of an Arduino Pro Mini and XBee S2 modules.

The nodes are powered generally by the mains when available and a 3.7V Li-ion battery backup (still undecided for capacity but will probably be around 1100+ mAh) whenever a power outage occurs. The XBees must always be on since I configured them all as routers and it is important that these do not fail to receive any message when another node has gone off during an alarm. My Arduinos are also undergoing cyclic sleep such as adcNoiseReduction for about 15ms but I could just adjust anytime soon for best power savings.

The only times my XBee would use power other than being active are: 1. Fire is detected by node 2. Manual button is activated 3. Low battery voltage alarm 4. Tampering 5. Routing/Receiving message from routers/coordinator

So, here are my queries:

  1. Does it make a difference if I make the Arduino go to sleep while the XBee does not, compared to when the former isn't sleeping?
  2. If it does, how will I make the Arduino go to sleep and only becoming active when a message has been received by XBee?
  3. In regards with question 3, what power mode is best used since I've read from sources online that some bytes may be lost when the Arduino is still trying to wake up from certain sleep modes?

I'm sorry for the long post but I've been trying to make it as much comprehensive so no hopefully no issues with that.

Your post does not make clear if the Xbees are on all the time or not, you first say they must be on all the time and then add other circumstances when they consume power ?

Power saving is a numbers game, you need to know the power consumption of your kit, current and time, so with the kit in front of you, do some measurements.


I'm sorry. Somehow I still haven't mastered the skill of being logically precise and direct with my sentences. Anyway, what I meant was consuming more power by transmitting/receiving packets, rather than just running itself on idle mode.

Do you have any idea when dealing with interrupts using XBee to wake up Arduino? Somehow I've already used the pins 2 and 3 for DebugSerial and I'm still finding a way on how to just connect the Rx and Tx of Xbee to the Arduino's serial pins.