1. 项目背景与核心价值去年参与某水利监测项目时发现传统水位监测方案存在三大痛点有线部署成本高、偏远地区网络覆盖差、低功耗要求严苛。当时我们就想能不能用Lora4G双模传输搭配毫米波雷达做个全天候工作的无线水位监测器经过半年多的原型开发和实地测试这个开源项目终于能和大家见面了。这个监测器的核心优势在于毫米波雷达实现非接触式测量避免传统浮子式传感器的机械磨损Lora组网覆盖半径达3km实测开阔水域4G双模保障网络可靠性整机休眠电流5μA太阳能供电可无人值守工作3年以上2. 硬件系统设计解析2.1 传感器选型对比我们测试过三种主流方案超声波传感器成本低但易受温度影响测量误差±3cm激光测距仪精度高±1mm但怕水雾单价超2000元60GHz毫米波雷达最终选用IWR6843AOPEVM优势在于测距精度±2mm实测静水面支持FMCW调频连续波抗干扰能力强集成DSP处理器可直接输出距离数据注意毫米波模块需要做防水密封处理我们用的方法是PCB三防漆硅胶灌封成本比专用防水外壳低80%2.2 通信模块设计双模通信架构如图所示[雷达模块] --UART-- [STM32主控] --SPI-- [Lora模块] | [USB]--[4G模组]关键参数配置Lora模块SX1262芯片868MHz频段编码率4/5带宽125kHz扩频因子SF9实测传输距离城区1.2km开阔地3.5km4G模块移远EC200T支持TCP/UDP透传内置PPP拨号心跳包间隔设15分钟降低流量消耗3. 嵌入式软件实现3.1 低功耗管理通过STM32的STOP模式实现超低功耗void enter_stop_mode(void) { HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN1); HAL_PWREx_EnterSTOP2Mode(PWR_STOPENTRY_WFI); SystemClock_Config(); // 唤醒后需重新初始化时钟 }功耗实测数据工作模式电流消耗唤醒周期雷达测量85mA每10分钟Lora传输120mA每次测量后深度睡眠4.8μA-3.2 数据融合算法针对波浪干扰开发了动态加权滤波算法采集10个雷达原始数据点100ms间隔计算标准差σ确定波动强度加权公式result Σ(wixi), wi1/(1σ|xi-μ|)实测滤波效果对比算法类型静水误差波浪误差(20cm浪高)算术平均±2mm±58mm中值滤波±3mm±42mm动态加权(本方案)±2mm±15mm4. 云端平台对接4.1 数据协议设计采用精简JSON格式减少流量{ dev_id:A1B2C3, time:1634567890, distance:3256, temp:26.5, volt:3.82, rssi:-68 }重要技巧在STM32上用snprintf()构造JSON时务必预分配足够内存。我们遇到过因缓冲区溢出导致数据截断的问题4.2 微信报警实现通过Server酱接口推送异常告警def send_warning(device, value): url fhttps://sc.ftqq.com/{KEY}.send params { text: f水位异常报警 - {device}, desp: f当前水位{value}mm超过警戒阈值 } requests.get(url, paramsparams)5. 实地部署经验5.1 安装注意事项我们在长江支流部署时总结的要点雷达安装角度建议30°-45°俯角避免正对阳光直射位置影响毫米波信号最低安装高度 最高水位 1m安全余量使用304不锈钢支架防止锈蚀5.2 典型问题排查常见故障处理速查表现象可能原因解决方法数据波动大水面有漂浮物调整安装位置或启用滤波Lora频繁丢包天线方向不对用频谱仪优化天线方位角4G模块上线慢SIM卡接触不良用橡皮擦清理SIM卡触点续航时间骤减太阳能板积灰每月清洁表面检查充电电流6. 开源项目改进方向当前版本已实现的功能[x] 双模自动切换通信[x] 微信/短信报警[x] 历史数据存储后续计划增加雷达回波分析功能识别水面漂浮物NB-IoT通信支持边缘计算能力本地预警所有硬件设计文件和固件源码已上传GitHub搜索WaterLevel-Radar-Monitor即可获取。特别提醒毫米波模块需要向TI申请样片建议提前2个月准备