2022年,我发表了一篇关于如何打造一款过度工程化的咖啡豆存储和库存管理系统的文章。没想到,这篇文章激发了很多人的灵感,他们告诉我,我的分享给了他们开始类似项目的新动力。这让我非常高兴。
最近,我正忙于两个相关项目:一个还未公开的传感器,另一个是咖啡豆存储显示系统的升级版。我升级它的主要目标是增加电池续航时间。最初,这个显示系统充满电能用大约40天,我觉得还可以,但总想做得更好。通过一些软件调整,我将其提升到了55天,但我还想挑战极限。
于是,我开始深入研究低功耗电子技术,探索了一系列复杂但引人入胜的领域。我购买了Nordic半导体的一款出色电源分析器,对整个系统进行了详尽的剖析。如果你好奇,这样的分析结果就像这样(附上一张图表)。简而言之,我重写了部分显示固件,识别并解决了开发板上的问题组件,最后发现WiFi是影响续航的关键因素。
虽然我热爱这样的项目,但我的本性也相当懒散。在项目中使用WiFi似乎很合理,因为基础设施已经就绪,只需让显示设备连接到我运行的服务,通过局域网发送请求即可。然而,WiFi对于这种应用场景来说效率并不高,连通时间长、功率需求大,总之不太理想。因此,我开始寻找替代方案,比如LoRa和Zigbee等标准。
LoRa和Zigbee技术通常很节能,但它们有一个显著的缺点:除了需要一个显示模块外,还需要一个接收/发射器或中心节点来作为数据交换的连接点。这就意味着我又得额外设计和编写硬件和软件,这可不是我喜欢的。幸运的是,我发现了一个有趣的解决方案!
“线程”?!
尽管这个名字听起来不太友好(3),但Thread网络栈其实很酷。它基于Zigbee的物理层,IEEE 802.15.4,并且是网状网络。但对我而言,有两个特性让它脱颖而出:首先,Thread建立在6LoWPAN之上,即“低功耗无线个人区域网络上的IPv6”。这意味着每个设备都有一个或多个IPv6地址,内部通信使用IPv6,数据包在网络中自由流动。更棒的是,Thread通过名为“边界路由器”的桥梁与常规家庭网络相连,让你的设备能通过IPv6与应用交互,反之亦然。
等等,还要搭建边界路由器?没错,但这也是Thread的一个亮点:你可能已经有了Thread边界路由器,比如Apple HomePod或Nest Hub。如果你使用Home Assistant,只需花40欧元左右就能买到一个适配器,将Home Assistant节点变成边界路由器。整个过程相当亲民。而且,如果你的设备已接入现有的Thread网络,还能利用其网状特性,无需额外努力就能扩大网络覆盖范围。
听起来不错吧?确实如此!我入手了两套Thread开发套件(分别是nRF52840-DK和nRF5340-DK,还有nRF52840-Dongle用于调试),学到了很多。我成功地将自己的边界路由器接入基于Apple的Thread网络,甚至用Wireshark捕获了Thread网络的数据,还把自制的Thread设备(基于那两个开发套件)接入网络,一切如愿以偿。于是,我开始构思一系列博客文章,打算引导其他爱好者探索Thread,让他们从依赖WiFi或蓝牙转向Thread,提升项目的质量。
然后,我就进入了抱怨模式。
没有Thread。
我之前只说了Thread的好,现在要谈谈不好的一面:Thread集团。尽管Thread基于许多免费和开放的标准,如IEEE 802.15.4、IPv6和CoAP,但它并非真正意义上的免费和开放。恰恰相反。
你可以从他们的网站免费获取Threa