我有一个XBee S1 Pro,它被配置为协调器。和XBee S2C,配置为终端节点。两者都加载了802.15.4固件。通过使用XCTU,我以透明模式发送和接收数据。
我现在已经将终端节点配置为API-1模式并将其连接到Arduino Nano。我想阅读有效载荷。这是我的Arduino代码:
void setup() {
Serial.begin(9600);
Serial.println("Setup done...");
while (!Serial) {;}
}
void loop() {
if (Serial.available()) {
for (int i = 0; i < 8;i++) {
byte discard = Serial.read();
}
Serial.write(Serial.read());
Serial.print(",");
}
当我从协调员发送'你好'时,我得到:
Setup done...
FFFFFFFF
,FFFFFFFF
,FFFFFFFF
,FFFFFFFF
,FFFFFFFF
,FFFFFFFF
,FFFFFFFF
,FFFFFFFF
,FFFFFFFF
,
有没有比使用Arduino XBee库更简单的方法? 有人可以帮助我吗?
答案 0 :(得分:2)
您是否确认两个XBee模块已加入同一网络?我的理解是S1只是802.15.4,S2是ZigBee。您应该使用相同的网络硬件启动您的项目,以消除它作为问题的根源。
我建议关注a tutorial并使用该代码为您要编写的任何代码建立工作起点。
编辑:添加一些代码
首先,您需要有两个串口。一个用于您的控制台,您可以在其中查看Serial.print()
的输出,另一个用于与XBee模块通信。
其次,从这个循环开始:
void loop() {
// echo bytes received on XBee module to serial console
if (XBee.available()) {
Serial.write(XBee.read());
Serial.print(",");
}
// echo bytes received on serial console to XBee module
if (Serial.available()) {
XBee.write(Serial.read());
}
}
这样你就可以转储你收到的每一个字节,只有当有数据可供阅读时才调用XBee.read()
。
您可能希望将XBee模块保持在9600波特率,但将stdio接口(Serial
)增加到115200,因为从XBee模块接收的每个字节打印的字符数不止一个。