1. 项目概述:当农业遇上物联网
去年帮农科院做技术咨询时,发现很多大棚还在用老式定时器控制灌溉。有次遇到控制器故障,导致整片番茄苗旱死,农户蹲在地头抹眼泪的场景让我印象深刻。这个毕设项目就是要用STM32+WiFi解决这类痛点——通过手机随时查看土壤数据,远程控制灌溉,还能自动生成浇水记录。
整套系统包含三大部分:STM32主控板(我推荐用F103C8T6最小系统)、传感器阵列(土壤湿度+温度+光照)、以及自行设计的浇灌执行机构。数据通过ESP8266上传到云端,我用腾讯云IoT平台做了个简易可视化界面,毕业答辩时教授们直接用手机扫码就能看到实时数据曲线。
2. 硬件设计关键点
2.1 传感器选型血泪史
最初贪便宜选了某宝8块钱的电容式湿度传感器,实测发现三天后就出现5%以上的漂移。后来换成进口的SEN0193(虽然贵了4倍),但配合我写的自动校准算法,稳定性提升明显。这里有个细节:一定要在PCB上给传感器加防潮涂层(我用的是三防漆),否则喷灌时的水雾会导致引脚腐蚀。
温度检测试过DS18B20和DHT11,最终选择SHT30的原因很简单——它的±2%RH湿度精度对蒸腾量计算很重要。光照传感器选了BH1750,注意要避免阳光直射导致的光饱和现象,我的解决方案是加了个乳白色遮光罩。
2.2 电源设计的坑
第一版用7805线性稳压,结果电机启动时电压骤降导致单片机重启。后来改用TPS5430开关电源模块,成本只多了2块钱但再没出过问题。特别提醒:继电器的续流二极管一定要选快恢复型(如FR107),普通1N4007的反应速度不够可能烧管子。
3. 软件架构解析
3.1 多任务调度方案
在FreeRTOS上跑了三个核心任务:
- 传感器采集(优先级最高,500ms周期)
- 网络通信(事件触发)
- 灌溉控制(带看门狗监测)
最关键的湿度采集任务用了滑动滤波算法:humidity = 0.6*last_val + 0.3*current_val + 0.1*prev_val,比简单的移动平均更能抑制突变干扰。网络通信采用MQTT协议,我封装了个带断线重连的客户端库,实测在信号差的棚区也能保持连接。
3.2 云端交互设计
腾讯云IoT平台的消息模板这样定义:
json复制{
"deviceName": "${deviceName}",
"soil_humidity": 45.2,
"temp": 26.8,
"light": 1200,
"pump_status": 0
}
小程序端用ECharts绘制实时曲线时,要注意设置合理的Y轴范围——土壤湿度建议20%-80%,超出范围要用醒目颜色标注。我在后端加了简单的预测算法:当连续2小时湿度下降速率超过5%/h就触发预警。
4. 灌溉控制逻辑
4.1 智能模式算法
核心算法是这样的伪代码:
c复制if(光照>10000lux && 温度>30℃){
灌溉阈值 = 基准值 - 5%; // 高温强光时提前灌溉
}else if(夜间模式){
阈值 = 基准值 + 3%; // 夜间适当减少灌溉
}
if(实际湿度 < 阈值 && 累计缺水时间>30min){
启动水泵(持续时间=缺水量*0.8);
}
这里有个经验值:砂质土系数用0.8,黏土要改成0.5,否则容易过湿。我在程序中预留了土壤类型参数接口。
4.2 手动模式细节
手机端长按浇水按钮时,采用脉冲式控制:工作2秒停1秒,避免水流冲击伤根。这个功能收到农户最多好评,他们反映比持续浇水更能渗透到深层土壤。
5. 常见问题解决方案
-
ESP8266频繁断线
解决方法:在AT指令后加500ms延时,同时把WiFi功率调到最大(AT+RFPOWER=82) -
土壤传感器数值跳变
硬件上并联0.1μF电容,软件端我写了异常值剔除算法:连续3次采样差异>10%就丢弃 -
电机干扰ADC读数
对策:在继电器线圈两端并TVS二极管,ADC采样前关闭电机电源(用MOS管做开关) -
腾讯云平台证书过期
这个坑我踩过——必须用1.2版本TLS,在ESP8266固件中要启用SSL_SIZE=4.3M
6. 论文写作技巧
答辩时教授特别表扬了我的论文图表,分享两个小技巧:
- 用Visio画系统框图时,传感器图标统一用蓝色外框,执行器用红色,控制部分用绿色
- 曲线图要用Origin处理,记得添加误差棒(我取了10次测量的标准差)
实验数据部分要包含不同天气条件下的对比:晴天/阴天的耗水量差异能达到40%。我的建议是至少收集两周的连续运行数据,最好包含一次人工模拟故障(比如拔掉传感器测试系统告警功能)
7. 成本控制经验
整机物料成本压到200元以内的秘诀:
- STM32用拆机件(15元)
- 水泵选12V隔膜泵(22元)比电磁阀更耐用
- 自己腐蚀PCB(双面板材料费不到5元)
- 3D打印外壳用PLA+木粉(质感像原木但成本低)
不过传感器建议不要省,劣质湿度传感器的校准成本反而更高。我的BOM清单里专门标注了哪些部件可以选便宜方案,哪些必须用正品。