我一直在思考为我居住的公寓楼构建温度传感器网络所需要采取的措施。无线网状网络(如果可以正常使用)将具有一些不错的功能。特别是,我可以将传感器放置在车库和地下室存储区域中,否则这些区域将无法到达移动或Wi-Fi信号。

不使用网格的可能原因是我可能也想使用昏昏欲睡的终端设备,以避免经常更换电池。据我所知,唯一可行的方法是时钟同步,这样设备可以同时唤醒,并且唤醒时间足以使信号在网络中传播。

虽然我听说过这样的解决方案,但我想知道在实践中效果如何。大概需要将周期性时钟同步添加到协议中,以避免漂移。有没有人有这方面的经验,除了时钟同步之外,还有其他策略可以同时使用网状设备和睡眠设备吗?

#1 楼

实际上有可能允许休眠节点,而无需时间同步。基本思想是多次发送消息,直到节点最终唤醒。当然,聪明的优化还有很大的空间,因此基于此思想的MAC层方法有数百种。

但是由于您的问题专门要求MAC层,因此节点知道何时传输

正如您已经提到的那样,一个问题是时钟漂移,因此设备必须定期唤醒以进行时间同步。在我们所讨论的典型的短距离无线应用中,单跳上的信号传播持续时间本身并不是一个大问题。因此,中央协调器以节点已知的规则时间间隔发送信标(包括当前时间)就足够了。

在多跳网络中,它变得更加复杂。仅转发信标将不起作用,因为等待时间太长。解决方案是多个(如果不是全部的话)节点发送信标,即从更靠近协调器的节点接收信标,用它纠正自己的时钟漂移,并用纠正的时间发送自己的信标。您只需要避免建立圈子(到那儿做完……。)。

由于网络中的每个节点现在都具有相同的时间概念,所以存在第二个问题:节点知道他什么时候应该醒来发送或接收?基本上有四种方法可以组合使用:公用插槽:所有节点都同时唤醒,并使用基于竞争的访问方法来传输其数据包优点:容易(如果您知道如何进行CSMA / CA)。缺点:容易发生碰撞,吞吐量较低。
预定义:对于有限数量的节点,您可以仅将固定插槽分配给节点。例如,节点2可以在第一个时隙中发送到节点1,节点3可以在第二个时隙中发送到节点2。优势:专用插槽,无碰撞。缺点:拓扑必须固定(在无线网状网络中非常困难)。
集中式:中央协调器从节点请求有关拓扑的信息,计算全局调度并将其再次分发给节点。优点:不需要预定义的拓扑。缺点:扩展性差,并且易于更改拓扑(必须重新启动整个过程)。
分散式:两个想要通信的节点自己协商插槽。这非常复杂,因为它们必须确保没有相邻设备同时发送。优点:因为协商是本地的,所以扩展性很好。缺点:实现复杂。

IEEE 802.15.4标准中包含两项相关技术,目前引起了很多研究关注:TSCH和DSME。

TSCH本身相当基本的。它仅解决了时间同步问题,而将时隙分配问题留给了上层。有6TiSCH试图填补这一空白,但仍在进行中。有一些实现,例如包含在Contiki或OpenWSN中。另一方面,DSME已经提供了分散式时隙协商的机制。实际上,我们已经构建了称为openDSME的开源实现。尽管有一个用于运行仿真的视频教程,但不幸的是,该硬件的实现仍然文献不足。询问其他问题,或者如果要使用它,请直接与我们联系。