基于LoRa的漏水与地震预警系统设计与实现 1. 项目背景与核心价值在工业设施、地下管网和地震多发区域水浸和地震活动是两大主要风险源。传统有线监测系统存在布线复杂、维护困难等问题而普通无线方案又受限于传输距离和功耗。这套基于LoRa的漏水与地震预警系统正是为解决这些痛点而生。我去年参与某化工厂安全改造时就遇到过类似需求。厂区面积大、环境复杂需要一种能同时监测管道泄漏和地质活动的方案。经过多轮技术选型最终采用了这套LoRa方案其核心优势在于15公里超远距离通信实测在厂区环境可达3-5公里极低功耗接收端两节AA电池可工作半年双传感器协同地震水浸检测精度达±0.5%模块化设计可根据需要增减传感器节点2. 硬件架构解析2.1 核心组件选型系统采用三层架构设计以下是经过实测验证的硬件配置组件类型型号关键参数选型理由主控MCUSTM32F407ZG168MHz Cortex-M4, 1MB Flash丰富外设接口支持浮点运算LoRa模块LR11 Click 868MHzSX1261芯片14dBm输出支持LoRaWAN Class A/B/C地震传感器Earthquake ClickOMRON D7S检测范围0.5-5Hz全球最小SI值计算传感器水浸传感器Water Detect Click检测电阻100kΩ触发无机械部件寿命长达10年特别提醒LR11模块需搭配868MHz柔性偶极天线如Ezurio ANT-868-FPC实测比PCB天线增益高3dB2.2 硬件连接要点在UNI-DS v8开发板上三个mikroBUS插槽的接线有特殊要求LR11 ClickMIKROBUS_1必须使用SPI1接口SCK-PA5, MISO-PA6, MOSI-PA7复位引脚接PE0中断引脚接PE1Earthquake ClickMIKROBUS_2I2C1接口SCL-PB6, SDA-PB7中断输出接PD10Water Detect ClickMIKROBUS_3模拟输入接PA3数字输出接PD12踩坑记录曾有项目因将Water Detect接在PA4DAC输出引脚导致误触发务必检查引脚复用功能3. 软件实现关键点3.1 状态机设计系统采用分层状态机架构这是我优化后的核心逻辑typedef enum { SYS_INIT 0, LORA_POWER_UP, SENSOR_READ, DATA_TRANSMIT, ERROR_HANDLE } system_state_t; // 状态处理函数指针 typedef void (*state_handler)(void); state_handler handlers[] { handle_init, handle_lora_power, handle_sensor_read, handle_transmit, handle_error }; void main_loop() { while(1) { handlers[current_state](); // 看门狗喂狗 IWDG_ReloadCounter(); } }3.2 数据传输协议自定义的轻量级协议格式经实际项目验证| 0xAA | 0x55 | 传感器类型 | 数据长度 | 数据内容 | CRC16 | |------|------|------------|----------|----------|-------| | 1B | 1B | 1B | 1B | N Bytes | 2B |地震数据示例AA 55 01 04 3F 9D 70 A4 2D 5B01表示地震传感器04表示4字节数据float类型的SI值3F9D70A4是0.1234的IEEE754编码2D5B是CRC校验水浸数据示例AA 55 02 01 01 B4 2F02表示水浸传感器01表示1字节数据01表示检测到水B42F是CRC校验经验分享建议在LR11的LoRa配置中使用SF9BW125kHz这是距离与功耗的最佳平衡点4. 实战调试技巧4.1 传感器校准地震传感器校准步骤将D7S放置在水平台面上发送校准命令0x41 0x43 0x53 0x00等待LED由红变绿约30秒通过UART读取校准结果0x00表示成功水浸传感器灵敏度调整修改比较器参考电压// 在waterdetect.c中调整 void set_sensitivity(uint8_t level) { // level 1-3对应不同阈值 static const uint16_t refs[] {1200, 900, 600}; // mV DAC_SetChannel1Data(DAC_Align_12b_R, refs[level-1]); }4.2 LoRa网络优化在多节点部署时采用以下参数可避免冲突lr11_config_t config { .freq 868100000, // 中心频率 .sf 9, // 扩频因子 .bw LORA_BW_125, // 带宽 .cr LORA_CR_4_5, // 编码率 .sync_word 0x12, // 私有网络标识 .preamble_len 8, // 前导码长度 .tx_power 14 // dBm };实测发现设置2秒的随机延迟可显著降低碰撞概率void transmit_with_backoff() { uint16_t delay rand() % 2000; HAL_Delay(delay); lr11_send(data); }5. 典型应用场景5.1 地下停车场监测系统在某商业综合体项目中我们部署了20个节点每个防火分区布置1个水浸传感器每根结构柱安装1个地震传感器数据汇聚到中央网关带4G回传关键改进采用IP67防护外壳增加蜂鸣器本地报警设置多级阈值预警/报警/紧急5.2 输油管道监测针对长输管道的特点我们做了特殊优化每500米布置一个中继节点使用磁吸式安装支架增加温度传感器监测管道泄漏采用太阳能超级电容供电系统性能指标参数指标值端到端延迟3秒误报率0.1%/月电池寿命5年太阳能这套系统在实际运行中成功预警了3次小型地震和1次管道渗漏验证了其可靠性。对于需要长距离、低功耗无线监测的场景LoRa方案确实展现出独特优势。后续我们计划加入AI算法实现更精准的异常模式识别。