从计算机到Arduino的Xbee通信 - SoftwareSerial Pins

时间:2014-10-23 00:15:05

标签: serial-port arduino xbee

我正在尝试使用两个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作为协调器的值,但它没有解决问题。

2 个答案:

答案 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

希望我能帮助你:)。