4. ClassA 参数配置:ADR自适应速率、发射功率、扩频因子SF、带宽BW、编码率CR

好,咱们进入 ClassA 模式最核心的实操环节——参数配置。

说实话,很多刚入行的朋友觉得 LoRa 配置就是填几个数字。但我在项目里吃过亏,才明白这些参数背后全是权衡。你调对了,终端能跑好几年;调错了,可能三天就掉线。

4.1 ADR 自适应速率:是帮手,也是陷阱

ADR,全称 Adaptive Data Rate。说白了,就是让网络帮终端自动选一个最优的速率组合。

它的逻辑很简单:终端离网关近,信号好,就提高速率、降低功耗;终端离得远,信号差,就降低速率、提高灵敏度。

核心原则:ADR 只适合静态或准静态设备。移动设备请关闭 ADR。

我在一个智能农业项目里遇到过这么个事:

有个终端装在拖拉机上,拖拉机每天在农场里跑来跑去。我开了 ADR,结果终端一会用 SF12 一会用 SF7,速率来回跳。更糟的是,拖拉机开到田边信号差的地方,ADR 还没来得及降速,数据包就丢了。

后来我强制关了 ADR,固定用 SF10,虽然速率慢了点,但再也没丢过包。

我的建议:

  • 固定安装的设备(水表、电表、路灯)→ 开启 ADR
  • 移动设备(追踪器、手持终端)→ 关闭 ADR,手动固定 SF
  • 如果开启 ADR,建议设置 20-30 个包的稳定期,别让速率频繁变化

4.2 发射功率:不是越大越好

很多人觉得,发射功率越大,信号越强,通信越可靠。嗯,理论上没错,但实际不是这么玩的。

LoRaWAN 的发射功率范围一般是 +2 dBm 到 +20 dBm。但你要知道,功率每增加 3 dB,电流消耗就翻倍。终端电池就那么大,你开满功率,可能原本能用两年的设备,半年就歇菜了。

发射功率 典型电流消耗 适用场景
+14 dBm (25 mW) ~40 mA 城市密集区、短距离
+17 dBm (50 mW) ~80 mA 郊区、中等距离
+20 dBm (100 mW) ~120 mA 农村、长距离、穿透需求

避坑指南:我曾经在一个项目中,为了追求覆盖距离,把所有终端都设成了 +20 dBm。结果网关收到了信号,但终端因为功耗太大,电池撑不到一年。后来我改成 +17 dBm,配合 SF10,覆盖距离只少了 10%,但电池寿命翻了一倍。

所以我的习惯是:先试 +14 dBm,如果丢包率低于 5%,就别往上加了。每加一档功率,都要问自己一句:这 3 dB 真的值吗?

4.3 扩频因子 SF:速率与灵敏度的博弈

扩频因子 SF 是 LoRa 最核心的参数。它决定了数据在空中传输的时长。

SF 范围是 7 到 12。SF7 最快,SF12 最慢但最灵敏。

你想想看,SF 每增加 1,数据在空中停留的时间就翻倍。SF7 发一个包可能只要 40 毫秒,SF12 可能要 400 毫秒。这意味着什么?

  • SF12 的灵敏度比 SF7 高约 12 dB——信号弱的时候也能收到
  • 但 SF12 的功耗是 SF7 的 10 倍左右——因为发射时间长了
  • SF12 占用的信道时间更长——影响网络容量

经验之谈:我一般这样选 SF:

  • 城市环境、设备密集 → SF7 到 SF9
  • 郊区、中等距离 → SF9 到 SF10
  • 农村、超远距离 → SF11 到 SF12
  • 如果开启 ADR,让网络自动选,但我会限制最大 SF 为 11,避免 SF12 的极端功耗

4.4 带宽 BW:窄还是宽?

带宽 BW 常见的有 125 kHz、250 kHz、500 kHz。

带宽越宽,数据速率越快,但灵敏度越低。带宽越窄,灵敏度越高,但速率越慢。

我记得有个项目是做地下管廊监测。终端在井盖下面,信号要穿透混凝土和泥土。我一开始用 500 kHz 带宽,结果网关根本收不到。后来改成 125 kHz,配合 SF12,虽然速率慢到只有 250 bps,但至少数据能传上来了。

带宽 数据速率(SF7 时) 灵敏度损失 推荐场景
125 kHz ~5.5 kbps 基准 大多数场景,穿透要求高
250 kHz ~11 kbps 约 -3 dB 信号好、需要更高速率
500 kHz ~22 kbps 约 -6 dB 近距离、高速率需求

我的习惯:除非你有明确的速率需求,否则默认用 125 kHz。这是 LoRaWAN 最通用的配置,兼容性最好。

4.5 编码率 CR:纠错与开销的平衡

编码率 CR 决定了数据中纠错码的比例。常见的有 4/5、4/6、4/7、4/8。

CR = 4/5 表示每 4 位有效数据加 1 位纠错码,开销最小。CR = 4/8 表示每 4 位有效数据加 4 位纠错码,纠错能力最强。

你可能会问:那为什么不直接用 4/8?

因为纠错码越多,有效数据占比越低,传输同样的数据需要更长时间,功耗也更高。

实际经验:

  • 信号质量好、干扰少 → CR = 4/5,效率最高
  • 信号一般、有轻微干扰 → CR = 4/6
  • 信号差、干扰严重 → CR = 4/7 或 4/8

我个人的默认配置是 CR = 4/5。只有在测试中发现丢包率超过 10% 时,我才会考虑提高编码率。

曾经踩过的坑:有一次我在工业现场部署,环境里有很多电机和变频器,电磁干扰特别严重。我用了 CR = 4/5,丢包率高达 30%。后来改成 CR = 4/7,丢包率降到 5% 以下。代价是每个包的传输时间增加了约 40%,但至少数据能传上来了。

4.6 参数配置的完整流程

说了这么多,到底怎么配?我一般按这个步骤来:

  1. 先确定场景:固定还是移动?室内还是室外?电池供电还是电源供电?
  2. 选 SF 和 BW:根据距离和穿透需求,先定 SF 和 BW
  3. 调发射功率:从低到高试,找到能满足通信的最低功率
  4. 定编码率:默认 4/5,丢包严重再提高
  5. 决定 ADR:静态设备开,移动设备关
  6. 现场测试:至少跑 1000 个包,看丢包率和 RSSI

嗯,这套流程我用了好几年,基本没出过大问题。

4.7 参数配置关系图

下面这张图,是我自己总结的参数配置关系。你可以把它当成一个决策树来看:

ClassA 参数配置决策流程 确定应用场景 移动设备? 关闭 ADR 固定 SF9-SF10 开启 ADR 限制最大 SF11 选择 SF 和 BW 默认 125kHz + SF9 调功率 → 定编码率 → 现场测试 功率从低到高,编码率默认 4/5

这张图把整个配置流程串起来了。你从「确定应用场景」开始,顺着箭头走,最后就能得到一套合理的参数组合。

4.8 一个完整的配置示例

最后,我给你看一个我实际项目中的配置代码。这是一个智能水表项目,终端固定安装,每天上报一次数据:

// LoRaWAN ClassA 参数配置示例
// 设备:智能水表,固定安装,电池供电

// 1. ADR 配置
lora.setADR(true);           // 开启 ADR,因为设备固定
lora.setADRAckLimit(64);     // 64 个包内未收到确认,触发 ADR 调整
lora.setADRAckDelay(32);     // 32 个包后开始检查 ADR 反馈

// 2. 发射功率配置
lora.setTxPower(14);         // +14 dBm,城市环境,距离网关约 500 米

// 3. 扩频因子配置
lora.setSpreadingFactor(9);  // SF9,平衡速率和灵敏度
// 如果开启 ADR,网络会自动调整 SF,但限制最大为 SF11
lora.setMaxSF(11);           // 防止 ADR 误判导致 SF12

// 4. 带宽配置
lora.setBandwidth(125);      // 125 kHz,标准配置

// 5. 编码率配置
lora.setCodingRate(5);       // CR = 4/5,默认配置,效率最高

// 6. 最终确认
lora.applyConfig();          // 应用所有配置

这套配置在实际项目中跑了两年,电池续航比预期还多了 3 个月。嗯,参数调好了,效果就是这么明显。