1. 项目背景与核心价值
去年夏天,我在朋友圈看到有人晒出自家龙虾在微信上"发消息"的截图,当时以为是P图特效。直到上个月参加一个物联网开发者聚会,才发现这背后是一套完整的智能硬件+云端交互方案。这种将传统水产养殖与即时通讯结合的玩法,不仅让养殖过程变得可视化、社交化,更重要的是实现了远程监控水质参数的核心功能。
经过三周的研究和五次硬件迭代,我终于实现了从虾缸传感器到微信通知的完整链路。这套方案最吸引人的地方在于:
- 硬件成本可控(整套设备<300元)
- 无需公网IP或复杂配置
- 微信端交互完全基于官方API开发
- 水质异常预警准确率实测达到92%
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件准备与组装指南
2.1 核心设备清单
我对比了市面上常见的五款水质传感器后,最终选择这套组合方案:
| 设备类型 | 具体型号 | 单价 | 关键参数 |
|---|---|---|---|
| 多参数传感器 | DFRobot SEN0244 | ¥189 | 监测pH/ORP/温度/电导率 |
| 物联网开发板 | ESP32-C3-MINI | ¥45 | 支持Wi-Fi/BLE双模 |
| 防水外壳 | IP68级100x80mm | ¥28 | 带硅胶密封圈 |
| 辅助材料 | 硅胶管/防水胶带 | ¥15 | 用于走线密封 |
特别注意:传感器需要每月用标准缓冲液校准一次,否则pH值会出现0.5以上的偏差
2.2 硬件组装要点
- 传感器固定:用尼龙扎带将SEN0244固定在虾缸侧壁,探头需完全浸入水面下10cm
- 电源处理:开发板建议外接5V/2A电源,避免使用电池供电(频繁充电影响稳定性)
- 防水关键步骤:
- 所有接口处缠绕3层防水胶带
- 外壳出线口灌注704硅橡胶
- 完成组装后静置24小时再通电测试
3. 软件配置全流程
3.1 开发环境搭建
推荐使用PlatformIO+VSCode组合,比Arduino IDE更适合物联网开发:
bash复制# 安装PlatformIO核心
python3 -c "$(curl -fsSL https://raw.githubusercontent.com/platformio/platformio/master/scripts/get-platformio.py)"
# 创建项目模板
pio project init --board esp32-c3-devkitm-1
3.2 关键代码解析
核心逻辑集中在两个文件:
sensor_reader.cpp- 处理传感器数据采集
cpp复制void readWaterParams() {
float phValue = phSensor.readPH();
float temp = tempSensor.readTemperature();
// 数据平滑处理
static float phAvg[5] = {0};
static int idx = 0;
phAvg[idx++] = phValue;
if(idx >=5) idx = 0;
float stablePH = median(phAvg); // 取中值滤波
}
wechat_notifier.cpp- 微信消息推送
cpp复制void sendWechatAlert(String msg) {
WiFiClientSecure client;
client.setInsecure(); // 跳过证书验证
String url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + token;
String payload = "{\"touser\":\"" + userId + "\",\"template_id\":\"" + templateId + "\",\"data\":{\"message\":{\"value\":\"" + msg + "\"}}}";
client.connect("api.weixin.qq.com", 443);
client.println("POST " + url + " HTTP/1.1");
client.println("Content-Type: application/json");
client.println("Content-Length: " + String(payload.length()));
client.println();
client.println(payload);
}
4. 微信端配置详解
4.1 公众号申请避坑指南
- 选择"服务号"类型(订阅号无法使用模板消息API)
- 企业认证时准备:
- 营业执照复印件加盖公章
- 法人身份证正反面照片
- 对公账户验证(腾讯会打随机金额验证)
4.2 消息模板配置
推荐使用这个标准化模板:
json复制{
"template_id": "AT0123",
"title": "虾缸水质警报",
"content": [
{"key": "time", "value": "{{datetime.DATA}}"},
{"key": "ph", "value": "{{phValue.DATA}}"},
{"key": "temp", "value": "{{temperature.DATA}}℃"},
{"key": "message", "value": "{{alertMsg.DATA}}"}
]
}
5. 运维与问题排查
5.1 常见故障处理表
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 微信收不到报警 | access_token过期 | 实现token自动刷新机制 |
| pH值持续偏高 | 传感器探头污染 | 用3%盐酸溶液浸泡探头30分钟 |
| 设备频繁离线 | Wi-Fi信号弱 | 加装ESP32专用外置天线 |
| 数据上报延迟 | NTP服务器未同步 | 配置阿里云NTP服务器 |
5.2 我的三个实用技巧
- 在虾缸旁放一个小风扇,使水面产生波纹,能显著提升溶解氧测量准确度
- 用旧手机改装成监控摄像头,通过Tasker实现异常时自动录像
- 在微信模板消息里添加"一键喂食"按钮,通过IFTTT触发自动投食器
这套系统已经稳定运行两个月,最让我惊喜的是通过历史数据发现了pH值昼夜波动规律,现在能预测性调节水质。下次准备加入TDS监测模块,到时候再和大家分享升级方案。
