该设备是868MHz LoRa 半双工无线透传模块,实现 1 主 N 从自发现组网、RS485‑LoRa 双向透传、按键本地配置、485 远程参数配置、IAP 串口固件升级;核心特性:信道 0‑62,单帧最大 238 字节,依靠net_id网络标识实现同信道多网络隔离,角色不做掉电保存,上电固定为 STA 监听方。下面从硬件抽象、角色模型、按键状态机、组网机制、数据透传、485 协议、IAP 升级、存储模型、网络隔离 9 个维度拆解原理。
一、核心角色与设备状态模型
设备只有两种运行角色:AP(组网发起者)、STA(监听 / 普通节点);有 3 个核心工作状态:STANDBY待命、PAIR配对组网、TRANS透传通信。
- 角色规则
- 角色不做掉电保存,无论断电前是 AP 还是 STA,上电强制恢复为 STA 监听方;只能通过按键长按临时切换 AP 角色,仅本次上电有效。
- AP 仅用于发起组网广播,组网完成后,AP 自动降级为 STA;组网成功之后所有节点是对等 STA,没有主从硬件层级,属于对等网状自组网。
- 三大状态定义
表格
状态 含义 数码管表现 STANDBY 待命 信道 = 0,射频不做业务透传,等待按键触发组网或者信道配置;不收发业务数据 数码管显示 00 PAIR 配对组网 正在扫频、广播组网(AP) / 监听组网广播(STA),寻找同网设备,不进行业务透传 显示 00,mod/com 指示灯按角色闪烁 TRANS 透传 信道≠0,射频开启业务收发,RS485 与 LoRa 双向透传,正常业务工作模式 数码管显示实际工作信道号
mod:数码管左侧小数点;com:数码管右侧小数点,用来反馈射频状态:mod 代表角色 / 组网发起状态;com 代表接收 / 数据收发状态。
二、按键驱动状态机原理
按键分为:短按、长按≥2s、三连按(间隔≤1.5s);短按自带 1.5s 确认延时,用来区分短按和三连按,防止误触发。
- STANDBY 待命状态
- 长按:STA ↔ AP 角色互相切换;切到 AP 后 mod 灯 512ms 周期闪烁。
- 短按:进入 PAIR 配对状态;AP 角色则启动组网广播,STA 角色进入 5 分钟组网监听。
- 三连按:进入
CHSET信道设置模式,mod 灯 128ms 快闪,修改信道参数。
- PAIR 组网配对状态
- AP(广播):短按无效;长按取消组网,退回进入组网之前的原始状态。
- STA(监听):短按重置 5 分钟监听计时器;长按直接退出监听,回到原状态;5 分钟收不到组网广播自动超时退出。
- TRANS 透传业务状态
- 长按:临时切换为 AP 角色,进入 STANDBY 待配网,射频切默认信道,暂停透传;再次长按切回 STA,恢复 FRAM 存储的原有工作信道,回到透传。
- 短按:进入 PAIR‑STA 5 分钟组网监听。
- 三连按:进入 CHSET 信道设置。
- CHSET 信道设置模式
- 短按:信道循环 + 1,范围 0~62。
- 长按:保存信道参数到 FRAM,保存信道会清空当前 net_id 网络标识,回到 STANDBY 待命。
- 10s 无任何按键操作:放弃修改,参数不变,退出信道设置。
关键:保存信道清空 net_id,是为了防止信道修改之后,旧网络标识和新信道不匹配,造成网络异常;修改信道后必须重新组网,或者 485 命令重新写入 net_id。
三、1 主 N 从自组网发现原理
组网的核心目标:AP 扫频选出空闲工作信道 W,生成唯一 net_id 网络标识;所有 STA 获取 W 和 net_id,全部进入 TRANS 透传模式。
完整组网流程
- 节点 A(人为长按切换为 AP 角色,STANDBY 待命),短按,进入 PAIR‑AP。
- AP 执行扫频:遍历信道表,跳过默认信道 ch_def,检测信道占用,选出空闲信道 W。
- 在默认信道上持续广播 20s 组网帧,广播帧携带:空闲信道 W、新生成的 net_id 网络标识;此时 mod、com 灯双闪。
- 节点 B、C(STA)短按,进入 PAIR‑STA 配对监听,在默认信道持续监听广播,最长监听 5min,com 闪烁、mod 熄灭。
- B、C 接收到 AP 组网广播帧:提取
net_id、业务信道 W;将参数存入 FRAM,自动切换到信道 W,进入 TRANS 透传模式,mod/com 常亮。 - AP 的 20s 广播窗口结束:AP 把 net_id 固化到本地存储,AP 角色降级为普通 STA,同样进入 TRANS 透传;组网完成,全部节点对等。
- 校验:485 读取 0x0002 寄存器,所有节点 net_id 完全一致,组网成功。
- 信道冲突避让测试:如果 D 设备已经占用 ch1 信道,AP 扫频检测 ch1 被占用,会自动选择 ch2 作为业务信道,规避同频干扰。
后期新增设备入网两种机制
- 单网环境(同一个信道只有一组网络):自动学习 net_id新设备三连按设置为组网业务信道 W,保存(此时 net_id 为空,TRANS 状态只监听无线,不发送任何数据);当收到同网其他节点的业务透传帧,从无线帧解析 net_id,自动写入本地,完成入网,恢复双向收发。
- 多网共存环境(同一个信道有多套独立网络)自动学习会识别错误别的网络的 net_id,造成串网;必须通过 485 命令 0x0002 显式写入正确 net_id,强制绑定网络,不使用自动学习机制。
网络隔离核心:相同信道,不同 net_id,无线收到帧直接丢弃,不转发,实现同信道多套系统互不干扰。
四、LoRa‑RS485 双向透传数据链路原理
透传是设备业务核心,完成 RS485 业务帧和 LoRa 无线帧互相转换,带帧头、net_id、CRC 校验,有帧长限制、信道避让逻辑。
硬件接口
RS485 半双工;默认参数 9600‑8N1,可通过 485 命令修改波特率、校验位、停止位。
帧处理规则
- 485→LoRa(本地上行发送)485 收到数据:
- 如果帧长>238 字节:直接丢弃,不分包;业务侧必须分包。
- ≤238 字节:软件添加帧头、14 字节 net_id、CRC 校验,封装为 LoRa 无线帧;执行 LoRa 的先听后发 LBT,信道空闲才发送;信道持续忙超过 5s 丢弃报文。
- LoRa→485(无线接收下行)收到空中 LoRa 帧:
- 校验帧头、CRC;校验 net_id,net_id 和本地不一致直接丢弃,不转发输出 485。
- 校验通过,剥除帧头、net_id、CRC,原始净载荷从 RS485 接口输出。
- 双向流程示例 PC1 接节点 A,PC2 接节点 B,组网完成后 TRANS 状态:
- PC1 发数据给 A:A 封装无线帧空中广播;B 收到校验通过剥离头部,原始数据输出给 PC2。
- PC2 发数据给 B:B 封装无线帧广播;A 收到校验,剥离头部输出给 PC1。
- 每成功收发一帧,com 指示灯脉冲闪烁一次。
注意:这是广播式透传,组网内所有节点收到报文,目标依靠上层 485 协议区分,LoRa 层不做单播寻址,依靠 net_id 隔离不同网络。
五、RS485 配置命令协议原理
设备自定义 Modbus‑like 私有 485 协议,帧头固定FE BB 55 25,支持读 0x03、写 0x10 功能码,读写设备参数;参数掉电保存,写入后立即生效,不需要重启设备。
表格
| 命令地址 | 名称 | 读写 | 数据说明 |
|---|---|---|---|
| 0x0000 | 固件信息 | 只读 | 2B 软件编号 + 2B 版本,固件版本识别 |
| 0x0001 | 设备 SN | 读写 | 14 字节 SN 序列号 |
| 0x0002 | net_id 网络标识 | 读写 | 14 字节;写全 0 代表解绑网络 |
| 0x0003 | LoRa 射频参数 | 读写 | channel、SF、BW、CR、发射功率 power;默认:ch0、SF7、BW125k、CR4/5、20dbm |
| 0x0004 | 串口参数 | 读写 | 波特率 4B 大端、停止位、校验位;修改 RS485 通信波特率 |
参数越界会自动钳位到合法范围,不会造成设备死机。
六、可软件配置参数(0x0003 寄存器)
1. SF 扩频因子 Spreading Factor(7‑12,默认 SF7)
LoRa 最核心参数,直接权衡距离与延迟。
- 对距离:SF 越大,扩频增益越高、接收灵敏度越好,通信距离越远。SF 每 + 1,接收灵敏度提升约 2.5dB;SF12 相比 SF7 理论距离提升数倍。
- 对延迟:SF 越大,符号时间指数级变长,空中时间急剧增加,延迟显著变大。SF 每 + 1,符号时间翻倍。
例:BW=125k,SF7 符号约 1ms;SF12 符号约 32ms,相同数据包空中时间差几十倍。
- 工程取舍:近距离实时性优先选 SF7‑8;远距离、弱现场选 SF10‑12,但报文延迟会升到百毫秒甚至秒级。
2. BW 信号带宽 Bandwidth(125k/250k/500k,设备默认 125k)
- 对距离:带宽越小,接收灵敏度越高,距离更远;带宽越大,底噪抬高,灵敏度下降、距离变短。
- 对延迟:带宽越大,符号时间越短,空中传输越快,延迟降低。BW 翻倍,符号时间减半。
例:SF7,BW=125k 速率≈5.5kbps;BW=250k≈11kbps。 注意:小带宽对晶振精度要求高,工业设备常用 125kHz。
3. CR 编码率 Coding Rate(4/5、4/6、4/7、4/8;默认 4/5)
CR 代表纠错冗余,4/(4+CR_value)。
- 对距离:CR 越大(如 4/8)冗余更多,抗干扰、纠错能力强,复杂环境下有效通信距离 / 稳定性提升;开阔环境对最大理论距离几乎不改变。
- 对延迟:冗余增加,有效载荷占比下降,相同业务字节,需要传输更多符号,空中时间增加,延迟变大。
CR=4/5:冗余最少,速率最快、延迟最小;CR=4/8 抗干扰最强,吞吐量最低。
4. max_power 发射功率(1‑22dBm,默认 20dBm)
- 对距离:发射功率提升直接增加链路预算。遵循 3dB 规则:功率提升 3dB,理论距离约 ×1.4 倍。受法规限制,不能无限开大。
- 对延迟:几乎不影响空中传输延迟,只影响能不能收到报文;功率不足会造成丢包,间接因为重传导致延迟增大。
5. channel 工作信道(0‑62)
信道本身不改变单包延迟与理论最大距离,但会影响实际表现:
- 如果该信道存在外部干扰、同频信号,会造成丢包,触发 LBT 退避、重传,实际延迟上升、有效通信距离下降;
- AWT100 组网时 AP 会自动扫频避开被占用信道,就是规避这个问题。
6. 帧有效载荷长度(业务字节)
设备最大单帧238 字节,超过直接丢弃。
- 载荷字节越长,空中传输时间越长,延迟越高;
同样 SF/BW/CR 条件:200 字节报文空中时间远大于 10 字节报文。业务尽量小包,降低延迟。
| 参数 | 增大该参数对通信距离 | 增大该参数对端到端延迟 | 备注 |
|---|---|---|---|
| SF 扩频因子 | ↑显著提升距离 | ↑显著增大延迟 | 最核心权衡参数 |
| BW 带宽 | ↓距离下降 | ↓延迟减小 | 带宽越大灵敏度越低 |
| CR 编码率 | 复杂环境稳定性↑;开阔距离几乎不变 | ↑延迟增大 | 增加纠错冗余 |
| 发射功率 max_power | ↑提升链路预算距离 | 几乎无影响;丢包重传会间接变大 | 受法规上限约束 |
| Payload 载荷字节数 | 无直接影响 | ↑延迟增大 | >238 字节直接丢弃 |
| Channel 信道 | 干扰信道实际距离下降 | 干扰信道因退避重传延迟上升 | 尽量选干净信道 |
七、IAP 在应用编程固件升级原理
支持串口 IAP 升级,不用仿真器,RS485 触发跳转 BootLoader,Ymodem 协议传输固件镜像。
- 上位机发送特定跳转命令,携带仪表地址、软件编号。
- 设备回复错误码;上位机等待 500ms,发送切换波特率命令,切换 bootloader 串口波特率 9600。
- 设备跳转 BootLoader,串口输出 BootLoader 菜单 ASCII 文本。
- 上位机发送字符
'1' (0x31),进入固件升级模式;设备循环输出字符C,代表就绪等待 Ymodem 数据包。 - 上位机以Ymodem 协议发送 bin 固件文件;烧录完成自动跳转运行新固件。
- BootLoader 菜单还支持退出升级、关闭 Flash 写保护、清除错误标记等功能。
关键点:应用程序和 BootLoader 是分开两段 Flash 分区,IAP 升级只重写应用程序区,BootLoader 本身不会被更新。
八、存储(FRAM)掉电保存模型
表格
| 参数 | 掉电保存 | 说明 |
|---|---|---|
| 工作信道、net_id 网络标识、LoRa 射频参数、串口参数 | ✅ FRAM 持久保存 | 断电不丢失,上电读取恢复 |
| AP/STA 角色 | ❌ 不保存 | 上电强制复位为 STA 监听方,角色只是临时上电状态 |
场景风险:按键保存信道,会把 FRAM 中 net_id 清空;所以改信道之后,要么重新组网,要么 485 写回 net_id,否则设备不会收发业务数据。
九、完整逻辑总结与关键设计取舍
- 角色临时化:AP 仅用来发起组网,不永久固化,组网完成后全部变成对等 STA,没有固定主节点,不存在单点故障;重启全部变回 STA,系统鲁棒性更高。
- 双层网络隔离:信道 + net_id
- 信道:物理频点隔离;
- net_id:软件逻辑网络隔离;同一物理信道可以部署多套互不干扰的自组网系统。
- 两种入网方式:自动学习(简单单网)、485 手动写入 net_id(工业多网现场)适配不同工况。
- 帧长硬性限制 238 字节:硬件 LoRa 缓存限制,设备内部不做分片重组,业务层必须分包处理长报文。
- 双配置入口:按键本地配置 + RS485 远程配置;现场调试可以按键,系统集成用 485 总线远程配置参数。
- IAP 升级保障现场固件迭代:设备安装后不用拆机,串口即可升级固件。
- 状态机强约束:组网配对模式下关闭业务透传,防止组网过程业务乱码;信道设置保存自动清空网络标识,规避参数不一致异常。
十、典型异常原理解释
- 保存信道后不能通信:保存信道动作清空 net_id,网络标识为空,设备只监听不发送;需要重新组网或者写 0x0002 命令。
- 短按按键没有立刻反应:按键 1.5s 确认延时,区分三连按,松手等待即可。
- 同信道两套设备不会串数据:收到帧 net_id 不匹配直接丢弃。
- 大于 238 字节报文丢失:设备没有分包重组逻辑,业务软件必须拆分报文。