WaveMesh LLx 无线移动自组网协议是在 WaveMesh 2.x 标准协议栈基础之上为低成本、低功耗、移动设备精心优化的极轻量级、分布式无线移动自组网协议,运行在 1K RAM 和 8K Flash的入门级 8 位 MCU 上,进一步降低模块的软硬件成本。WaveMesh LLx 麻雀虽小其网络能力依然很强大,核心能力和 WaveMesh 2.x 协议基本相当。该协议定义了完备的链路层(MAC)和网络层(NWK)协议规范,但物理层可以采用多种无线信号调制方式,因此可以运行在多种射频芯片上。该协议采用市场通用的高性价比 ISM 频段射频芯片和低成本的通用 MCU。
WaveMesh 协议经过了十多年的发展完善和市场验证,目前已经发展到第二代,相比上一代在功能和性能上有了质的飞越,可以满足绝大部分物联网的应用需求。WaveMesh LLx 协议又在 WaveMesh 2.x 标准协议的基础之上,经过精简、优化和修改,在某些实现细节上比标准协议更加贴合应用, WaveMesh LLx 无线移动自组网协议的特点有:
⚫ 分布式网络
➢ 没有中心节点,所有节点都平等,网络扁平不分等级;
➢ 所有节点各自计算自己的路由,不需要中心节点掌控全网路由;
⚫ 移动节点
➢ 所有节点都可以任意移动,在移动的同时保持数据流连续传输;
⚫ 多种网络拓扑
➢ 树形网络(在节点和网关之间建立路由进行双向通信);
➢ 广播网络(任何节点通过广播方式发送给其它所有节点、多个节点或者单一节点);
⚫ 网络规模大
➢ 协议栈资源开销与网络节点数量无关,网络规模没有理论上限;
⚫ 网络覆盖范围大
➢ 单一网络可以通过部署多个网关进行无限扩展;
➢ 其中每个网关可以管辖最大 255 级中继路由的网络范围;
⚫ 可靠数据传输
➢ 单播采用 5 次握手方式可靠传输;
➢ 可靠广播采用 4 次握手方式点对点可靠传输;
➢ 网络不会主动丢弃数据报文,不休眠情况下可以实现 100%可靠传输;
⚫ 协议开销极小
➢ 数据传输不需要事先建立路由,网络不需要初始化,上电可立即工作;
➢ 网络不需要心跳、信标报文,没有维护开销;
➢ 协议握手开销固定而且很小,并且和无线传输速率无关,物理带宽有效利用率可达 90%;
⚫ 网络健壮
➢ 只需要相邻节点能够通信即可,不强调无线的传输距离,和单跳 LPWAN 窄带低速网络在设计理念上有本质的不同;
➢ 路由协议可以动态寻找尽可能多的路由节点,路由的切换不需要额外时间,部分节点的离开对网络剩余部分没有影响;
⚫ 吞吐量大
➢ 采用私有智能碰撞算法和路由协议,可以在多路径、多信道并行发送数据;
➢ 网络可以有多个网关,因此网络吞吐量可以远大于无线物理带宽;
➢ 由于不要求无线传输的距离,可以采用比 LPWAN 窄带低速网络高的多的无线传输速率,从而获得更大的网络吞吐量;
⚫ 网络集抄
➢ 采用全网集抄的方式代替逐点轮抄,能够在数秒钟之内采集成百上千点的数据(采集时间和数据量、物理带宽有关);
➢ 在非低功耗应用中,全网集抄保证 100%的成功率;
➢ 在低功耗应用中,全网集抄会优先确保功耗,单次集抄接近 100%的成功率;
➢ 网络集抄相对逐点轮抄具有更高的实时性、更低的功耗、更少的占用无线资源的特点;
⚫ 智能碰撞算法
➢ 不依赖于信号强度,没有远近效应,在强干扰下仍然有效;
➢ 充分考虑网络拓扑的非均匀分布,优化网络瓶颈,确保网络最佳吞吐量;
⚫ 精确路由
➢ 在节点和网关之间可以建立精确路由;
➢ 路由信息会在数据交换的过程中被时时刻刻更新和优化,不需要额外开销;
⚫ 低功耗
➢ 支持多种休眠方式:自主休眠、异步休眠、同步休眠和混合休眠等,可以满足绝大部分的低功耗应用;
➢ 全新的异步休眠唤醒算法,节点监听时间片可以短至~1ms,按照 2 秒休眠时间片长度计算,节点异步休眠待机电流可以低至 5uA;
➢ 分布式网络不需要初始化,上电可以立即进行数据传输,对比需要长时间建立全网路由的协议,其建网过程消耗的功耗就可以足够 WaveMesh LLx 网络运行很长时间;
➢ 采用全网集抄的方式,每次全网数据采集仅需要数秒即可完成。对比逐点轮抄全网数据采集所消耗的功耗是 WaveMesh LLx 网络单次全网集抄的上百倍以上;
➢ 采用比 LPWAN 网络更高的无线传输速率,用时更短,功耗更低;
⚫ 安全性
➢ 每个节点有不可被篡改的 6 字节客户 ID 和 6 字节全球唯一号 UUID;
➢ 每个节点有可以配置的 3 字节网络 ID 和 128 个无线信道编号;
➢ 采用物理层比特流动态加密,其密匙采用上述 3 种 ID 和无线信道编码信息的结合,无线信号被破解的概率极低,确保不同客户 ID、不同网络 ID 和不同信道之间的设备完全不能互通;
➢ 严格限制不同厂商的设备采用不同的客户 ID,并且客户 ID 不能被修改,因此可以保障不同客户设备之间完全隔离,确保无线数据的安全;
➢ 采用 CRC-32 替代上一代的 CRC-16 进行报文校验,极大降低了报文误码率;
⚫ 开发成本低廉
➢ 协议栈设计和实现完备,不需要应用层参与,直接向无线模块发送应用层数据报文即可,无需二次开发;
➢ 仅仅需要配置参数就可以完成开发工作,几分钟内就可以完成;
➢ 批量生产时可以将参数写入烧写器和固件一起烧入,不需要逐个配置参数;
WaveMesh LLx 目前支持 LoRa(LLCC68/SX1268/SX1262)和 GFSK(CMT2300A)的无线调制方式,采用 STM8S003F3 或和标准无线模块搭载 WaveMesh 标准协议族的固件,其硬件的尺寸、外观和使用完全一模一样,方便产品更换硬件模块。所有模块采用相同的配置参数结构,使用统一的 AT 指令和同一配置工具进行参数配置,屏蔽硬件上的差异。目前为止WaveMesh LLx 协议已经支持的标准硬件模块如下:
点击相关模块图片可看详情
AS1268-049S(常规产品) |
AS1268-049C(常规产品) |
AS2300-049S(需定制) |
|---|---|---|
AS1268-049C(需定制) |
AS2300-049T(需定制) |
AS2300-049D(需定制) |
| 参数 | WM1268-049S | WM1268-49C | WM2300-049S | WM2300-049C | WM2300-049T | WM2300-049D |
|---|---|---|---|---|---|---|
| 射频芯片 | LLCC68 (LoRa) | LLCC68 (LoRa) | CMT2300A(GFSK) | CMT2300A(GFSK) | CMT2300A(GFSK) | CMT2300A(GFSK) |
| MCU芯片 | STM8L051F3 | STM8S003F3 | STM8L051F3 | STM8S003F3 | STM8L051F3 | STM8S003F3 |
| 无线速率 | 62K-2Kbps可配置 | 62K-2Kbps可配置 | 100Kbps固定 | 100Kbps固 | 100Kbps固定 | 100Kbps固定 |
| 最大发射功率 | 22dBm | 22dBm | 20dBm | 20dBm | 20dBm | 20dBm |
| 无线频段 | 400~510MHz | 400~510MHz | 400~510MHz | 400~510MHz | 400~510MHz | 400~510MHz |
| 无线唤醒方式 | LoRa CAD | LoRa CAD | GFSK唤醒码字 | GFSK唤醒码字 | GFSK唤醒码字 | GFSK唤醒码字 |
| 休眠电流 | 1.1~1.6uA | 5.4~11uA | 0.5~1uA | 4.5~10uA | 0.5~1uA | 4.5~10uA |
| 接收电流 | 9.2mA | 9.2mA | 12.9mA | 12.9mA | 12.9mA | 12.9mA |
| 最大发射电流 | 112mA | 112mA | 77mA | 77mA | 77mA | 77mA |
| 最大报文长度 | 236字节 | 236字节 | 240字节 | 240字节 | 240字节 | 240字节 |
| 模块尺寸 | 33x20mm | 33x20mm | 33x20mm | 33x20mm | 20x10mm | 20x10mm |
| 硬件成本 | ⭐️⭐️⭐️⭐️⭐️⭐️ | ⭐️⭐️⭐️⭐️⭐️ | ⭐️⭐️⭐️⭐️ | ⭐️⭐️ | ⭐️⭐️⭐️ | ⭐️ |
| 传输距离 | ⭐️⭐️⭐️⭐️⭐️ | ⭐️⭐️⭐️⭐️⭐️⭐️ | ⭐️⭐️⭐️ | ⭐️⭐️⭐️⭐️ | ⭐️ | ⭐️⭐️ |
| 抗干扰能力 | ⭐️⭐️⭐️⭐️⭐️ | ⭐️⭐️⭐️⭐️⭐️⭐️ | ⭐️⭐️⭐️ | ⭐️⭐️⭐️⭐️ | ⭐️ | ⭐️⭐️ |
| 功耗 | ⭐️⭐️ | ⭐️⭐️⭐️ | ⭐️ | ⭐️⭐️ | ⭐️ | ⭐️⭐️ |
WaveMesh LLx 固件为了进一步降低客户的模块使用成本,根据对休眠能力的支持分为 LLA、LLB、LLC 和 LLD 四个版本固件。对于相同 RF 芯片(目前 SX1268/LLCC68 和 CMT2300A)的不同模块硬件,不同的 LLx 版本固件之间可以完全互通。比如,LLA/B/C/D 固件 WM2300-049C/D/S/T 模块,不同固件版本和不同模块硬件之间都可以互通。应用中非低功耗的设备可以用 LLA 固件版本的模块,低功耗的设备可以用 LLB/C/D 的固件,这样可以进一步降低客户成本。
为了方便对不同版本协议进行选择,WaveMesh LLx 无线移动自组网协议栈 4 个不同固件版本之间功能对比如下表所示:
| 功能 | LLA | LLB | LLC | LLD |
|---|---|---|---|---|
| 网络拓扑 | 树形、网状 | 树形、网状 | 树形、网状 | 树形、网状 |
| 碰撞处理 | ✅支持 | ✅支持 | ✅支持 | ✅支持 |
| 报文解析 | ✅支持 | ✅支持 | ✅支持 | ✅支持 |
| 串口握手 | ✅支持 | ✅支持 | ✅支持 | ✅支持 |
| 自主休眠 | ❌不支持 | ✅支持 | ✅支持 | ✅支持 |
| 异步休眠 | ❌不支持 | ❌不支持 | ✅支持 | ✅支持 |
| 无线唤醒 | ❌不支持 | ❌不支持 | ✅支持 | ✅支持 |
| 同步休眠 | ❌不支持 | ❌ 不支持 | ❌ 不支持 | ✅支持 |
| 全网集抄 | ✅支持 | ✅支持 | ✅支持 | ✅支持 |
| 自动集抄 | ✅支持 | ✅支持 | ✅支持 | ✅支持 |
| 被动休眠 | ❌不支持 | ❌不支持 | ❌不支持 | ❌不支持 |
| 强制休眠 | ❌不支持 | ❌不支持 | ❌不支持 | ❌不支持 |
| 下行路由 | ❌不支持 | ❌不支持 | ❌不支持 | ❌不支持 |
| 上行路由 | ✅支持 | ✅支持 | ✅支持 | ✅支持 |
| 可靠广播 | ✅支持 | ✅支持 | ✅支持 | ✅支持 |
| 路由深度 | 255 | 255 | 255 | 255 |
| 参数修改 | 本地串口 | 本地串口 | 本地串口 | 本地串口 |
| 固件升级 | ❌不支持 | ❌不支持 | ❌不支持 | ❌不支持 |
| 发射测试 | AT 指令 | AT 指令 | AT 指令 | AT 指令 |
| 接收测试 | 配置参数 | 配置参数 | 配置参数 | 配置参数 |
| 休眠测试 | 配置参数 | 配置参数 | 配置参数 | 配置参数 |
| 网络测试 | 报文环回 | 报文环回 | 报文环回 | 报文环回 |
| 网络信息 | 固定帧头 | 固定帧头 | 固定帧头 | 固定帧头 |
| 带宽测试 | ✅支持 | ✅支持 | ✅支持 | ✅支持 |
| 多包测试 | ✅支持 | ✅支持 | ✅支持 | ✅支持 |
| 报文长度 | 236-240 字节 | 236-240 字节 | 236-240 字节 | 236-240 字节 |
NODEs和网关ROOTs等设备组成。NODEs 可以和 ROOTs 之间进行双向数据通信,NODEs 之间可以进行数据中继转发和路由但是不能直接通信, ROOTs 之间可以进行广播通信。NODEs 和 ROOTs 均可以进行休眠,支持自主休眠、异步休眠、同步休眠、混合休眠。NODEs 退化成终端(ENDs),不使能中继能力的 ROOTs 退化成控制器(CTRLs)。为了更好理解网络中各种设备类型,下面举例介绍典型的几种应用:
为了满足各种低功耗的应用场景,WaveMesh 协议栈提供了多种休眠策略:异步休眠、同步休眠、自主休眠、混合休眠、被动休眠和强制休眠。本节简单说明各种休眠的工作方式,方便对不同协议版本进行选择。