Answers:
开发可行的RF通信协议很容易,但是很有教育意义。除了上述内容外,还需要考虑以下几点:
如果人们试图通过在不需要接收器时关闭它们的电源来节省能源,那么共识问题可能尤其令人烦恼。假设两个P和Q每10秒通信一次,因此它们加电并且P向Q发送一个数据包。Q收到数据包,发送他的确认,并且-知道P在将近十秒钟内什么都不会发送任何东西,则断电。如果P没有得到Q的确认,他将重新发送;由于Q处于睡眠状态,因此他不会听到P的重发。从Q的角度来看,这无关紧要(他已经收到了他的数据),但这意味着无论P重试多少次,他都无法知道Q收到了他的数据包(至少直到下一次会合之前十秒钟)。
如前所述,可行的RF通信协议易于完成。不过,我希望您可能会从经验中学到很多东西。
如果您没有为此使用标准协议,那么您将不得不设计和实现一个协议,例如一个简单的示例:
因此,发生的事情是您首先尝试通过先监听来避免“干扰”,然后如果仍然发生干扰,则可以通过缺少接收节点的确认来检测到这种情况,然后在随机延迟后再次尝试-两个干扰发送器将使用不同的随机延迟,以最小化第二次碰撞的机会。
这是两个常见的选择
1)实施先听后听(LBT)算法,该算法检查在开始自己的传输之前是否正在进行传输,如果有,则在一段时间内回退。该期间应包含固定长度和随机长度,以使它们在同一期间内不会全部退缩。许多标准无线电协议都包含此过程,请参阅ETSI EN 300-220-1。
2)实施信标系统,从信标对传输进行定时。每个发射机都有自己的定时槽。通常,您将使用设备中的序列号确定其插槽,并具有一个系统来确定谁发送信标。由于这依赖于所有具有不同插槽的发射器,因此最好不要将其留给用户来唯一标识所有发射器,除非您有可靠的操作步骤。
从我的评论等中可以理解,功率不是问题,但通信速度是问题。因此,这是我对协议的建议。
编号所有节点,即0..n-1。让每个节点知道它是哪个数字。节点0将成为主节点。
每15毫秒,节点0发送一条消息:“ 0HELO”。
1毫秒后,节点1发送一条消息:“ 1DATA”。
1毫秒后,节点2发送一条消息:“ 2NICE”。
1毫秒后,节点3发送一条消息:“ 3”。(该节点无话可说)1
毫秒后,节点4发送一条消息:“ 2CATS”。
... 1
毫秒后,节点9发送一条消息:“ 9MICE”。
然后有5ms的暂停。
节点总是在正确的时隙中发送消息,即使它们无话可说。这样,您可以确保66Hz的通信速率,而不会发生冲突。
与多个异步发射器的RF通信是一个棘手的问题。为了解决这些问题,很多思想和工程技术进入了802.11和802.15标准。如果必须在此处询问,则应坚持使用实现这些标准之一的现成硬件。
请注意,尽管两者都是有用的并且代表了许多精心设计,但通常任何实际应用程序仍将必须实现高于这些标准的协议栈。这将是802.11和Zigbee之上的WiFi和TCP或Zigbee或Microchip的WiWi或802.15之上的其他WiFi。
同样,如果您在这里提出这样的基本问题,那么设计多点无线电网络将超出您的范围。您将花费大量时间,但事情仍将无法正常进行。
802.11和802.15的选择主要取决于您的带宽和范围要求以及可用功率。802.15更小,功耗更低,带宽更低,范围更小。使用合适的高级软件,802.15设备可以用电池长时间运行,而对于802.11通常情况并非如此。
我同意在讲话之前和信标系统之前进行收听。但是,如果您想同时使用单个通道传输数据,则可以使用直接序列扩频(DSSS)调制技术。这可以帮助您避免干扰。
但是为此,您可能需要购买实现该功能的芯片,例如Xbee(基于Zigbee)。如果您无法更改发射器,则应遵循其他答案。