Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LoRa 远距离低功耗组网通信项目

本仓库实现了基于 STM32L152 (蓝桥杯物联网竞赛板) 以及 SX1278 LoRa 模块、AHT10 温湿度传感器、SSD1306 OLED 屏的低功耗远距离无线组网通信系统。


🛠️ 项目文件结构

E:\projects\c2\
├── Common\
│   ├── Inc\
│   │   ├── sx1278.h        ← SX1278 LoRa 驱动头文件(寄存器定义 + 参数配置)
│   │   ├── aht10.h         ← AHT10 温湿度传感器驱动头文件
│   │   ├── oled.h          ← SSD1306 OLED 驱动头文件
│   │   └── lora_packet.h   ← 数据包协议定义(10字节格式)
│   └── Src\
│       ├── sx1278.c        ← SX1278 完整驱动(初始化/发送/接收)
│       ├── aht10.c         ← AHT10 I2C 驱动(75ms 测量周期)
│       ├── oled.c          ← SSD1306 驱动(6×8字模 + 显存刷新)
│       └── lora_packet.c   ← 数据包打包/解包(XOR校验)
├── Sender\Src\
│   └── main_sender.c       ← 发送端主逻辑
└── Receiver\Src\
    └── main_receiver.c     ← 接收端主逻辑

📡 核心 LoRa 参数配置

参数 配置值 说明
频率 433 MHz 中国免许可 ISM 频段
扩频因子 SF 7 速率与传输距离的折中平衡(~5.47 kbps)
带宽 BW 125 kHz 标准工业级带宽配置
编码率 CR 4/5 前向纠错码率,提供较强的纠错抗干扰能力
同步字 0x12 隔离其他信道,确保局域网络私密性

一、LoRa 参数(带宽 BW、扩频因子 SF)对速率/距离的影响

1.1 扩频因子(Spreading Factor,SF)

LoRa 使用线性调频(Chirp)扩频技术,扩频因子 SF 决定了每个符号(Chirp)包含的信息位数,范围 SF6 ~ SF12。

SF 符号时长 (BW=125kHz) 比特率 (约) 接收灵敏度 传输距离估算
SF7 1.024 ms ~5.47 kbps -123 dBm 1~3 km(视距)
SF8 2.048 ms ~3.13 kbps -126 dBm 1.5~4 km
SF9 4.096 ms ~1.76 kbps -129 dBm 2~6 km
SF10 8.192 ms ~0.98 kbps -132 dBm 3~8 km
SF12 32.77 ms ~0.24 kbps -137 dBm 5~15 km

规律(SF 越大):

  • 每个符号持续时间 × 2,速率减半
  • 接收灵敏度提高约 3 dBm(等效链路预算增加)
  • 传输距离显著增加,功耗也随之增大

$$T_{symbol} = \frac{2^{SF}}{BW}, \quad R_{bit} = SF \times \frac{BW}{2^{SF}} \times CR$$

1.2 带宽(Bandwidth,BW)

BW 比特率 接收灵敏度 抗频偏能力
500 kHz 最高 最低(弱3dB) 最强
250 kHz
125 kHz 适中(基准) 基准 较弱

规律(BW 越小): 灵敏度更高、距离更远,但速率降低,且对晶振频偏更敏感。


二、中国免许可频段使用规范

根据工信部《微功率短距离无线电设备频率使用规定》:

433 MHz 频段

  • 频率范围:433.0 ~ 434.79 MHz
  • 最大发射功率10 mW(10 dBm)
  • 带宽限制:≤ 200 kHz
  • 许可要求免许可(微功率设备)
  • 使用限制:不得持续占用信道,需限时发射(避免对同频设备造成连续干扰)

470 MHz 频段(LoRaWAN CN470)

  • 频率范围:470.0 ~ 510.0 MHz
  • 最大发射功率50 mW(17 dBm)
  • 许可要求免许可

注意:SX1278 PA_BOOST 最大可达 20 dBm,在 433 MHz 下使用时需通过软件进行限制,确保发射功率 ≤ 10 dBm。


三、硬件接线说明

SX1278 LoRa 模块(SPI1 接口)

SX1278 引脚 STM32 引脚 功能说明
VCC 3.3V 电源(勿接 5V)
GND GND 公共地
NSS/CS PA4 SPI 片选(软件)
SCK PA5 SPI 时钟
MISO PA6 主入从出
MOSI PA7 主出从入
RESET PB0 硬件复位
DIO0 PB1 TX/RX Done 中断
ANT 天线 433MHz 1/4λ≈17cm

AHT10 温湿度传感器(I2C1 接口)

AHT10 STM32 引脚 说明
VCC 3.3V 电源
GND GND
SDA PB7 I2C 数据
SCL PB6 I2C 时钟

LED 控制指示灯

LED GPIO 触发条件
LED1 PB8 温度 ≥ 25°C 时翻转
LED2 PB9 温度 < 25°C 时翻转

四、LoRa 数据包格式(共 10 字节)

为了避免传输多余的字符开销、提高无线信道利用率,我们自定义了精简的二进制数据包结构:

┌────────┬─────────────────┬─────────────────┬──────────┐
│ [0]    │ [1] ~ [4]       │ [5] ~ [8]       │ [9]      │
│ HEAD   │  TEMPERATURE    │  HUMIDITY       │ CHECKSUM │
│ 0xA5   │  float 小端序   │  float 小端序   │ XOR[0~8] │
│ 1字节  │  4字节          │  4字节          │ 1字节    │
└────────┴─────────────────┴─────────────────┴──────────┘
  • HEAD:帧头,固定为 0xA5,用于接收端快速过滤杂波和确认包起始。
  • TEMPERATURE / HUMIDITY:温湿度值,使用标准的 4 字节 IEEE 754 浮点数以小端字节序(Little-Endian)表示。
  • CHECKSUM:前 9 个字节的异或和(XOR Checksum),确保无线信道传输中发生单 bit 或多 bit 翻转时能被丢弃。

五、系统工作流程

【发送端(Sender)】              【接收端(Receiver)】
         │                                 │
  AHT10_Init()                       OLED_Init()
  SX1278_Init(433MHz/SF7/BW125k)     SX1278_Init(相同参数)
         │                         SetMode(RX_CONTINUOUS)
         │ 每 2 秒循环                      │
         ▼                                 │ 轮询 IRQ_RX_DONE
  AHT10_ReadData()                         │
         │                          SX1278_Receive()
  LoRaPkt_Pack()                           │
         │                          LoRaPkt_Unpack()
  SX1278_Send()                            │
         │                          UpdateOLED(显示温湿度+RSSI)
  Toggle LED2(发送指示)                   │
                                   ┌───────┴────────┐
                                   │  temp < 25°C?  │
                                   ├── 是 ──────────► ToggleLED2
                                   └── 否 ──────────► ToggleLED1

About

基于 STM32 与 SX1278 LoRa 模块的低功耗远距离无线组网通信系统

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages