xBee通信Arduino到Arduino

时间:2014-05-24 10:03:02

标签: arduino communication xbee zigbee

我的xBee S1 Pro模块有一个非常奇怪的问题。我使用XCTU软件来配置它们。我设置一个Arduino来传输数据,另一个传输。当我使用XCTU软件发送一些测试帧时,它可以工作,reciver获取数据。但是,如果我希望我的arduinos能够进行沟通,那就非常有用了。我假设模块配置正确,因为PC - > Arduino工作。所以我会提供草图,这样你就可以告诉我哪里出错了

reciver

void setup()
{
  pinMode(13, OUTPUT);
  Serial.begin(9600);
}

void loop()
{
  if(Serial.available() > 0){
    digitalWrite(13, HIGH);
    delay(500);
    digitalWrite(13, LOW);
    Serial.print("recived some data: ");
    Serial.println(Serial.read());
    Serial.flush();
  }
}

现在是发件人

void setup()
{
  pinMode(13, OUTPUT);
  Serial.begin(9600);
}

void loop()
{
  Serial.println("data");
  Serial.flush();
  digitalWrite(13, HIGH);
  delay(1000);
  digitalWrite(13, LOW);
  delay(4000);
}

怎么了?任何想法?

4 个答案:

答案 0 :(得分:1)

我会检查与Xbee的连接,即确保RX实际连接到DOUT,TX连接到DIN。此外,如果您正在发送实际的“帧”,那么听起来您正在以api模式运行xbees,因此您需要执行更多操作,然后发送“数据”,以便在串行传递模式下运行它。

要检查的最后一件事是,如果您使用的是arduino Leonardo或Micro硬件串口是Serial1而不是Serial。

答案 1 :(得分:0)

您使用相同的串行端口与XBee和USB通信。那就是问题所在。您需要设置另一个串行端口,而不是用于USB与XBee通信。

如果你分享你正在使用的arduino板和盾牌会很好。

答案 2 :(得分:0)

首先是第一件事......如果这些xBees在不同的波特率下有单独的密码,就会发生这种情况。 (AT或API)中的命令模式是什么?出厂默认设置 ?接受AT命令更改这些? (默认情况下,您处于AT模式)

打开一个串行程序(我对OS X使用coolTerm)。确保正确设置这些步骤。

一旦您知道这些发射器正在使用相同的波特率,密码等进行通信...确保将代码上传到您的Arduinos之前将这些发送器连接到RX / TX引脚,并进行简单的串行读写操作。

答案 3 :(得分:0)

代码似乎正确,但请确保您要发送的内容。 Xbees只能发送和接收8位数据。 首先发送一个已知的数据字节,例如a = 100;并查看这些数据是否完美收到。