没志青年
发布于 2026-01-08 / 19 阅读
0

LoRA

Lora 它物理层有固定的数据格式:

┌──────────┬──────────────┬──────────────┬─────────┐
│ Preamble │ PHY Header   │ Payload      │ CRC     │
└──────────┴──────────────┴──────────────┴─────────┘
  • 前导码

  • 报文头:分为显式头和隐式头

  • 载荷:真正传输的数据

  • CRC 校验

这个格式不用关系,CRC 啥的都是由硬件自动完成的。

项目中只需要关心 Payload 载荷这部分,这个的数据格式是我们自定义的,根据项目需求来。

参数:

参数

全称

作用

两个LoRA模块是否必须一致

Frequency

频点

决定在哪个无线信道

Bandwidth (BW)

带宽

速率 / 灵敏度

Spreading Factor (SF)

扩频因子

距离 / 速率

Coding Rate (CR)

编码率

抗干扰

Sync Word

同步字

网络区分

Preamble Length

前导码长度

同步稳定性

⚠️

Payload Length

有效载荷长度

数据大小

CRC Enable

CRC 校验

误码检测

⚠️

IQ Invert

IQ 反转

上下行区分

⚠️

TX Power

发射功率

距离

lora 就是只负责发送接收数据的,不对数据的安全做处理

安全处理得用lorawan,就像zigbee的zstack框架一样

LoRa 发出的无线帧,只要参数一致,任何 LoRa 接收端都“可能”收到; 但如果数据经过加密,没有密钥就只能拿到一串无法解析的比特流。

这些参数:

频点 / SF / BW / CR / SyncWord

一样的lora才能通信。

它的这个交互就是广播通信。

lora 一对多通信的一种思路,自己瞎想的:

约定,从设备之间是不能直接通信的,只能主和从之间通信。

(1)地址规划

  • 主站固定地址:0x0000

  • 广播地址:0xFFFF

  • 从节点地址池:0x0001 ~ 0xFFFE (建议用 2 字节地址,扩展性好;1 字节会很快不够。)

(2)自定义帧格式

┌────┬──────┬────────┬────────┬────────┬──────────┬────────┐
│Ver │ Type │ DstAdr │ SrcAdr │ Seq  │ Len     │ Payload│
└────┴──────┴────────┴────────┴────────┴──────────┴────────┘
 1B    1B      2B       2B       2B       1B        N bytes
  • Ver:协议版本

  • Type:消息类型(JOIN_REQ / JOIN_ACK / DATA / ACK / …)

    • 0x01 JOIN_REQ:从节点入网请求

    • 0x02 JOIN_ACK:主站分配地址应答

    • 0x03 DATA:上行数据

    • 0x04 ACK:确认包(对 JOIN/DATA/命令都适用)

    • 0x05 PING / 0x06 PONG:可选,在线检测

    • 0x07 BEACON:可选,主站周期广播(用于同步/宣布网络存在)

  • DstAdr:目的地址(广播=0xFFFF)

  • SrcAdr:源地址(入网前可以填 0xFFFF 或 0x0000,下面我会规定)

  • Seq:序号(用于 ACK/去重/重发)

  • Len:payload 长度

  • Payload:如果需要加密,就加密这个。AES 啥的加密算法。前面的不能加密,需要判断处理的。

这个项目中不需要加密,都是传感器的数据,没必要加密解密。

(3)通信流程

就是主站先启动,然后从设备启动后向主站发送入网请求,描述自己的设备类型,

主站接收后将这个设备记录下来,并生成一个网络地址返回给从设备,

从设备接收后保存这个地址并返回ACK,

这样主站就能通过这个地址找到对应的设备了。

因为从设备都能收到,所以通过地址判断这个报文是不是自己的,如果不是就忽略,是就处理。

用一个链表来保存设备信息,需要的时候遍历。

LoRA 数据安全

(1)私有LoRA

LoRAWan

设计就是要上云的,不是设备直连设备,和zigbee不一样。

LoRa 设备

↓(LoRa)

LoRaWAN 网关

↓(IP)

Network Server

Application Server(云)

LoraWan 是大面积组网使用的,比如城市中远程抄表。

在LoraWan 架构下,设备之间不能直接通信。是星形结构

Device A ─┐
Device B ─┼─▶ Gateway ─▶ Network Server ─▶ Application Server
Device C ─┘

网关是需要准备的另一个芯片实现的设备了。

大约200元以上。