【问题标题】:Xbee, Arduino & Processing Design QueryXbee、Arduino 和处理设计查询
【发布时间】:2014-01-25 22:49:09
【问题描述】:

我有一个处理草图,可以将基本的串行命令输出到 xbee。 然后我有两个(很快是 3 个,也许是 4 个)arduino 和他们自己的 xbee,他们接收数据并做一些事情。

问题是每个 Arduino 都有自己的用途,因此也有自己的数据包。

所以,要实现这一点。有没有办法向特定的 xbee 发送消息? IE。我可以为 xbee 分配某种索引或通道,然后让广播 xbee 将数据发送到它需要的任何索引或通道吗?

或者,这需要在 Arduino 软件中实现吗? 即处理带有索引/标识符的数据包前缀,而arduino忽略带有该前缀的传入消息?

或者还有其他选择吗:P

提前感谢您的建议。

【问题讨论】:

    标签: arduino wifi processing serial-communication xbee


    【解决方案1】:

    虽然不是对您问题的具体回答,但通过这种类型的通信,一些数据包错误检查将是有益的。使用 crc 错误检查算法发送数据。数据包结构可能类似于:

    0x7F 0x02 (Address Bytes) (Command Bytes) (CRC bytes) 0x7F 0x03
    

    其中 0x7F 是 DLE 字符,用于指示后面是开始字节,后面是结束字节,或者后面是具有 DLE 值的数据字节。这意味着作为地址或命令一部分的任何 DLE 字符都应以“填充”DLE 字符开头。 CRC 是根据地址和命令字节计算得出的,用于检查接收到的数据的完整性。每个数据包中都包含 CRC 校验字节。

    这种类型的通信将防止使用到错误来源的数据包,也防止使用错误的数据包。

    在这里阅读更多关于串行帧的信息是一个不错的起点:http://eli.thegreenplace.net/2009/08/12/framing-in-serial-communications/

    【讨论】:

      【解决方案2】:

      据我所知,您希望能够区分您将数据发送到的 Xbee。您可以通过使用 IP 地址来做到这一点。例如,如果您有两个具有 IP 的 Xbee:

      • Xbee1 - 192.168.80.50
      • Xbee2 - 192.168.80.51
      • Xbee3 - 192.168.80.52

      您只需将开始通信的 Xbee 连接到将接收它的 Xbee,即可在它们之间发送信息。如果您想通过无线网络(或以太网)进行任何类型的通信,您必须为每个 Xbee 分配一个 IP。

      编辑:
      如果您在自己的计算机上安装了服务器,例如 Java。您可以将 Xbees 连接到它并将它们连接到计算机服务器。然后您可以设置服务器以接收和发送数据到不同的 Xbee 客户端。

      我做了类似这样的事情:Maintaining communication between Arduino and Java program,但是我没有使用 Xbee,我使用了官方的 WiFi shield。

      希望这有帮助! -卡德

      【讨论】:

      • 这仅适用于 Xbee Wifi 模块吗?还是所有 Xbee 设备?
      • 所有通过网络进行通信的东西都需要有一个 IP 地址才能工作。所以它适用于所有 wifi 模块和以太网模块。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-19
      • 1970-01-01
      相关资源
      最近更新 更多