1. 项目概述
这个开源项目实现了一个基于4G和LoRa技术的远程雨量监测系统,核心创新点在于将传统环境监测设备与免开发云平台和小程序生态无缝对接。我在实际部署中发现,这种架构特别适合中小型水文站、农业园区和地质灾害预警点等需要低成本、易维护监测方案的场景。
整套系统由三部分组成:前端传感器节点采用LoRa传输(实测通信距离在开阔地带可达5公里),中间网关通过4G网络上传数据,后端直接对接免开发云平台生成可视化界面。这种设计让使用者无需编写服务器代码就能快速搭建完整监测系统,从硬件组装到手机查看数据最快只需2小时。
2. 硬件设计与选型解析
2.1 传感器节点方案
雨量传感器选用翻斗式脉冲输出型号,每0.2mm降雨量触发一次信号。这个精度经过实地验证,既能准确记录小雨事件,又不会在暴雨时产生数据溢出。节点控制器采用STM32L071低功耗芯片,配合SX1278 LoRa模块,整套电路在休眠模式下电流仅1.8μA。
关键技巧:在PCB布局时,将LoRa天线与金属翻斗保持至少15cm距离,可避免射频干扰导致的误触发。
2.2 网关设备配置
4G网关选用移远EC20模组搭配树莓派CM4核心板,这个组合既保证了网络稳定性,又留有充足算力运行协议转换程序。特别要注意的是:
- 在/etc/ppp/peers目录下创建4G拨号配置文件时,必须添加
lcp-echo-interval 30参数,否则运营商侧会因心跳超时强制断线 - LoRa接收端使用RA-02模块配合定向天线时,需要校准天线角度与传感器分布位置匹配
2.3 电源管理方案
野外部署最头疼的就是供电问题。我们测试了三种方案:
| 方案 | 成本 | 维护周期 | 适用场景 |
|---|---|---|---|
| 18650电池组 | 低 | 3-6个月 | 临时监测点 |
| 太阳能+超级电容 | 中 | 1-2年 | 无遮挡区域 |
| 市电+UPS | 高 | 5年以上 | 固定站点 |
实测发现采用2W太阳能板配合2个3300F超级电容的方案最具性价比,在长江流域阴雨天气下能保证连续30天不间断工作。
3. 云端对接实战
3.1 免开发云平台选型
对比测试了三大主流平台:
- 阿里云IoT生活物联网平台:提供完整设备管理API,但小程序模板样式固定
- 腾讯云IoT Explorer:与微信生态无缝对接,但自定义报警规则较复杂
- ThingsBoard开源版:灵活性最高,但需要自行部署服务器
最终选择腾讯云方案,因其特有的"一键生成小程序"功能确实能节省90%的前端工作量。具体对接流程:
# 设备端MQTT连接示例 mosquitto_pub -h "iotcloud.tencent.com" -t "PRODUCT_ID/DEVICE_NAME/data" \ -u "PRODUCT_ID;DEVICE_NAME;SECRET_KEY" -P "" -m '{"rainfall":5.2}'3.2 数据协议设计
考虑到LoRa网络的低带宽特性,设计了一套紧凑的二进制协议:
[头标识0xAA][2字节雨量值][1字节信号强度][1字节CRC]在网关侧转换为JSON格式时,需要特别注意单位换算。例如原始数据"0x0208"表示:
- 高字节02:2mm
- 低字节08:0.8mm 实际降雨量 = 2 + 0.8 = 2.8mm
3.3 报警规则配置
在云平台设置分级预警机制:
- 小时降雨量>30mm:黄色预警(微信服务通知)
- 连续3小时>15mm/h:橙色预警(短信+小程序弹窗)
- 瞬时降雨>50mm/h:红色预警(电话语音呼叫)
这里有个隐藏坑点:不同云平台的时间窗口计算方式不同,阿里云按自然小时统计,而腾讯云是滑动时间窗口,设置阈值时务必查看平台文档。
4. 小程序开发技巧
4.1 快速生成基础功能
使用腾讯云提供的"设备详情模板",只需三步即可完成核心功能:
- 在iot-explorer控制台绑定小程序AppID
- 下载自动生成的代码包
- 修改project.config.json中的云环境ID
4.2 自定义数据可视化
平台默认的折线图往往不符合水文监测需求,我们通过以下改造实现专业级展示:
// 使用F2绘制雨量直方图 const chart = new F2.Chart({ id: 'rainfallCanvas', pixelRatio: window.devicePixelRatio }); chart.source(data, { time: { type: 'timeCat', mask: 'MM-DD HH:mm' }, value: { tickCount: 5, formatter: val => `${val}mm` } }); chart.interval().position('time*value').color('type'); chart.render();4.3 离线缓存策略
针对野外信号不稳定的情况,实现了本地存储+增量同步机制:
wx.getNetworkType({ success(res) { if (res.networkType === 'none') { wx.setStorageSync('offlineData', newData); } else { this.syncToCloud(); } } });5. 部署与运维经验
5.1 现场安装要点
- 传感器水平校准:使用双轴气泡水平仪确保翻斗装置完全水平,倾斜>5°会导致测量误差达20%
- 天线方位调整:先用频谱仪测试信号强度,再固定天线方向
- 防雷措施:所有外露线缆必须加装TVS二极管,我们曾因雷击损失过一整套设备
5.2 常见故障排查
根据三年运维数据统计,高频问题包括:
| 故障现象 | 可能原因 | 解决方案 |
|---|---|---|
| 数据断续 | LoRa信号干扰 | 修改SF参数从7调到9 |
| 4G频繁掉线 | APN设置错误 | 检查运营商提供的APN名称 |
| 雨量数据为0 | 翻斗卡死 | 用棉签清洁轴承处泥沙 |
5.3 长期维护建议
- 每季度检查:
- 清理传感器滤网
- 紧固天线接头
- 测试备用电源
- 年度维护:
- 更换干燥剂
- 刷新设备固件
- 校准传感器精度
这套系统在贵州山区连续运行18个月后,数据完整率仍保持在99.2%以上,证明其可靠性完全满足野外监测需求。对于想快速搭建专业级监测系统的团队,这种"硬件+免开发云"的模式确实能大幅降低技术门槛。