我的xBee S1 Pro模块有一个非常奇怪的问题。 我使用XCTU软件进行配置。 我将一个Arduino设置为接收数据,另一个设置为传输。 当我使用XCTU软件发送一些测试框架时,它可以工作,接收器获取数据。 但是,如果我想让我的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);
}
怎么了? 有任何想法吗?
我将检查与Xbee的连接,即确保RX实际连接到DOUT,TX确保连接到DIN。 同样,如果您要发送实际的“帧”,则听起来好像您正在api模式下运行xbees,因此您需要做更多的事情,然后只需发送“数据”即可使其在串行直通模式下运行。
最后要检查的一件事是,如果您使用的是arduino Leonardo或Micro,则硬件串行端口是Serial1而不是Serial。
您使用相同的串行端口与XBee和USB通信。 那就是问题所在。 您需要设置另一个串行端口而不是USB来与XBee通信。
如果您共享正在使用的arduino板和屏蔽,那将是很好的。
所以首先是第一件事...如果这些xBees具有不同的波特率的独立密码,那么该死的事情就会发生。 还有这些命令模式(AT或API)是什么? 出厂默认设置 ? 接受AT命令来更改这些命令? (默认情况下,您处于AT模式)
打开一个串行程序(我将coolTerm用于OS X)。 确保正确设置这些步骤。
一旦知道这些发送器正在使用相同的波特率,密码等进行对话,就可以通过简单的串行读写将这些发送器连接到RX / TX引脚,然后确保将代码上传到Arduino。
该代码似乎正确,但请确保您要发送的内容。 Xbees只能发送和接收8位数据。 首先发送一个已知的数据字节,例如a = 100; 并查看此数据是否完美接收。