背景(起因?)
事情的起因是我某天在刷 Fediverse 的时候看到了我所在的实例上有人发了这么一条帖子(现在找不到了,内容大概是):
Meshtastic is modern Pictochat
这里提到的 Pictochat 指的是老任在 NDS 掌机上推出的聊天功能,可以与附近的掌机进行无线连接,并通过触摸屏画画来聊天。我恰好有一台 3DS ,它有一个类似的功能叫 Streetpass ,能在休眠状态下和附近的掌机联机,我觉得这个功能还挺酷的。因此我当时对这个 Meshtastic 起了点兴趣,简单了解了一下之后发现是一个开源的离网无线电通讯工具。不过我很快就忘记了这件事。
后来我在油管上又看到了 38C3 上有两个 talk 都介绍了 Meshtastic (这个和这个),其中提到节点的成本相当便宜(DIY成本在5-7刀,我在国内买零件应该会比他更便宜),于是就想试试。
正好 lyc8503 也感兴趣,就决定在学校尝试一下 Meshtastic 。他已经写了一篇博客介绍总体的探索过程,我在这里仅做一些我自己的补充和想法。建议先去看他的博客再看我的。
硬件选择与成本
我当时看完 talk 就去搜了一下 Meshtastic 支持的各种成品硬件(开发板),结果成品硬件的价格都在 100 元以上,远超我的预期。这下不得不自己组装了。
一开始使用的 ESP32 + SX1278(Ra-01) 组合的成本也达到了 40 元,这还没算上天线,也没有带屏幕。虽然有更便宜的 ESP32C3 ,但是我们把固件刷进去之后无法启动,而且没有任何信息输出,抓瞎了一会儿就放弃了。后来尝试的 nRF52840 + SX1268(E22-400MM22S) 的组合相对便宜,算上小天线也只有 20 元出头,但是射频模块其实是以拿样价 6 元购买的,如果原价购买则需要 20 元,算下来总成本也要将近 40 元。而且需要手动焊接。
另外,我还购买了 U-blox NEO-6M GPS 模块,成本为 11 元,可以为节点提供位置信息,虽然精度不高。
我的目标是尽可能压低成本,这样看下来 20 元每个节点应该已经是极限了。 不过Meshtastic群的群友似乎不太在意成本, 100 多的成品也买得很开心
更多距离测试
我的另一个目标就是想看看自制节点的极限传输距离。根据 Meshtastic 网站显示,目前地面上的距离纪录高达 331km ,国内的 Meshtastic 社群也有群友达到 10km 以上的传输距离。而在南京进行的几次实验都因为周围有很多建筑物遮挡而无法达到很远的距离(不到1km)。因此我去了乡下的一些地方尝试更远的距离。相对空旷的地形和较弱的噪声干扰应该能让传输距离有所提升。
V2 硬件的距离测试
使用硬件: nRF52840 + SX1268(焊接在小板) + 转接线连接的胶棒天线
(即 lyc8503 文中的 硬件 Version 2)
将一个节点放置在四楼阳台上之后拿着另一个节点沿着门口的直路走。最远能达到大约 800m 的距离,再远就收不到消息了。地图上的位置和最远位置的信噪比如下。
从地图上看连线几乎没有建筑物遮挡(蹭着厂房的一角过去了,可能就是因为这个原因不能继续往外走),可惜还是没满 1km 。可能这个手搓的天线转接线的质量还是太幽默了。
V3 硬件的距离测试
使用硬件: nRF52840 + SX1268 + 转接板 + 胶棒天线 + (可选的) GPS 模块
(即 lyc8503 文中的 硬件 Version 3)
升级了硬件之后,我去了另一个乡下地方进行测试。一个节点放置在3楼窗口,另一个节点四处移动。这个地方没有很长的直路,只能尽可能找空旷的方向走。但是我仍然没能找到理想的、完全没有建筑遮挡的长线段,最终在有少量房屋遮挡的线上测到了 1km 的距离。地图上的位置和信号测量记录如下。注意到箭头所指位置有少量房屋遮挡,但仍然能成功传输。这次实验的时候在移动的节点上尝试交换了长天线(24cm)和短天线(11cm),但似乎两根天线的传输距离和信号质量并无明显区别。
V3 硬件的距离测试,第二次
去乡下还是没能找到足够平坦的地方,于是我决定再来一次测试,这次利用山的高度来绕过城市中的各种建筑物障碍。
使用硬件同上一次(只使用了短天线),把一个节点贴在家里的4楼阳台窗户上,拿着另一个节点去爬山。虽然一路上没有信号,但是到达山顶的一个建筑物之后成功收到了信号,此处距离我家 2.6km ,海拔比我家高 200m 左右 在这里放地图的话就把我家盒了,还是算了。
^山顶的节点。此处到我家的肉眼视线被树挡住了,但是电波能轻松穿过。
^四次 traceroute 的信号指标。甚至有一次是良好,应该还没到极限。
^连续多条消息被成功接收、发出的消息被成功 ACK 。
总结
上山测完这一次之后,总算是达到了我对这玩意传输距离的预期值。不过这应该还没达到极限。也许之后还可以进一步测试,但我不会分身术,不能同时移动两个节点,也不太能在山上放置节点之后再下来到处移动(毕竟公共场所)。上一次山只能获得 1 bit 的信息。之后有空再说吧。果然高度才是王道。
从 lyc8503 五月发的博客到现在也拖了快 3 个月了。这个 project 终于结束了。稍微感受了一下在现实中做嵌入式开发的感觉。我个人感觉能用上 Meshtastic 的场景还是不太多,现在能想到的只有:去偏远没手机信号的地方旅游,以及在空旷地区使用物联网设备(比如范围较大的农田)成本上应该比使用 4G 要低一点。在城市这种环境组网只是看起来有点酷(?),并且基础设施由自己控制而已。