一、系统总体设计
1. 系统架构
[传感器层] → [STM32主控] → [执行机构]
↑ ↓
[电源模块] [Wi-Fi模块] ↔ [云端服务器] ↔ [手机APP]
2. 核心功能
-
自动灌溉:根据土壤湿度、水箱水位动态调节灌溉。
-
数据监控:实时显示土壤湿度、水位、流量、电池状态。
-
远程控制:通过APP手动开关水泵、设置灌溉阈值。
-
异常报警:缺水提醒、传感器故障报警。
二、硬件设计
1. 主控模块
-
芯片型号:STM32F103C8T6(性价比高,资源丰富)
-
外设需求:
-
ADC采集(土壤湿度、液位传感器)
-
定时器(流量传感器脉冲计数)
-
GPIO(控制继电器、LED状态灯)
-
UART(Wi-Fi模块通信)
-
2. 传感器选型
传感器 | 型号 | 接口 | 功能 |
---|---|---|---|
土壤水吸力传感器 | TEROS 10 (METER Group) | 模拟量(0-3V) | 检测土壤含水量 |
液位传感器 | HW-101(电容式) | 模拟量/数字 | 监测水箱水位 |
流量传感器 | YF-S201(霍尔式) | 脉冲输出 | 统计灌溉水量(1L=450脉冲) |
3. 执行机构
-
水泵:12V直流微型水泵(通过继电器控制)
-
电磁阀:可选(用于多管路切换)
4. 通信模块
-
Wi-Fi模块:ESP8266-01S(AT指令,连接家庭路由器)
-
协议:MQTT(低功耗,实时性强)
5. 电源设计
-
输入:220V AC → 12V DC适配器(水泵供电)
-
降压模块:LM2596(12V→5V/3.3V,供主控和传感器)
三、软件设计
1. STM32固件开发(Keil MDK)
// 主程序逻辑
void main() {
init_ADC(); // 初始化ADC(土壤湿度、液位)
init_TIMER(); // 初始化定时器(流量脉冲计数)
init_UART(); // 初始化串口(ESP8266通信)
init_GPIO(); // 初始化继电器、LED
while(1) {
read_sensors(); // 读取传感器数据
if (soil_humidity < threshold) start_pump();
send_data_to_cloud(); // 通过MQTT上传数据
check_app_command(); // 解析APP指令
}
}
2. 通信协议设计
四、关键算法
1. 自适应灌溉策略
-
MQTT主题:
-
home/garden/status(传感器数据发布) home/garden/control(APP指令订阅)
-
-
数据格式(JSON):
-
{ "soil_humidity": 45.2, "water_level": 80, "flow_rate": 12.5, "pump_status": "ON" }
-
3. 手机APP开发(Flutter框架)
-
功能界面:
-
主页:实时数据仪表盘(湿度、水位、流量曲线)
-
控制页:手动开关水泵、设置灌溉阈值
-
报警页:推送缺水、设备离线通知
-
-
开发工具:
-
前端:Flutter + Dart
-
后端:阿里云IoT平台(托管MQTT Broker)
-
# 伪代码:根据土壤湿度动态调整灌溉
def adaptive_irrigation(soil_humidity, water_level):
if soil_humidity < 30% and water_level > 20%:
pump_time = (40% - soil_humidity) * 2 # 线性调节
start_pump(pump_time)
elif water_level < 20%:
send_alert("Low water level!")
2. 数据滤波处理
-
土壤湿度:滑动平均滤波(消除瞬态噪声)
-
流量统计:脉冲计数 + 时间窗口校准
五、系统调试与优化
-
传感器校准:
-
土壤传感器:干/湿状态标定(0% = 完全干燥,100% = 饱和)
-
液位传感器:空/满水箱电压标定
-
-
功耗优化:
-
STM32休眠模式(无灌溉时进入低功耗)
-
ESP8266定时唤醒(每5分钟上传数据)
-
-
安全性:
-
APP端HTTPS加密通信
-
水泵最大运行时间限制(防过载)
-
六、材料清单(BOM)
组件 | 型号/参数 | 数量 | 单价(元) |
---|---|---|---|
STM32F103C8T6 | 核心板 | 1 | 25 |
ESP8266-01S | Wi-Fi模块 | 1 | 12 |
TEROS 10 | 土壤湿度传感器 | 1 | 180 |
YF-S201 | 霍尔流量传感器 | 1 | 35 |
12V水泵 | DC微型潜水泵 | 1 | 30 |
5V继电器模块 | SRD-05VDC-SL-C | 1 | 5 |
水箱 | 5L塑料容器 | 1 | 15 |
总计 | ≈300元 |
七、预期效果
-
节水率:比传统定时灌溉节省30%水量
-
控制精度:土壤湿度误差<±5%
-
响应速度:APP指令延迟<1秒
此方案兼顾成本与功能,适合家庭用户扩展和维护。