从过去三天以来,我一直在尝试设置两个 XBees 进行通信。 X-CTU 似乎是这样做的完美选择,但是,当涉及到在串行端口上发现 XBees 时,它是一个真正的威胁。
我只能幸运地检测到一个 XBee,而另一个却从未出现。我什至更换了我的两个 XBees。我正在尝试找出替代方案,即使用串行控制台来执行操作。在发出
+++
后,我无法从设备收到 OK 响应。
由于我之前没有使用 PC 与 ESP8266 设备进行通信的良好经验,因此我尝试找到一种解决方法,即使用 Arduino 的第二个串行端口发送此类配置消息,并通过将其打印出来来读取响应默认串行控制台。
配置消息似乎也可能因设备模式而异。如果是 API 模式,则必须以特定格式生成帧(我使用 X-CTU 帧生成器来实现此目的)。
为什么我在发出
+++
后无法收到 XBee 的响应?
这些设备是系列 1 XBees,确切的部件号是 XB24-AWI-001。非常感谢任何帮助。
您是否考虑过 XBee 处于 API 模式?也许您应该考虑在 AT 模式下重新刷新设备以开始使用它。
测试是否处于API模式,可以参考指南第9章API模式结构:
基本上,API 模式下的数据报以
~
开头,其构建如下:
[0x7E|length(2B)|Command(1B)|Payload(length-1B)|Checksum(1B)]
由于
0x7E
在 ASCII 表中是 ~
,因此您应该尝试在串行终端会话中键入虚假数据报,例如:
~ <C-d> AAAA
注意:
<C-d>
字符在unix下表示Control-d
,即EOF字符。
显然这样的消息不太可能起作用,您将收到回复,要求您再次发送该数据报。这是因为
EOF
字符是 ASCII 代码 4,这意味着数据报的长度将为 4 个字节。因此,您发送了四个虚假字节,校验和将为A
,这很可能是正确的,并且接收方将假设传输已损坏。因此,将再次询问数据报,这意味着您将收到一个数据报来执行该查询。
虽然我只能建议您考虑仅在 API 模式下运行它(更可靠和更好的 API,但您无法使用它并通过用逻辑分析仪点击线路来了解发生了什么......尽管给予足够的时间,您将开始像阅读英语一样阅读 API 数据报 ☺)。
我写了一个包含一些资源的页面来检查如何刷新 XBees:
这是另一个完全不相关的项目的其他建议:
我还编写了一个使用 XBees 处理 API 模式 2 的库(针对 beaglebones,但您可以对其进行调整以供您使用):
但我敢打赌,通过一点谷歌搜索,你可以找到比这些库更广泛使用的库,甚至有些库旨在在 Arduino 上运行(注意:该库最初是为 Arduino 编写的,然后经过调整以运行在 Beaglebone 上,所以反过来操作应该不难)。