【问题标题】:Xbee communication from Computer to Arduino - SoftwareSerial Pins从计算机到 Arduino 的 Xbee 通信 - SoftwareSerial Pins
【发布时间】: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,您可以通过它发送数据吗?继续努力隔离问题,直到您确定设置的所有已知良好/工作组件。请注意,将DHDL 设置为0 是指示协调器的快捷方式,而不是广播模式。

标签: serial-port arduino xbee


【解决方案1】:

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

Coordinator 和 Router 的配置正确,Arduino 代码也正确!引脚 4 不能与 SoftwareSeria 一起用作 RX。

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

【讨论】:

    【解决方案2】:

    这只是来自您的波特率,您的 Xbee 以 57600 波特通信,而您的 arduino 以 9600 波特通信。事实上,Xbee 的读取速度比 Arduino 慢,反之亦然,因此存在问题。

    解决方案,尝试将Xbee和Arduino都设置为9600Baud

    希望能帮到你:)

    【讨论】:

    • 抱歉,这是一个复制和粘贴错误。感谢回复
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多