Help for avoiding data collision with DigiMesh firmware or another one

Hello everyone !

I’ve got a big issue with xbee’s, I have three xbee that I need to configure but I realized that I’ve got some data collision problem.

All modules are Xbee Pro Series 1 From Digi International
Here is the references :
FCC ID : OUR-XBEEPRO
IC : 4214A-XBEEPRO
Model : XBEEPRO
30009732-02
A

Backoff modules I’ve got : two in XBP24-ACI and two in XBP-AWI ( Antenna differences )

So, I need to have one main Xbee’s as a server and two Xbee’s as a client.

For example, the main Xbee send a command in broadcast mode like “CONNECTED” and the others module should answer like “OK1” ( For Xbee 1 ) and “OK2” ( For Xbee 2 )
(In real, my protocol is build with command-responses but a little more complex)
But, the clients module answer at the same time ! So on the main xbee module I’ve got something like “OK1OK2” and I just want something like “OK1” and “OK2” or “OK2” and “OK1”.

I configured all the modules with DigiMesh network it works nice except for data collision.
So I heard that the ZigBee protocol have an Random Delay Slots option that deal with the data collision avoidance.

X-CTU says : “Set/Read the minimum value of the back-off exponent in the CSMA-CA algorithm that is used for collision avoidance. If RN = 0, collision avoidance is disabled during the first iteration of the algorithm (802.15.4 - macMinBE)”

But, I want to know if I can get the same option on the DigiMesh firmware, I don’t see anything for the CSMA-CA algorithm that deal with that ?

I’m really confused, thank you so much for the help !

802.15.4 is pretty much the ONLY Xbee which you can use broadcast without serious performance problems.

Your problem is not collision - first, if the XBee have collision, then the Xbee auto backoff & retry, second, you’d not see both messages. In a true repeated collision, you’d lose one or both responses.

Why they end up togather is only because they arrive so closely together serially that your PIC/processor sees them as a single message. Switching to DigiMesh won’t help you as you’ll still see the same 2-messages close together.

Suggestions:

  1. put the number first, so 1OK not OK1 - if you expect to support more than 9, then code as 01OK.
  2. append a \r (carriage return or hex 0x0D), which means your code can easily break the responses apart.
  3. consider switching to API mode. AT-mode is tempting because it looks eaier … however, your post here is why AT mode is NOT easier. You’ll have dozens of challenges like this which just won’t happen in API mode.