Skip to content

About

低功耗 LoRa 无线传感节点与网关:协议、仿真、ESP32 固件、硬件/PCB 设计(毕业设计)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

LoRa Sensor Node

低功耗 LoRa 无线传感节点与网关:嵌入式固件 + 通信协议 + Python 网络仿真 + 硬件/PCB 设计。

这是一个毕业设计项目,面向微电子、通信工程、嵌入式三个方向: 模拟真实 LoRa 链路的 PDR/RSSI/SNR/时延/功耗,提供 ESP32 + E32 模块的固件骨架,以及传感器前端/电源/PCB 的设计文档。

现在的状态:网络仿真可运行;19 个测试;节点/网关固件可编译(CI 通过);硬件未实测;论文未写。

它解决什么问题

在电池供电、远距离、低数据率的场景(林业/农业/环境监测)里,如何用 LoRa 把传感器数据可靠地送到网关,并在丢包、重传、碰撞、功耗之间做取舍?

项目用可复现的仿真回答:

  • 不同距离/扩频因子下的 RSSI、SNR、PDR。
  • 重传与碰撞对时延和投递率的影响。
  • 占空比、平均电流、理论电池寿命。
  • 与硬件固件一致的二进制帧协议和 CRC。

系统结构

flowchart LR
    S[Sensor + analog front-end] --> M[MCU / ESP32]
    M --> R[E32 LoRa UART module]
    R -. LoRa .-> G[Gateway E32 + ESP32]
    G --> U[USB serial / PC]
    U --> P[Python gateway/plots]
Loading

节点周期采样 → 打包 → LoRa 发送 → 网关校验 CRC → ACK → 重传;节点大部分时间深睡。

快速开始(仿真)

py -3.12 -m venv .venv
.venv\Scripts\python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -e ".[dev]"

# 10 个节点、24 小时、60 秒上报
.venv\Scripts\python -m lora_sim simulate --nodes 10 --hours 24 --interval 60 --distance 1000 --sf 7 --out output/sim.csv --summary output/sim.json

# SF × 距离扫描
.venv\Scripts\python -m lora_sim sweep --nodes 5 --hours 6 --sf 7 9 12 --distances 1000 5000 10000 --out output/sweep.csv --summary output/sweep.json

# 测试
.venv\Scripts\python -m pytest -q

链路预算

.venv\Scripts\python -m lora_sim link-budget --distance 1000 --sweep-sf

确定性估算:FSPL + 对数距离损耗,输出 RSSI、SNR、灵敏度、链路余量、最大距离、空中时间和占空比;--json 输出机器可读结果。

仿真结果

10 节点、24 小时、60 秒上报、2 次重传、2000mAh 电池:

场景 PDR 平均时延 平均 RSSI 电池寿命 占空比
SF7 / 1 km 1.000 0.00s -98.3 dBm 636d 0.077%
SF12 / 1 km 1.000 0.00s -98.3 dBm 78d 0.853%
SF7 / 10 km 0.662 1.59s -125.2 dBm 329d 0.164%
SF12 / 10 km 1.000 0.08s -125.3 dBm 76d 0.885%

解释:

  • 1 km:SF7/SF12 都能全收;SF7 电池寿命高一个数量级。
  • 10 km:SF7 重传 2 次仍只有 0.662 PDR;SF12 靠更高灵敏度做到 1.000,但占空比/功耗显著上升。
  • 取舍:近距离优先 SF7;远距离优先 SF12 或中继;没有“全都好”的参数。

这是仿真结果,不是实测;实物需要复测 RSSI/SNR/PDR/功耗。

参数扫描

5 节点、6 小时、60 秒上报、2 次重传:

SF 1 km PDR 5 km PDR 10 km PDR 10 km 时延 10 km 电池
SF7 1.000 0.998 0.672 1.60s 331d
SF9 1.000 1.000 0.970 0.70s 255d
SF12 1.000 1.000 1.000 0.04s 77d
  • SF7 在 10 km 靠重传也只能到 0.672;SF9 是折中;SF12 最稳但电池寿命掉到 ~77 天。
  • 扫描窗口/节点数与 24h 结果不同,PDR 会有小幅差异;用同一配置复现。

固件

  • firmware/node:ESP32 + E32 UART,ADC 采样、二进制帧、CRC16、ACK 等待、重传、深睡。
  • firmware/gateway:ESP32 + E32 UART,收帧、CRC 校验、ACK、USB JSON 输出。
  • 编译:
pio run -d firmware/node
pio run -d firmware/gateway

P0 用现成 E32 模块降低射频门槛;下一版可换 SX1276/RadioLib 或自制 RF 前端。

硬件 / 微电子部分

  • 传感器前端:土壤湿度/温湿度、运放缓冲与 RC 滤波、ADC。
  • 电源:18650 + 充电/保护 + LDO/Buck + MOSFET 给 LoRa 模块断电。
  • PCB:2 层、地平面、50Ω 天线走线、模块净空、ESD/去耦、测试点。
  • 详见 docs/hardware.md、docs/bom.md、docs/bringup.md。

文档

目录

路径 内容
src/lora_sim/ 协议、信道、节点、网关、仿真、链路预算、扫描、CLI
firmware/node/ 节点固件(ESP32 + E32)
firmware/gateway/ 网关固件(ESP32 + E32 + USB)
tests/ 协议/信道/网关/仿真/链路预算/扫描测试
docs/ 架构、协议、硬件、BOM、bring-up、评估、论文提纲、里程碑、安全

和毕业设计的关系

  • 通信:LoRa 参数、路径损耗、RSSI/SNR、PDR、重传、碰撞、占空比。
  • 嵌入式:ADC/UART/CRC/状态机/深睡/重传。
  • 微电子:传感器模拟前端、电源树、PCB/射频布局、功耗预算。
  • 论文可以写“系统设计 + 仿真 + 实物验证 + 功耗/距离实验”。

路线

  • 2027:仿真/协议/固件骨架;画 PCB;买 E32/传感器。
  • 2028:实物节点 + 网关;距离/功耗实验;用户/场景测试。
  • 2029:论文/答辩;扩展多跳/太阳能/边缘计算。

License

MIT

About

低功耗 LoRa 无线传感节点与网关:协议、仿真、ESP32 固件、硬件/PCB 设计(毕业设计)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages