1. 课程导入与项目全景

在正式动手接线之前,先把整个项目“看全”非常重要。很多初学者拿到 ESP32 开发板后,第一反应是照着教程点亮 LED、读一个传感器,但一旦要把它做成一个能长期运行、能远程控制、能自动决策的灌溉设备,就会发现问题远不止“写几行代码”那么简单:土壤湿度怎么测才可靠?水泵由谁驱动?断网了还能不能浇水?水箱没水时如何避免干烧?这些都属于系统层面的设计问题。

本课程要交付的,是一台ESP32 无线灌溉控制器:它周期性地采集土壤湿度,根据设定的阈值判断是否需要浇水,通过继电器驱动小型水泵或电磁阀执行灌溉,同时把状态上报到手机或本地显示屏,并支持手动远程开关。整个项目贯穿 30 个章节,最终形成一套可通电、可联网、可自动运行、可复盘的完整装置。

一、功能定义:这台控制器到底要做什么

把需求说清楚,是工程的第一步。本项目的核心功能可以归纳为四类。第一类是感知:使用电容式土壤湿度传感器采集盆土含水量,避免电阻式探头长期通电导致的电解腐蚀。第二类是决策:在 ESP32 内部把传感器原始值映射为湿度百分比,与“启动阈值”和“停止阈值”比较,形成带迟滞的开关判断,防止湿度在临界点附近反复启停水泵。第三类是执行:通过 GPIO 控制继电器模块,继电器再控制水泵电源,实现强弱电隔离。第四类是交互与联网:通过 Wi-Fi 接入局域网,提供网页或 MQTT 状态上报,并保留一个物理按键用于手动浇水。

这里要特别强调“迟滞”这个设计。假设只用一个阈值 40%,湿度降到 39% 就开泵,浇到 41% 就停泵,那么土壤水分扩散稍慢,系统就会在 40% 附近频繁开关,继电器“哒哒”作响,寿命骤减。合理做法是设置启动阈值 35%、停止阈值 50%,只有低于 35% 才启动,高于 50% 才停止,中间 15% 是死区。这个细节会在后续章节展开,但它体现了本项目不是“能跑就行”,而是按真实设备的标准来设计。

二、系统组成:五个部分各司其职

从硬件角度看,整套控制器由五部分组成,它们之间的信号与能量流向可以用下图概括。图中左侧是供电与执行回路,右侧是感知与控制回路,中间由 ESP32 作为决策核心,把“测到什么”和“该做什么”连接起来。

ESP32 无线灌溉控制器系统组成与信号流向 感知层 电容式土壤湿度传感器 输出 0~3.3V 模拟电压 接 GPIO34(ADC1_CH6) 控制核心 ESP32 开发板 ADC 采样 · 阈值判断 · 迟滞 Wi-Fi 通信 · 定时任务 交互与联网 手机网页 / MQTT 客户端 状态显示 · 远程手动开关 本地按键手动浇水 执行层 继电器模块(光耦隔离) GPIO26 输出高低电平 触点控制水泵 220V 回路 灌溉负载 小型水泵 / 电磁阀 由继电器触点通断 独立 220V 供电 供电层 5V/2A 适配器 经 AMS1117 转 3.3V 为 ESP32 与传感器供电 模拟信号 Wi-Fi 控制信号 通断 3.3V 5V 实线为信号/控制流,虚线为供电;强电回路与低压控制通过继电器隔离

理解这张图的关键,是分清“信号流”和“能量流”。传感器到 ESP32 是模拟电压信号,ESP32 到继电器是数字电平信号,这两段都是低压弱电;而继电器触点到水泵是 220V 强电,二者必须电气隔离。实际接线时,继电器模块的 VCC、GND、IN 接 ESP32,COM 和 NO 串在水泵火线中,绝不能把 220V 引入开发板。这是本项目第一条安全红线。

三、学习路径:30 章如何层层递进

课程按“先通后精、先单点后系统”的顺序组织。前段解决“能不能动”:认识开发板引脚、搭建 Arduino 开发环境、点亮第一个程序、读取 ADC 原始值。中段解决“测得准不准、控得稳不稳”:标定土壤湿度、实现迟滞判断、驱动继电器、加入按键与状态指示。后段解决“好不好用、稳不稳定”:接入 Wi-Fi、搭建网页界面、上报数据、处理断网与水箱缺水等异常,最后做整机联调与外壳装配。

这条路径有一个隐含原则:每个章节都产出一个可验证的小结果。例如学完 ADC 采样,你应该能在串口看到湿度原始值随浇水明显变化;学完继电器驱动,你应该能听到继电器吸合声并看到水泵启动。把这些小结果串起来,最终装置自然成型,而不是等到最后才第一次通电。

四、最终交付成果与验收标准

课程结束时,你手上应有一台完整装置,并满足以下可检查的验收条件:上电后 10 秒内完成 Wi-Fi 连接并在网页显示当前湿度;当湿度低于启动阈值时自动开泵,达到停止阈值后自动关泵;手动按键与远程开关均能生效;断网时仍能按本地阈值自动运行;连续运行 24 小时不出现误触发或死机。建议在整机调试阶段用一张简单的记录表跟踪这些指标,例如记录每次启停的时间、当时湿度读数和触发来源,便于发现阈值设置是否合理。

建议现在就准备一个项目笔记本,按“日期—改动内容—现象—结论”四列记录每次实验。灌溉项目涉及湿度、时间、电源多个变量,靠记忆很容易混淆因果关系,而这份记录在后续排障时会非常有用。

最后提醒一点:本课程中的传感器读数、阈值和运行数据均为教学示例,实际数值会因土壤类型、探头插入深度、供电电压而明显不同。你需要在自己的盆土中重新标定,而不是照搬示例数字。理解了系统组成与信号流向,接下来的每一章就都有了明确的落点。