2. 灌溉需求分析与控制器规格制定

在动手画原理图、写第一行代码之前,必须先回答三个问题:这块控制器要浇什么、什么时候浇、以及它离网关有多远。这三个问题分别对应灌溉场景调研、土壤湿度阈值逻辑和无线通信距离与功耗指标。规格定得含糊,后面选型就会反复返工——电池容量不够、天线增益不足、阈值逻辑在雨天误触发,都是需求阶段没想清楚留下的坑。

一、典型灌溉场景调研:先摸清"被控对象"

灌溉控制器的需求不是凭空设定的,而是从具体场景里"量"出来的。课程以一个典型的家庭菜园/小型温室为基准场景,同时兼顾阳台盆栽与庭院草坪两类变体。调研要落到可量化的参数上,而不是停留在"需要浇水"这种描述。

以基准场景为例:一块约 6 m² 的露台菜园,种植番茄、生菜与辣椒,采用滴灌带供水,共 2 路支管(一路番茄、一路叶菜),每路配一个 12 V 直流电磁阀。土壤为市售营养土,保水性中等。供水端为 20 L 储水桶加小型自吸泵,泵与阀均由控制器通过继电器驱动。这类场景的典型特征是:面积小、管路短、单次灌水量少(每路 2~5 分钟即可湿透根区),但对"浇多了烂根、浇少了萎蔫"比较敏感,因此对湿度阈值的精度要求高于对流量控制的要求。

调研时需要记录的关键量包括:作物根区深度(决定传感器埋深,番茄约 20 cm、叶菜约 10 cm)、土壤类型(决定湿度读数基准)、单次灌溉时长与间隔、电磁阀工作电压与电流(12 V / 约 400 mA)、以及控制器安装位置到路由器的距离与遮挡情况。把这些量整理成一张场景参数表,后续所有规格都从这张表推导。

调研项基准场景取值(示例假设)对规格的影响
灌溉支路数2 路继电器通道 ≥ 2,GPIO 预留
电磁阀电气参数12 V DC,约 400 mA/路需独立 12 V 电源与续流保护
根区深度10~20 cm传感器探头长度与埋设位置
单次灌溉时长2~5 min定时器精度、防溢流超时
控制器至路由器约 15 m,隔一堵砖墙Wi-Fi 链路预算与天线选型
供电条件露台无固定插座电池容量与低功耗策略

二、土壤湿度阈值逻辑:把"该不该浇"变成可执行判断

土壤湿度传感器(电容式)输出的是随含水量变化的模拟量,经 ESP32 的 ADC 采集后得到一个原始值。这里必须先明确参照约定:本课程统一采用"湿度百分比"作为判断量,0% 表示干燥、100% 表示饱和,由原始 ADC 值经标定映射得到。不同传感器的原始值方向可能相反,标定环节必须消除这一歧义,否则阈值逻辑会整体反转。

标定方法很直接:把探头插入完全干燥的同一批营养土,记录 ADC 原始值 raw_dry;再插入浇透后静置排水的土中,记录 raw_wet。之后按线性映射换算湿度百分比:

humidity(%) = (raw_dry - raw) / (raw_dry - raw_wet) * 100
// 示例假设:raw_dry = 3200,raw_wet = 1200
// 测得 raw = 2600 时,humidity ≈ (3200-2600)/(3200-1200)*100 = 30%

阈值逻辑不能只用一个点,否则会在阈值附近反复启停("抖动灌溉")。工程上采用双阈值 + 回差:低于下限 TH_LOW 启动灌溉,高于上限 TH_HIGH 停止,两者之间为死区。以番茄根区为例,示例设定 TH_LOW = 30%、TH_HIGH = 45%,回差 15 个百分点。再叠加三条约束:单次灌溉最长 5 分钟(防传感器故障导致持续放水)、两次灌溉最小间隔 30 分钟(给水分下渗留时间)、以及"雨天抑制"——若检测到降雨或湿度已高于上限,则跳过本次灌溉。

判断顺序应当是:先读湿度并做有效性检查(原始值是否在合理范围、是否连续多次异常),再判断是否处于最小间隔内,最后才比较阈值。把有效性检查放在最前面,可以避免探头脱落(读数接近 0 或满量程)时误判为"极干"而疯狂浇水。

土壤湿度双阈值回差判断(示例:TH_LOW=30%,TH_HIGH=45%) 0% 100% 干燥区 < 30% 回差死区 30%~45% 湿润区 > 45% TH_LOW TH_HIGH 灌溉中 阀开启,最长 5 min 待机 阀关闭,间隔 ≥ 30 min 湿度 ≥ 45% 或达 5 min 湿度 < 30% 且间隔已满 前置检查:读数有效性 → 最小间隔 → 雨天抑制,任一不通过则不进入阈值比较

三、无线通信距离与功耗指标确定

基准场景中控制器到路由器约 15 m、隔一堵砖墙。2.4 GHz Wi-Fi 穿一堵砖墙的附加损耗经验值约 8~12 dB,加上自由空间损耗(15 m 处约 62 dB),链路总损耗约 70~75 dB。ESP32 的 Wi-Fi 发射功率典型 19.5 dBm,接收灵敏度约 -90 dBm(802.11b 1 Mbps),链路预算约 109 dB,余量充足。因此规格定为:在 15 m 隔一堵墙条件下,RSSI 不低于 -75 dBm,丢包重连时间小于 10 s。若实测 RSSI 低于 -80 dBm,则需改用外置天线或调整安装位置,而不是盲目加大发射功率。

功耗指标由供电条件倒推。露台无固定插座,采用 3.7 V 锂电 + 升压/稳压方案。若控制器每 10 分钟唤醒一次、采集并上报耗时约 3 s(Wi-Fi 连接峰值电流约 120 mA),其余时间深度睡眠(约 10 µA),则平均电流约为:

I_avg ≈ (120 mA × 3 s + 0.01 mA × 597 s) / 600 s
      ≈ (360 + 5.97) / 600 ≈ 0.61 mA
// 示例假设:2000 mAh 电池,理论续航 ≈ 2000 / 0.61 ≈ 3279 h ≈ 136 天

据此把规格定为:待机平均电流 ≤ 1 mA,单次上报窗口 ≤ 5 s,2000 mAh 电池续航目标 ≥ 90 天。注意这是基于示例假设的估算,实际续航受 Wi-Fi 重连次数、温度、电池自放电影响,需在样机上实测校正。若场景改为阳台盆栽(距离更近、可接 USB 供电),则可放宽为常供电、实时上报,功耗指标让位于响应速度。

规格制定完成后,建议把"场景参数表 + 阈值参数 + 通信与功耗指标"合并成一页《控制器规格说明》,作为后续硬件选型、引脚分配和固件参数配置的唯一依据。任何后续改动都应回到这张表上更新,避免代码里的阈值与文档脱节。

把三部分串起来看,本节输出的其实是一组可执行的数字:2 路阀、12 V/400 mA 驱动、湿度 30%/45% 双阈值、5 分钟上限、30 分钟间隔、RSSI ≥ -75 dBm、平均电流 ≤ 1 mA。这些数字将在后续的电源设计、继电器选型、传感器标定和低功耗固件中被反复引用,也是判断整机是否达标的验收基准。