我有两个XBee芯片 - 其中一个连接到继电器开关,另一个 - 通过USB电缆连接到我的电脑。
我可以配置本地连接的XBee将其D0值发送到远程XBee,这样当我切换本地XBee的D0线时,远程继电器开关也会切换。
我想要做的是能够通过其串行连接向本地XBee发送命令,并让本地XBee向远程XBee发送命令,该命令将切换继电器开关而无需与D0线物理交互在我当地的XBee上。
XBees是S1,所以他们不(似乎?)支持ATIO命令,至少我的测试没有显示工作。我也尝试使用带有API命令83的ATAP 1,如here所示,但这不起作用。
硬件设置工作 - 将一个按钮连接到D0会将其状态传输到远程XBee,那么如何才能让软件单独发生?
答案 0 :(得分:2)
你需要发送一个"远程AT命令" frame,用于参数ATD0
,如this page on Digi's website中所述。
虽然该页面适用于2系列无线电模块,但如果您查看系列1的文档,您可以找到远程AT命令的帧格式。
并且,如果您要使用C发送命令,则此Open Source, portable, ANSI C XBee Host Library在process_command_remote()
中包含一个函数samples/common/_atinter.c
以发送远程AT命令。
答案 1 :(得分:2)
终于想通了,谢谢你指导我正确的方向@tomlogic
问题是Digi的网站没有告诉你将IA设置为0xFFFF(允许所有源地址改变引脚状态),默认情况下为0xFFFF FFFF FFFF FFFF(禁用远程引脚更改)
在this site上找到了更好的提示。
这就是XCTU for Mac中的样子:
以下是所有与默认设置不同的设置。我得到了它。
发射机: MY = 7 AP = 1(启用API) D0 = 3(引脚0输入) IC = FF(更改全部检测)
接收机: MY = 2 D0 = 5(引脚0高输出) IU = 0(UART IO禁用) IA = 0xFFFF (允许所有更改引脚)
我使用的命令:
7E 00 10 17 01 00 13 A2 00 AA BB CC DD FF FE 02 49 4F 00 8D - 发送远程ATIO 0
7E 00 10 17 01 00 13 A2 00 AA BB CC DD FF FE 02 49 4F 01 8C - 发送远程ATIO 1