Hi everyone,
I've been reading a lot and banging my head even more for a few days now. I still haven't found the answer to my problem so I'm hoping someone will enlighten me.
I recently purchased a SparkFun Xbee wireless kit:
Kit Includes:
- 1x XBee Shield
- 1x XBee Explorer USB
- 2x XBee Modules (XBee 1mW Trace Antenna - Series 1 (802.15.4))
- 1x Arduino Stackable Header Kit - R3
I've got one shield on the explorer, connected to my computer, and the other in the Xbee Shield which is on my Arduino Uno R3.
I've been following the Tutorials on Sparkfun (Shield Hookup Guide and Configuring Xbee networks)
I've connected both XBee Modules to my computer, updated them to the latest firmware (10ed), and set them up with X-CTU as following:
Setting | Acronym | Xbee 1 | Xbee 2 |
---|---|---|---|
Channel | CH | C | C |
PAN ID | ID | 0x5BF6 | 0x5BF6 |
Destination Address High | DH | 0 | 0 |
Destination Address Low | DL | 2 | 1 |
16-bit Source Address | MY | 1 | 2 |
Interface Data Rate | BD | 9600 | 9600 |
The XBee shield has the UART switch placed on "DLINE" so that it uses Pin 2 and Pin 3 (and not RX and TX) so that I don't have a conflict with the Serial I use for uploading the sketches, and therefore it relies on SoftwareSerial.h.
I'm using the standard sketch given in the Hooking-up guide mentioned above:
/*****************************************************************
XBee_Serial_Passthrough.ino
Set up a software serial port to pass data between an XBee Shield
and the serial monitor.
Hardware Hookup:
The XBee Shield makes all of the connections you'll need
between Arduino and XBee. If you have the shield make
sure the SWITCH IS IN THE "DLINE" POSITION. That will connect
the XBee's DOUT and DIN pins to Arduino pins 2 and 3.
*****************************************************************/
// We'll use SoftwareSerial to communicate with the XBee:
#include <SoftwareSerial.h>
// XBee's DOUT (TX) is connected to pin 2 (Arduino's Software RX)
// XBee's DIN (RX) is connected to pin 3 (Arduino's Software TX)
SoftwareSerial XBee(2, 3); // RX, TX
void setup()
{
// Set up both ports at 9600 baud. This value is most important
// for the XBee. Make sure the baud rate matches the config
// setting of your XBee.
XBee.begin(9600);
Serial.begin(9600);
}
void loop()
{
if (Serial.available())
{ // If data comes in from serial monitor, send it out to XBee
XBee.write(Serial.read());
}
if (XBee.available())
{ // If data comes in from XBee, send it out to serial monitor
Serial.write(XBee.read());
}
}
When I write in the Arduino IDE Serial Monitor, I can see the message between written in the X-CTU console of my computer.
But when I write in the X-CTU console:
- Nothing is written in the Arduino Serial Monitor
- BUT, I can see the DOUT pin of the XBee shield blinking every time I press a key on my keyboard - so data is received
What am missing? Can someone please help me?
Let me know if I haven't provided some useful piece of information... I tried to be thorough but may have overlooked something.
Thanks,
Julien