2、LoRaWAN协议栈:架构、设备类型与入网流程

好,咱们进入正题。LoRaWAN协议栈,说白了就是给LoRa这颗“好芯”配上的一套“交通规则”。没有它,节点和网关之间就是鸡同鸭讲。我个人习惯把LoRaWAN看作一个“星型网络”,网关是中间人,节点只管发消息,网关负责转发到服务器。

2.1 LoRaWAN的架构:三层模型

LoRaWAN的架构其实不复杂,就三层:终端节点、网关、网络服务器。嗯,这里要注意,网关只做“搬运工”,不解析数据。我见过不少新手以为网关能处理业务逻辑,其实它就是个“二传手”。

  • 终端节点(End Device):就是你的传感器、水表、追踪器。它只管发数据,或者偶尔听一下网关的指令。
  • 网关(Gateway):也叫集中器。它把收到的LoRa射频信号转成IP包,发给服务器。一个网关能同时听多个节点。
  • 网络服务器(Network Server):这是大脑。它负责去重、解密、确认、下发指令。我在项目中遇到过,服务器端没做好去重,导致同一个数据被处理了三次,白白浪费了电池。

说白了,节点和服务器之间是“逻辑直连”,网关只是物理通道。你想想看,节点发一条消息,可能被多个网关收到,服务器会挑信号最好的那个来回复。

2.2 Class A/B/C设备类型详解

LoRaWAN定义了三种设备类型,核心区别在于“什么时候能收数据”。这直接决定了功耗和实时性。我建议你根据项目需求来选,别一上来就上Class C,电池扛不住。

设备类型 接收窗口 功耗 典型场景
Class A 上行后打开两个短接收窗口 最低 传感器、水表、烟感
Class B 定时打开接收窗口(信标同步) 中等 阀门控制、定时上报
Class C 几乎一直打开接收窗口 最高 执行器、需要实时响应的设备

Class A:省电之王

这是最常用的类型。节点主动发数据,发完后打开两个接收窗口(RX1和RX2),等服务器回复。窗口一关,节点就睡大觉。我曾经做过一个温湿度传感器,用Class A,两节AA电池撑了两年多。为什么省电?因为节点大部分时间都在休眠。

关键点:Class A的接收窗口是“被动”的。服务器想下发指令,必须等节点先发数据。说白了,服务器不能主动找节点,只能“守株待兔”。

Class B:定时听一听

Class B在Class A的基础上,增加了“定时接收窗口”。网关会定期广播信标(Beacon),节点同步时间后,在指定时间打开接收窗口。这样服务器就能在固定时间下发指令了。

嗯,这里要注意,Class B需要节点定期接收信标,功耗比Class A高一些。我在项目中用过Class B做灌溉阀门控制,每天定时开窗接收指令,效果不错,但电池寿命比Class A短了约30%。

Class C:实时响应

Class C的设备几乎一直开着接收窗口,除了发送数据那几毫秒。服务器随时可以下发指令,实时性最好。但代价是功耗极高,通常需要外接电源。

避坑指南:我曾经在一个项目中,客户要求“实时控制”,我直接选了Class C。结果现场没拉电线,靠电池供电,三天就没电了。后来改成了Class B + 定时轮询,才解决问题。所以,Class C只适合有稳定供电的场景。

2.3 入网流程:OTAA vs ABP

节点要加入LoRaWAN网络,有两种方式:OTAA(空中激活)和ABP(个性化激活)。我个人强烈推荐OTAA,除非你有特殊原因。

OTAA(空中激活)

流程是这样的:节点发送Join Request,服务器回复Join Accept。之后双方协商出会话密钥。每次入网密钥都不同,安全性高。

// OTAA入网流程(简化)
1. 节点发送:Join Request (包含DevEUI, AppEUI, DevNonce)
2. 服务器验证后回复:Join Accept (包含AppNonce, NetID, DevAddr, 等)
3. 双方计算:NwkSKey = AES(AppKey, AppNonce, NetID, DevNonce, ...)
4. 双方计算:AppSKey = AES(AppKey, AppNonce, NetID, DevNonce, ...)
5. 入网成功,开始数据通信

你想想看,每次入网都重新算密钥,就算有人抓包,下次入网密钥就变了。我在项目中遇到过,客户要求设备换电池后自动重新入网,OTAA完美解决。

小技巧:OTAA的DevNonce是随机数,每次入网必须不同。如果重复,服务器会拒绝入网。我习惯用硬件随机数生成器,或者用递增计数器。

ABP(个性化激活)

ABP是直接把会话密钥(NwkSKey和AppSKey)和DevAddr烧录到设备里。设备上电就能发数据,不需要入网流程。速度快,但安全性差。

避坑指南:我曾经在一个项目中用了ABP,结果设备被克隆了。因为密钥是固定的,别人拿到你的设备就能读出密钥,伪造数据。所以,除非是实验室环境或对安全性无要求,否则别用ABP。

对比项 OTAA ABP
安全性 高(密钥动态协商) 低(密钥固定)
入网速度 慢(需Join流程) 快(上电即用)
适用场景 大多数生产环境 测试、演示、封闭网络
密钥管理 服务器自动管理 需手动烧录

好了,这一章的内容就这些。LoRaWAN的架构、三种设备类型、两种入网方式,都是后续优化电池寿命的基础。下一章我们会深入聊“如何让节点更省电”,到时候会用到这些知识。