Sending byte to sleeping XBee (Series 1)


I have 2 XBee Series 1 transceivers… XBee_Host and XBee_Sensor. XBee_Sensor is connected to a sleeping Arduino Pro and every 8 seconds, the Arduino wakes and sends a packet of data to XBee_Host which is on all of the time. Also the XBee_Host can send a single ascii byte to the XBee_Sensor anytime which is read by the Arduino and will turn on/off I/O in response. The XBee_Sensor was powered all of the time.

Everything was working good until I tried to lower the power of the XBee_Sensor by changing the sleep mode to 1 and using an active low pin on the Arduino to turn on/off pin 9 of the XBee_Sensor. The XBee_Sensor’s power is low, and its transmitting packets to the host every 8 seconds. However, I’ve lost the ability to send bytes from the XBee_Host to the XBee_Sensor while the sensor is asleep. It appears that when I transmit a byte from the host to the sensor, the byte is lost unless I time it perfectly and catch the sensor awake.

I’m planning on timing my XBee_Host transmission as soon as the packet of data from the XBee_Sensor is transmitted. I can leave the receiver on for say 200mS after the sensor sends its data.

Is there an easier or more automated way in the XBee setup to be able to queue a transmission and only send it when it senses an awake transceiver?

Any suggestions would be appreciated.


If you want to buffer tx messages in the network layer will need to move to one of the Series 2 ZigBee XBees. You could then set up your sleeping node as an End Device at which point its “parent” would automatically buffer messages until it wakes, dependant on a timeout. There is a limit to how many messages can be buffered. I can’t recall what limit is for the XBee (at least one, perhaps more).