我的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);
}
怎么了?任何想法?
答案 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;并查看这些数据是否完美收到。