首页 文章

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

提问于
浏览
0

我正在尝试使用两个xbees在计算机(协调器)和Arduino Mega(路由器)之间 Build 无线通信 .

以下是协调器配置: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 Code

#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);
  }
}

The problem

我无法将数据从计算机发送到arduino .

当我使用XCTU终端从计算机发送字符时,TX和RSSI LED在USB Explorer板上亮起 . 同样的事情发生在Arduino上,DOUT和RSSI指示灯点亮并且没有收到任何信息 . 我已经尝试将DH和DL设置为广播模式,使用0和FFFF作为协调器的值,但它没有解决问题 .

2 回答

  • 1

    我认为这个问题与布线有关,所以我仔细检查了我正在使用的电路 . 然后,正如TomLogic建议我尝试使用引脚12和13 Build 另一个串行通信 . 最后我让这两个模块正常工作!

    协调器和路由器的配置是正确的,Arduino代码也是如此!引脚4不能与SoftwareSeria一起用作RX .

    并非Mega和Mega 2560上的所有引脚都支持更改中断,因此只有以下内容可用于RX:10,11,12,13,50,51,52,53,62,63,64,65,66, 67,68,69

  • 0

    它只是来自你的波特率,你的Xbee在 57600 波特和你的arduino在 9600 波特进行通信 . 事实上,Xbee读取速度比Arduino慢,反之亦然,因此存在问题 .

    Solution ,尝试将 both 放在Xbee和Arduino to 9600Baud 上 .

    希望我能帮到你:)

相关问题