2016-06-10 89 views
0

自过去三天以来,我一直在尝试设置两个XBee进行通信。 X-CTU似乎是完美的选择,但是,在串行端口上发现XBees时,它是一个真正的威胁。“+++”无法从XBee获得响应

我能靠运气只是一次检测一个的XBee和另外一个一直没有露面。我甚至已经替换了我的XBees。我试图找出替代方法,即使用串行控制台执行操作。在发布+++后,我无法从设备收到OK响应。

由于我之前没有很好的使用PC与ESP8266设备进行通信的经验,我试图找出解决方法,使用Arduino的第二个串行端口发送此类配置消息并通过打印来读取响应它在默认的串行控制台上。

还显示出配置消息可以根据装置的模式而不同。如果它处于API模式,则必须以特定格式生成帧(我为此使用X-CTU帧生成器)。

为什么我不能接收来自于发出+++中的XBee的响应?

的设备是系列1个XBees和确切的号码是XB24-AWI-001。任何帮助,高度赞赏。

+0

你是否在'+++'之前和之后尊重守卫时间? IIRC是一整秒;多一点不能伤害。当然,它必须处于正确的波特率。您可以在不同的波特率下执行序列。我建立了一个系统,它可以处理9600处全新的Xbees或通过测试两个波特率在115200处配置模块。 (然后全新的模块将被配置在系统内,然后切换到API模式。) – sawdust

+0

*“我试图通过使用Arduino的第二个串行端口找出解决方法”* - 哪个Arduino?你使用的是5v还是3.3v的设备? – sawdust

回答

1

你有没有考虑到的XBee在API模式是?也许你应该考虑在AT模式下刷新设备以开始播放。

为了测试,如果它在API模式下,你可以参考指导,为API模式结构第9章:

基本上,在API模式下的数据报~开始和它的建成如下:

[0x7E|length(2B)|Command(1B)|Payload(length-1B)|Checksum(1B)] 

由于0x7E~对A SCII表,你应该尝试在串行终端会话你键入一个虚假的数据报:

~ <C-d> AAAA 

N.B:该<C-d>字符意味着UNIX下Control-d,这是EOF字符。

显然,这样的消息是不太可能的工作,你会得到答复,要求您重新发送该数据报。这是因为EOF字符是ASCII码4,这意味着数据报的长度将是4个字节。那么你发送了四个假字节,校验和将是A,这很可能是正确的,并且接收机将假定传输已被破坏。所以数据报会再次被询问,这意味着你将收到一个数据报来做这个查询。

尽管我只能建议你考虑只在API模式下运行它(更可靠和更好的API,但是你不能玩弄它并且通过使用逻辑分析仪来点击线路来了解发生了什么......尽管足够的时间,您将开始阅读API数据报,如英文☺)。

我写了一个页面有几个资源来检查怎么刷写XBees:

和这里的其他建议从另一个完全无关的项目:

而且我也写了一个lib文件(旨在beaglebones,但你可以调整它为您的使用),处理API模式2 XBees:

但我敢打赌,与一个小小的谷歌搜索,你可以找到比那些更广泛使用的库,甚至一些旨在运行在Arduinos上(注意:该lib最初是为Arduinos编写的,然后适用于Beaglebone运行,所以不应该颠倒操作很难)。

+1

如果它处于API模式,将不会发出'+++'将它带到AT命令(透明)模式? –

+0

检查文档是否安全,但我不这么认为。您需要使用X-CTU(或其他选项)重新刷新XBee以更改模式。 – zmo

+0

我想我将不得不使用xb-comm,因为X-CTU导致问题,所以在XBee刷新指南页面列出。最后一个问题,对于系列1模块,固件不在此列表中,应该遵循哪一个? ftp://ftp1.digi.com/support/firmware/update/ –