MyRiver:基于 Arduino MKR FOX 1200 的河流水质远程监测系统
项目背景
河流污染与洪水威胁着居民生活与畜牧安全。传统监测手段成本高、覆盖面窄。MyRiver 利用 Sigfox 低功耗广域网(LPWAN)实现偏远地区无需 Wi-Fi/蜂窝网即可远程监测,配合 Wia 物联网平台实现数据可视化与即时报警。
监测指标与原理
| 参数 | 传感器 | 检测原理 | 阈值判定 |
|---|---|---|---|
| 水位 | 水位传感器(模拟量) | 电阻/电容式测量水深 | > 200 判定为“HIGH”潜在洪水 |
| pH 值 | pH 传感器(模拟量) | 电极法测量氢离子浓度 | < 6.5 或 > 8.5 判定污染 |
| 不溶性污染物 | 白光 LED + 光敏电阻 | 光穿透水体衰减检测油/汞等悬浮物 | 光敏值 < 200 判定为“POLLUTED” |
硬件清单
- Arduino MKR FOX 1200(内置 Sigfox 模块,SAMD21 低功耗)
- pH 传感器模块(模拟输出,接 A1)
- 水位传感器(模拟输出,接 A2)
- 光敏电阻 + 白光 LED + 2×220Ω 电阻(接 A3)
- 2×AA 电池盒(利用低功耗模式可运行数月)
- 杜邦线、焊接工具、水瓶外壳(生态友好外壳)
数据传输流程
- 每 30 分钟唤醒 → 读取 3 路 ADC(10-bit,0-1023)
- 将 3 个整数各补零至 4 字节,拼成 12 字节字符串(如
02406200123) - 通过 Sigfox 发送(单次最多 12 字节)
- Sigfox 回调 → Wia Webhook(HEX → UTF-8 字符串)
- Wia Flow 解析:切分还原 3 个数值 → 换算物理量 → 阈值判断 → 邮件/APP 推送报警
关键代码片段
传感器读取
struct GetValue {
int riverLevel() { return analogRead(A2); }
int riverPh() { return (analogRead(A1) / 5 * 3.3); } // 电压换算
int riverPol() { return analogRead(A3); } // 光敏值
};
数据打包
String data(int level, int ph, int pol) {
int values[3] = {level, ph, pol};
String buf;
for (int v : values) {
if (v < 10) buf += "000";
else if (v < 100) buf += "00";
else if (v < 1000) buf += "0";
buf += String(v);
}
return buf; // 12 字节
}
Sigfox 发送
void parseData(String d) {
SigFox.beginPacket();
SigFox.print(d);
SigFox.endPacket();
}
Wia 平台配置要点
- Webhook URL:
https://api.wia.io/v1/events,POST,HeaderAuthorization: Bearer <token> - Flow 中使用 JavaScript 函数:
processPayload(HEX→字符串)、riverPollution/riverPh/riverLevel(解析与阈值判断)、processPollution/processPh/processLevel(触发报警) - 报警邮件模板包含设备 ID 与原始数据
光敏阈值标定方法
上传标定固件,串口监视器观察清水/污水下的 ADC 值,将 minVal 设为污水值上限(如 200)。
void loop() {
Serial.println(analogRead(A3));
delay(5000);
}
外壳与部署
废弃水瓶改造:切割开口安装传感器,热熔胶密封,瓶口贴胶带防渗漏。部署时选高潮期固定于岸边,确保水位传感器底部接水、光敏电阻完全浸没。
优势总结
- 全球 Sigfox 覆盖国均可部署,无需本地网络
- 超低功耗,2 节 AA 电池运行数月
- 创新光学法检测不溶性污染物,弥补 pH 监测盲区
- Wia 平台零代码可视化、报警、历史趋势图
- 成本极低,适合个人/社区/农场自主部署
制造工艺
- 树莓派 + MCP9808 + InfluxDB + Grafana:家庭温度监测系统
- 低成本情绪传感器与 EEG:实时情绪检测硬件方案
- 基于模拟传感器的高精度压力与气流测量装置
- DHT11 温湿度传感器项目:LED 指示与压电蜂鸣器报警
- UnifiedWater v1 — 基于 Arduino MKR GSM 1400 的完整水质监测套件
- 3D RGB Arduclock — 蓝牙控制全彩LED时钟带RTC与闹钟
- 自制简易红外避障传感器:IR LED + 光电二极管 + Arduino
- Arduino + 模拟摇杆互动游戏:五向 LED 反馈
- Find Me:基于 Arduino 与蓝牙的智能寻物器制作指南
- Arduino 驱动的迷你漫游车:自制避障机器人
- DIY Arduino 手柄方向盘 - 游戏竞速模拟器自制指南
- 氧传感器 (O2) 详解:作用、位置与故障征兆