自动灌溉系统AI 什么时候浇水比老农还准灌溉是农业最高频的操作也是浪费最严重的环节。老农的经验是「看着土干了就浇」一浇就是大水漫灌蒸发掉的比渗进土里的多。这篇从简单的定时/阈值出发做到结合天气预报、土壤趋势和作物生长周期的智能决策。灌溉的三个层次级别策略优点缺点L1 规则控制定时 / 阈值简单可靠不管明天是否下雨照浇不误L2 环境联动阈值 天气预报 渗透模型省水 30%需要外部数据L3 AI 决策模型预测最优灌溉方案理论上最优需要大量历史数据90% 的场景做到 L2 已经碾压人工经验。我们先搞 L1 和 L2。L1规则控制——定时 阈值最基础的模式实现也最简单。定时灌溉每天早上 6 点、傍晚 18 点各浇一次每次 10 分钟。// Spring Boot 定时任务ComponentpublicclassScheduledIrrigation{AutowiredprivateDeviceCmdServicecmdService;Scheduled(cron0 0 6,18 * * ?)// 每天 6:00 和 18:00publicvoidtimedIrrigate(){cmdService.sendCmd(pump_01,CmdRequest.builder().cmd(irrigate).params(Map.of(duration,600,valve,1)).build());}}阈值灌溉土壤湿度低于 25% 且持续超过 30 分钟自动开阀高于 45% 自动关阀。这个逻辑方在告警引擎里扩展——告警不仅发通知还能触自动作publicvoidevaluate(SensorDatadata){// ... 前面告警评估 ...// 灌溉触发if(soil_moisture.equals(rule.getField())triggered){evaluateIrrigation(data);}}privatevoidevaluateIrrigation(SensorDatadata){// 获取该设备关联的灌溉执行器StringpumpIddeviceLinkService.getActuator(data.getDev(),pump);if(pumpIdnull)return;BooleanpumpStatusdeviceStateCache.get(pumpId:irrigating);if(data.getSoilMoisture()25.0pumpStatus!Boolean.TRUE){cmdService.sendCmd(pumpId,Map.of(cmd,irrigate,duration,600));deviceStateCache.put(pumpId:irrigating,true);}elseif(data.getSoilMoisture()45.0pumpStatusBoolean.TRUE){cmdService.sendCmd(pumpId,Map.of(cmd,off));deviceStateCache.put(pumpId:irrigating,false);}}ESP32 端的执行器代码加个 PWM 调速控制电磁阀开度而不是一味全开// 电磁阀控制——PWM 渐进式开关减少水锤效应#defineVALVE_PIN12voidstartIrrigation(intdurationSec,intflowPercent){// 1. 先低压预开 3 秒防冲击ledcWrite(0,map(30,0,100,0,255));delay(3000);// 2. 升到目标开度ledcWrite(0,map(flowPercent,0,100,0,255));// 3. 持续 durationSec 后自动关vTaskDelay(pdMS_TO_TICKS(durationSec*1000));ledcWrite(0,0);Serial.println(灌溉完成);}L2环境联动——看天浇水昨天浇过水今天下暴雨你这 10 分钟的水就算白浇了还可能导致涝根。接一个天气预报 API浇前判断ServicepublicclassSmartIrrigationService{AutowiredprivateWeatherServiceweatherService;AutowiredprivateTDengineServicetdengine;publicbooleanshouldIrrigateNow(StringdeviceId){// 1. 当前土壤湿度doublesoilMoisturetdengine.getLatest(deviceId,soil_moisture);if(soilMoisture40)returnfalse;// 够湿不需要// 2. 未来 6 小时天气预报WeatherForecastforecastweatherService.getForecast(deviceId,6);if(forecast.getRainProbability()60forecast.getRainMm()2){log.info(未来 6h 降雨概率 {}%预计雨量 {}mm跳过灌溉,forecast.getRainProbability(),forecast.getRainMm());returnfalse;}// 3. 今天已浇水量doubletodayIrrigationirrigationLogService.getTodayTotal(deviceId);doublemaxDailygetCropDailyWaterLimit(deviceId);if(todayIrrigationmaxDaily){log.info(今日已浇 {}L达上限 {}L跳过,todayIrrigation,maxDaily);returnfalse;}// 4. 土壤渗透率——刚浇完不久土还没渗下去LocalDateTimelastIrrigationirrigationLogService.getLastTime(deviceId);if(lastIrrigation!nullChronoUnit.MINUTES.between(lastIrrigation,LocalDateTime.now())60){returnfalse;}returntrue;}}天气预报数据源和风天气 API免费版每天 1000 次调用对几十个大棚绰绰有余。精度在县城级别大棚场景够用——反正你需要的只是「未来 6 小时会不会下雨」这个布尔值。ServicepublicclassWeatherService{privatefinalStringAPI_KEY你的和风天气Key;privatefinalStringAPI_URLhttps://devapi.qweather.com/v7/weather;publicWeatherForecastgetForecast(StringdeviceId,inthours){// 根据设备经纬度查询DevicedevicedeviceService.getByDeviceId(deviceId);StringurlString.format(%s/%shourly?location%s,%skey%s,API_URL,hours6?24h:3h,device.getLng(),device.getLat(),API_KEY);// 解析返回取未来 hours 小时内的降水概率和降水量// ...}}L3AI 决策简介做到 L2 已经省水 30%。L3 用机器学习做灌溉模型输入特征过去 7 天土壤湿度趋势、温度趋势未来 48 小时天气预报作物生长阶段苗期/生长期/结果期需水量不同土壤类型沙土渗水快、黏土保水强输出灌溉时长和最佳时间点。这个模型需要至少一个生长季的数据才能训练。建议先用 L2 跑一个季度攒够数据再上 LSTM/Transformer预测未来 24 小时的土壤湿度变化曲线# 输入: (7天 * 288点/天 2016个历史数据点 天气预报)# 输出: 未来 24 小时的土壤湿度预测曲线modelSequential([LSTM(64,return_sequencesTrue,input_shape(2016,features)),Dropout(0.2),LSTM(32),Dense(288),# 24h * 12points/h])但在那之前L2 已经够用了。别在只有两个大棚的时候就上 Transformer——等你有了 200 个大棚的数据再说。执行器安全——如果阀门坏了怎么办远程控制最怕的是开了阀门结果忘了关或关了但没关紧水一直流淹了棚。三保险机制硬件上限开关ESP32 控制继电器时代码里设最大持续时长比如 30 分钟超时强制切断流量传感器在主管道串一个霍尔流量计如果检测到流量异常开阀了但没水流/关阀了还有水流立刻告警人工急停小程序里一个大大的红色「紧急停止」按钮点一下关所有阀门// ESP32 超时保护#defineMAX_IRRIGATION_SEC1800// 30 分钟硬上限unsignedlongvalveOpenSince0;voidloop(){if(valveStatusOPENvalveOpenSince0){if((millis()-valveOpenSince)/1000MAX_IRRIGATION_SEC){Serial.println(⚠️ 灌溉超时强制关闭);closeValve();}}}成本与效果一个电磁阀12V DC 常闭型30 元一个霍尔流量计YF-S2018 元继电器模块2 路 5V6 元一户菜农一个棚灌溉水费一年大约 2000 元。上这套系统硬件投入 300 元省水 30%一年回本还有余。下一篇《大棚环境控制温湿度、光照、CO₂ 的全自动调节》——通风扇、遮阳网、补光灯、CO₂ 气肥四套执行器的联动策略和 PID 控制。