XBee Shield strange


I have problems getting the XBee Shields running. First of all, I tried the HowTo - Tutorial as written on the Arduino-homepage. After that didn't work, I read myself into the XBee documentation, and how to configure them.

I sent the XBee module into command mode using an Arduino Diecimila. (wait a second, send "+++", wait a second)

Then I started to read out a couple of values.

The MY attribute was set to 0xFFFE instead of 0, as the default value should be. This would explain why the communication between the boards didn't succeed. The problem is: I can't change the value of MY, the XBee response is "ERROR", no matter what argument I send (unless I only send "ATMY", in which case I get the FFFE - answear. There are a couple of other things I don't really understand:

The channel is set to 0, not 0x0C - 0 is not even a valid value according to the documentation. The ID is set to 234, not 3332.

I changed the Destination address, to match the 64 bit serial number of the receiving XBee, or used the broadcast address, but neither of these attempts succeeded.

Oh yeah, when I enter command mode, the XBee modules seem to reset my Arduinos.

Since I do not only have three Arduino Shields, but also four pure XBee modules, I traded one of them to check whether the problem lies in the XBee modules I received. But the other modules show the same behaviour and values.

I am trying to get these things running for three days now, and I am absolutely out of ideas. I hope someone can point me to my mistake, or ask the right questions I haven't seen so far.


Okay - it seems that the XBee modules have progressed to a newer version slightly different to those in the tutorial.

I'm guessing that maybe you are using the XBee Series 2.5 instead of the older XBees (you can't set the destination in the Series 2.5). If that's the case, you'll need to change the firmware for one of your XBees to be a Coordinator and the code you write for the XBees will be a little different. I wrote a little tutorial about these in this post/thread. Hope that helps!

Yes, this was exactly my problem. It now works fine.

YES, I had the same problem and I was desperate with the new Series 2 xBees but now it works great!!!

Thx Cairn.

Now, one more question. In my project, I'm going to have 3 arduinos with the Xbee Shield and a fourth one (without de ATMega) connected to the Pc.

The remote arduinos will only talk with the Pc, so is very easy to program each one.

From the Pc side, to talk to each arduino it's also very easy, as you say in at the end of your pdf, using ATDN the message will be addressed to the appropiate arduino.

But, when I receive a messege in the pc from one arduino How will I know where does it came from? and, if 2 arduinos start a message at the same time, will they mixup at the receiving Pc??

Thx in advance for your help Regards Alejandro

Seems like our project structure is similar. (I have four remote Arduinos and and PC-connected)

Just like in your project, I have a star topology (the remotes only talk to the PC-connected)

Unluckily, I do not have the time to switch into commad mode everytime I need to address a different remote Arduino, and broadcasting leads to huge delays, which seems a weakness of the series two modules. Therefore I decided to switch to API mode. (This gives me headaches as well, but that's in the other thread)

To solve your problem: Simply give every remote Arduino an ID (1,2, and 3), and start every message transmitting this ID. Then in the program running on the PC you can decide from the first byte sent, from which device it came.

As for the mixing up: I don't think so. In Radio networks, devices normally "listen" whether some other device is already sending before they try to. (This is the simple explanation, it is more complicated in reality)


I saw you said there’s more on the API mode in the thread linked to in these posts, but that link seems to be broken. Could you re-link that thread maybe, please? Thanks!