我正在尝试使用两个xbees在计算机(协调器)和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终端从计算机发送字符时,TX和RSSI LED在USB Explorer板上亮起。同样的事情发生在Arduino上,DOUT和RSSI指示灯点亮并且没有收到任何信息。我已经尝试将DH和DL设置为广播模式,使用0和FFFF作为协调器的值,但它没有解决问题。
答案 0 :(得分:1)
我认为这个问题与布线有关,所以我仔细检查了我正在使用的电路。然后,正如TomLogic建议我尝试使用引脚12和13建立另一个串行通信。最后我让这两个模块正常工作!
协调器和路由器的配置是正确的,Arduino代码也是如此!引脚4不能与SoftwareSeria一起用作RX。
并非所有 Mega和Mega 2560 支持的引脚都会改变中断,所以 只有以下内容可用于RX: 10,11,12,13,50,51,52, 53,62,63,64,65,66,67,68,69
答案 1 :(得分:0)
它只是来自您的波特率,您的Xbee以 57600 波特进行通信,您的arduino以 9600 波特进行通信。事实上,Xbee读取速度比Arduino慢,反之亦然,因此存在问题。
解决方案,尝试将 Xbee和Arduino 置于9600Baud 。
希望我能帮助你:)。