通过Arduino XBeeShield串行通信

3
我在电脑上使用了Ladyada XBee适配器和Arduino XBee Shield进行无线通信。两个XBee的配置是正确的,因为我可以从Xbee Shield接收到数据并传输到电脑。但是,反过来就不行,即Xbee Shield不能回显电脑串口发送的字节。有什么想法吗?(注意:当我使用USB电缆将Arduino板连接到计算机时,回显程序可以正常工作。似乎只有在无线模式下存在问题)
处理代码
void setup() {
  Serial.begin(9600); 
}

void loop() {
  if (Serial.available()) {
    Serial.print((char) Serial.read());
    delay(10);
  }
}

我只是从电脑发送按键,并等待回复。但我没有得到任何回复。

请问您能否发布发送字节到XBee的代码片段以及XBee接收它的代码片段? - Cassio
已经添加了在Arduino上运行的代码。从计算机端,我只是使用Arduino软件的串口监视器来发送字节。 - Danushka Bandara
你能把xbee的RX和TX连接在一起(回环测试),以验证xbee是否已正确配置并正常通信吗? - Jeff
嗯,有点奇怪。我刚试着连接了 FTDI 电缆的 Rx 和 Tx 端口,该电缆将计算机连接到 xbee 适配器上。但我在串行监视器上仍然没有收到回显的按键输入。这可能是电缆出了问题吗? - Danushka Bandara
@DanushkaBandara 我的回答有帮到你吗? - fulvio
显示剩余2条评论
2个回答

0

我使用我回答以下问题时的代码,用于将串行字节从PC发送到Xbee/Arduino。它已经运行良好了几个月。确保您已经在PC和Arduino端配置了您的Xbee模块。同时确保您的PAN ID也相同。

Arduino根据从串口接收到的数据包做出决策

您使用的Xbee模块版本是什么?我的代码适用于Series 1,但也应该适用于更新的版本。


0

尝试使用softwareSerial库并将Tx和Rx连接到引脚4和2。运行以下草图并告诉我发生了什么。更改波特率值以匹配您自己的设备。

#include <SoftwareSerial.h>

uint8_t pinRx = 2 , pinTx = 4; // the pin on Arduino

long BaudRate = 57600; // Please set your Baudrate. It should match the one in XC-TU
char GotChar, getData;
// Xbee SoftwareSerial initialization
SoftwareSerial xbee(pinRx, pinTx); // RX, TX

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);
  // set the data rate for the SoftwareSerial port
  xbee.begin( BaudRate );
  xbee.println("Setup Completed!");
}

void loop() 
{
  if (Serial.available()) 
  {
    GotChar = Serial.read();
    xbee.print(GotChar);
    Serial.print(GotChar);
  }
  while (xbee.available()>0)
  {  
    Serial.println("Ohohoh");
    getData = xbee.read();      
    Serial.print(" Received: );
    Serial.print(getData);
    Serial.println();

    if(getData == 'a')
    {    
      Serial.println(" sbam");
    }  
    else if(getData == 'b')
    {
      Serial.println(" sbo");
    }
  }  
}

上传程序并打开串口监视器。您的电脑上是否收到“设置完成”消息?如果您从电脑发送“a”或“b”到Arduino,会发生什么?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接