【发布时间】:2014-10-23 00:15:04
【问题描述】:
我正在尝试使用两个 xbee 在计算机(协调器)和 Arduino Mega(路由器)之间建立无线通信。
这里是协调器配置:ZIGBEE COORDINATOR AT 串口高:13A200 串口低:407B69E6
PAN ID: 1111
DH: 13A200
DL: 40813BFC (Rooter serial number low)
Baud Rate: 9600
这是路由器配置:ZIGBEE ROUTER AT 串口高:13A200 串口低:40813BFC
PAN ID: 1111
DH: 13A200
DL: 407B69E6 (Coordinator serial number low)
Baud Rate: 9600
我使用Xbee Explorer Regulated 将Xbee 模块连接到开发板,使用USB explorer 开发板将xbee 连接到计算机。我能够从 Arduino 到计算机进行通信。从 Arduino IDE 的串行监视器发送的所有数据都在 XCTU 的终端窗口中接收。如果我切换模块,我仍然可以通信。
Arduino 代码
#include <SoftwareSerial.h>
uint8_t pinRx = 4 , pinTx = 2; // the pin on Arduino
long BaudRate = 9600;
char GotChar, getData;
SoftwareSerial xbee(pinRx, pinTx);
void setup()
{
Serial.begin(9600);
Serial.println( "Welcome to the XBee Communication Test" );
Serial.print("BaudRate:");
Serial.println(BaudRate);
Serial.print(" Rx Pin#");
Serial.println(pinRx,DEC);
Serial.print(" Tx Pin#");
Serial.println(pinTx,DEC);
xbee.begin( BaudRate );
xbee.println("Setup Completed!");
}
void loop()
{
if (Serial.available())
{
GotChar = Serial.read();
// Send it to Computer
xbee.print(GotChar);
// print it to serial monitor
Serial.print(GotChar);
}
while (xbee.available()>0)
{
//Serial.println("Ohohoh");
getData = xbee.read();
Serial.print(getData);
// send it back
xbee.println(getData);
}
}
问题
我无法将数据从计算机发送到 arduino。
当我使用 XCTU 终端从计算机发送字符时,USB Explorer 板上的 TX 和 RSSI 指示灯亮起。同样的事情发生在 Arduino 上,DOUT 和 RSSI 的 LED 亮起,没有收到任何东西。我尝试使用 0 和 FFFF 作为协调器的值将 DH 和 DL 设置为广播模式,但它没有解决问题。
【问题讨论】:
-
分享您的 Arduino 代码。如果在交换 XBee 模块时通信仍然是单向的,则问题出在主机(硬件或软件)中。 Arduino XBee 模块上的 DOUT 闪烁的事实表明 XBee 正在向 Arduino 发送串行数据,但它并没有进入您的程序。
-
好的,我已经更新了问题。
-
您的代码显示为 9600 波特,但您的 XBee 配置显示为 57600(但如果您发送正常,我猜这只是复制/粘贴错误)。你确定
pinRx是正确的吗?如果您将串行电缆连接到 Arduino 的引脚 2 和 4,您可以通过它发送数据吗?继续努力隔离问题,直到您确定设置的所有已知良好/工作组件。请注意,将DH和DL设置为0 是指示协调器的快捷方式,而不是广播模式。
标签: serial-port arduino xbee