SparkFun Forums 

Where electronics enthusiasts find answers.

All things pertaining to wireless and RF links
By pjwerneck
#98055
So... I got used to the nrf2401 modules for my wireless project, but a friend has been recommending XBee for a while. To get started, I bought from Sparkfun two of the 2mW 2.5 modules (part# XB24-BWIT-004) and two of the Sparkfun designed Arduino XBee Shield since my plan is to get two autonomous robots to communicate.

I googled around for some info and tutorials on getting them up and running, but so far no luck. First I just tried to run some sample code to see if they work out of box but got absolutely nothing. Then I tried sending some commands over the serial port to get to command mode, and still nothing. Then I tried to follow the tutorial on the link below, downloading and installing X-CTU, removing the atmega ic from the Arduino as oriented somewhere else, putting the shield switch on the UART position and tried the test/query as well as to get the firmware info with X-CTU. It always fails. I tried all baudrate options, with API enabled, etc, and nothing ever happens. It's like the modules aren' t there. The DIO5 led is on all the time, as the power led. I soldered a wire to the reset pad and used it to reset the XBee module during an attempt to read, and DOUT led turns on and DIO5 off when I touch ground with it, but nothing else.

I considered updating the firmware, but from what I read around, if I can' t query the current version I won't be able to do anything else anyway, and I'd need the XBee Explorer anyway (out of stock), because it needs the RTS, unavailable on the Arduino. From the tutorial, seems like the ftdi breakout board works, but I only have the basic anyway, which doesn' t have a pin for RTS either.

Obviously, I already checked all soldering on both shields, and the Arduino boards are working. I tried with 4 different boards, the result is always the same.

Any ideas on how to get this working?


http://blog.kevinhoyt.org/wp-content/xbee-setup.pdf
By pjwerneck
#98099
So, I spent some more hours trying to get at lest the test/query to work and be sure the modules weren't dead, and no luck. I read some complains about the sparkfun XBee shield in some foruns around and this morning I decided to give it a shot using the FTDI basic breakout. I wasn't expecting it to work due to the lack of RTS, but I just connected all pins to their correspondent on the XBee module (TX -> DIN, RX -> DOUT) and it works perfectly with no need for any fancy stuff, like resetting, hotplugging the module, etc.

I was able to update the firmware and settings and get the example from the tutorial to work. The example is just sending a test string from the XBee on the Arduino shield to the other, but it worked only when I powered the Arduino with USB from another computer or a power supply.

So, the modules work, the shields work, but only for XBee-Arduino communication. They don't work for computer-XBee communication. Since my plan is to get two to communicate and no computer in between, it seems ok, but I'd like to know if this is the intention or are they supposed to work both ways?
User avatar
By kev0153
#98272
I have the same problem with my shield. I took the chip out of my Duemilanove and switched it over to UART and I get nothing. I'm on a mac and I've tired screen and minicom to try and communicate with Xbee module but nothing. I just ordered some parts to get a basic FTDI setup like you mentioned but it's driving me crazy that I can't get anything with the shield to work. How did you get yours working?
By pjwerneck
#98277
I got it working with the FTDI breakout.

You can configure it sending a string from the Arduino, but you can't get computer/xbee communication directly.

If you can't wait your partes, I believe you can set the switch to the dline position, and use SoftwareSerial to forward what you get on pins 0/1 to 2/3. In theory it should work, but in theory it was supposed to work without all the trouble, so you'll have to try.

I contacted Sparkfun techs and they are investigating this. It was supposed to work. From the schematics, the only difference is the 2 resistors Arduino has between the FTDI output and the 0/1 pins, and the diode used by the shield.
User avatar
By kev0153
#98287
Interesting, so it could be a problem with the board? Curious to know what they say.

I'm calling it a night. I just broke a pin off my the Atmega328 chip taking it out. bummer :(
By pjwerneck
#98292
I wouldn't call it a problem, after all it's an Arduino Shield and it works for Arduino - XBee communication. Using it for Xbee - Computer communication by removing the atmega chip is a sort of a hack. A reasonable one, that should works, but it's a hack.

I actually contacted them to check this. If it was supposed to work or what, since the official shield does.
User avatar
By kev0153
#99833
kev0153 wrote:Ok, gotcha. I'll just wait until my FTDI adapter comes in a configure it that way.
I guess as a follow up to this. I did get my Xbee modules talking to one another with the shield. I did have to configure it using my FTDI setup.
By z-unit
#105484
If you're desperate and gutsy...
I found a bootleg way to get past this issue. The problem is the 1K resistors between the RX/TX leads on the FT232RL chip and the Din/Dout on the XBee. I solved it by jumpering between the pin 1 of the 232 (I used the side of the resistor) and the TX pin on the shield. Same goes for pin 5 of the 232 and the RX pin of the shield.
Still need to remove the ATMEL chip from the arduino though.
By akmishra_99
#122037
Hello,

I have arduino Duemilanove and xbee shield, I have another arduino mega and xbee module, I am not getting anything on serial port of arduino, DOUT and DIN led's on xbee shields are blinking , I am continiously writing on arduino mega, but I am not getting anything on arduino Duemilanove,do I need to configure, I am under the impression that all xbee modules are configured to listen to broadcast address right out of the box

I am not even able to get command mode of xbee module, on xbee shield I have switch set to dlink postion

here is my code

#include <NewSoftSerial.h>
/* This sample code demonstrates the normal use of a xbee.
It requires the use of NewSoftSerial, and assumes that you have a
9600-baud serial xbee device hooked up on pins 2(rx) and 3(tx).
*/
NewSoftSerial nss(2, 3);

void setup()
{
Serial.begin(115200);
nss.begin(9600);

Serial.print("Testing Xbee ");
Serial.println("Alok Kumar Mishra");
Serial.println();

}

void loop()
{
int incoming_byte =0;
if (nss.available() ) {
incoming_byte = nss.read();
Serial.print( incoming_byte);

}
nss.print("+++");
if (nss.available() ) {
incoming_byte = nss.read();
Serial.print( incoming_byte);

}
if (nss.available() ) {
incoming_byte = nss.read();
Serial.print( incoming_byte);

}
nss.println("hello there");
delay(1000);


}
By kronenpj
#122770
This response is primarily to help anyone who is encountering a similar problem. It seems to me, caveats all around, that the diode protecting the input of the XBee module (D1 in the schematic) is causing the problems. I'm speculating that the diode is there to protect the 3.3v input from a 5v signal, taking it down to 4.3v which is a little closer to specifications. However, the orientation looks to be backward, blocking the signal instead of reducing the voltage.

I've shorted the diode and that allows the XBee to communicate, or at least receive communications. I don't believe this is the appropriate fix, but I think it supports the idea that the diode is causing the problems. I've called Technical support and they'll be asking the engineer to take another look at it, but they're still trying to find out why some XBee's (the 2.5 Pro versions?) aren't always happy in the shield.

-Paul
By waltr
#122807
The issue with the series diode in the XBee's DIN pin has been discussed many times in this forum and on the SoR forum.

The diode idea does work on some processors, it works fine with the PICs I use.
How it works is that the diode blocks a positive voltage from getting to the XBee DIN pin. There must be a pull-up to 3.3V on the XBee side and is normally the internal pull-up (see the AT commands) to produce a valid logic high. The diode will conduct when the external input goes to a ground state and the XBee DIN pin will go the ground plus the diode's voltage drop, about 0.4V.
This is where the problem is with some processors. Some processors do not pull their outputs low enough for the XBee to see the input as a valid logic low.

One safe work around is to remove the diode and replace it with a resistive voltage divider.