在“+++”时无法从 XBee 获得 OK 响应

Can't get OK response from XBee upon "+++"

这三天以来,我一直在尝试设置两个 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 table 上是 ~,您应该尝试在串行终端会话中键入伪造的数据报,例如:

~ <C-d> AAAA

N.B.:<C-d>字符在unix下表示Control-d,即EOF字符。

显然这样的消息不太可能起作用,您将收到一个回复​​,要求您再次发送该数据报。那是因为 EOF 字符是 ASCII 码 4,这意味着数据报的长度将是 4 个字节。那么你发送了四个伪造的字节,校验和将是 A,这很可能是正确的,接收方会认为传输已损坏。所以数据报将被再次询问,这意味着您将收到一个数据报来执行该查询。

虽然我只能建议你考虑 运行 只在 API 模式下使用它(更可靠和更好的 API,但你不能玩弄它并理解什么是通过使用逻辑分析仪点击线路继续……尽管有足够的时间,您将开始阅读 API 数据报,就像阅读英语一样 ☺)。

我写了一个包含一些资源的页面来检查如何刷新 XBees:

这是来自另一个完全不相关的项目的其他建议:

我还写了一个库(针对 beaglebones,但您可以根据自己的需要对其进行调整)用 XBees 处理 API 模式 2:

但我敢打赌,稍作 google 搜索,您可以找到比那些库使用更广泛的库,甚至一些旨在成为 Arduinos 上的 运行(N.B。:那个lib最初是为Arduinos编写的,然后为Beaglebone改编运行,所以逆向操作应该不难。