无线网络应用中,通常要求节点尽可能休眠,最大限度降低功耗,但又希望节点能尽可能及时地收发无线数据,这似乎是个不可调和的矛盾。
但是有个神奇的功能,空中唤醒。节点即使处于休眠,当需要节点工作时可以直接通过无线手段唤醒该节点。很多人第一次听到,都觉得不可思议。希望看完今天这篇文章,你能搞明白这件事。
本文首发于微信公众号twowinter,转载请注明作者:http://blog.csdn.net/iotisan/
点此进入公众号查看。
一、介绍
本尊贵为IoT小能手,物联网世界的什么东西没见过。(啊!吹个牛逼而已,用得着飞砖头过来吗!过分)
这个牛逼功能的英文名是WOR(Wake On Radio)。
它在很多上游芯片方案中已经有应用,TI系列的无线芯片中很多都带有这个功能,比如CC1310,以及我正在玩的LoRa芯片SX1276。
它在很多网络协议中也已经有应用,B-MAC,X-MAC,甚至大家常见的ZigBee协议中也有一个很少人知道的概念“休眠路由”。
它在很多物联网操作系统中也有应用,比如TinyOS,以及在我心中排名第一的Contiki,称之为“radio duty cycling mechanism”。
二、基础原理
原理简单说,就是在有效数据前头加一段较长的前导码,无线节点进行周期性地唤醒,监听下网络。一旦捕捉到前导码就进入正常的接收流程,若没有就立即休眠,等待下一次唤醒。
为了让数据传输时,无线节点不会错过有效数据,机制上要保证前导码的持续时间要略长于节点的休眠时间。
图片来源于LoRa官方AN文档《LoraLowEnergyDesign_STD.pdf》。
上面是不带应答的情况,如果是单播方式需要应答的话,情况也差不多。
三、深入学习
好了,有了如上的初步解释,大家应该差不多明白了。接下去的内容会轻微烧脑,希望我的讲解没把大家绕晕。
围绕这个基础原理,有一些人做了优化演绎,大致有这些情况。
1.前导码变种
Contiki的作者Adam Dunkels(假装对外国人很熟,是比较简单地一项装逼手段),他在2011年的论文中介绍了其空中唤醒机制,他将唤醒探针(也就是前导码)做了变化,与普通前导码0101的循环不同,它是将数据包做了多次循环发送。
上面是不带应答的情况,而应答的空中唤醒示意图是这样:
相同的做法也出现在TinyOS中。
2.快速休眠
多数据包的前导码方式额外带来了第二种优化方法,可以让节点更加的省电。通常空中唤醒最大难点是会被噪音误唤醒,因为监测前导码是采用信道监听,判断信道的RSSI是否大于某个阈值。一旦有噪音,则这次唤醒就白白耗了一个周期的电。
但是噪音有一个特点是,无规则,持续性。由于多个数据包做的前导码中带有固定间隔的休息时间,因此这个休息时间可以用来将前导码和噪音有效区别开。如果不小心被噪音唤醒,节点在接下来没检测到静默周期,则可确认是噪音,那么就立即睡眠以省电。如图:
Contiki由于是一个通用型系统,因此这种快速休眠处理方式是在软件层面的优化处理。
LoRa的快速休眠方式则有所不同,由于调制技术优势使得其CAD能从噪声中判断有效前导码,所以在第一阶段就能避免误唤醒。另外还有一个优点是在硬件内部(如SX1276系列)就做了优化,可以在未收到完整数据包下就判断是否发给本地址,从而来节点更快做出应对处理。
3.传输锁相
用通俗的话来讲解深奥的内容一直是本尊的强项,且听我道来:
节点A在与中心节点交互过一次之后,中心节点就记住了节点A的发送时刻(所谓的相)和周期。因此在下一次要唤醒节点A的时候,只需根据预估的节点A的唤醒时间点,准点去唤醒节点A就可以了。
这一个优化,虽然没有给节点A带来功耗上的优化,却降低了整个网络的负载,提高了信道的利用率。
四、展开来说
到此为止,关于空中唤醒技术的原理性讲解基本结束。本文只是知识点科普,限于个人水平和精力还无法讲更多更深的东西。如果你是工程师,文中涉及一些概念希望能引起你的注意,抓住关键词去搜索延伸,你应该会得到更多。
最直接的,空中唤醒技术在很多行业都是个刚需,可以为你负责的产品增加些卖点,也许你就因此升职加薪走向人生巅峰。
其次,你会从一个更高的高度对其他厂家的空中唤醒技术有些认识。我给大家举个例子,限于行业身份,我就不公开说是哪家企业了。
XX公司的唤醒算法
- 采用CAD侦听,让LoRa终端更节能;采用锁相同步唤醒技术,让LoRa通信带宽更佳利用;
- 采用快速地址匹配技术,使“非目标地址”LoRa终端快速休眠;
- 采用跳频技术,让唤醒和数据通信从频率是分开,减少干扰;
举这个例子,想告诉大家,理解了技术原理后,你就可以看懂别人说的是什么,是否真的很厉害。
当然不是说这家公司的产品不过尔尔,你可能理解了这个原理,但实现这些功能的背后肯定有很多付出和技术沉淀,要看到别人有哪些值得学习的地方,纸上谈兵永远是最简单的事情。
五、最后
在整理这些资料的时候,有一个感悟,虽然这个世界上的很多东西已经很难有大的创新了,但还是有很多优秀的人,踏实地利用自己才华贡献一点点小创新,帮助这个世界变地更美好。在此向Adam Dunkels等前辈致敬!
这篇文章写地比较用心,从技术深度上和自我思考的深度上都是目前已产出的文章中比较靠前的。希望你也能喜欢,欢迎留言,收藏,甚至分享它。