1. 课程导入与项目全景
在正式动手接线之前,先把整个项目“看全”非常重要。很多初学者拿到 ESP32 开发板后,第一反应是照着教程点亮 LED、读一个传感器,但一旦要把它做成一个能长期运行、能远程控制、能自动决策的灌溉设备,就会发现问题远不止“写几行代码”那么简单:土壤湿度怎么测才可靠?水泵由谁驱动?断网了还能不能浇水?水箱没水时如何避免干烧?这些都属于系统层面的设计问题。
本课程要交付的,是一台ESP32 无线灌溉控制器:它周期性地采集土壤湿度,根据设定的阈值判断是否需要浇水,通过继电器驱动小型水泵或电磁阀执行灌溉,同时把状态上报到手机或本地显示屏,并支持手动远程开关。整个项目贯穿 30 个章节,最终形成一套可通电、可联网、可自动运行、可复盘的完整装置。
一、功能定义:这台控制器到底要做什么
把需求说清楚,是工程的第一步。本项目的核心功能可以归纳为四类。第一类是感知:使用电容式土壤湿度传感器采集盆土含水量,避免电阻式探头长期通电导致的电解腐蚀。第二类是决策:在 ESP32 内部把传感器原始值映射为湿度百分比,与“启动阈值”和“停止阈值”比较,形成带迟滞的开关判断,防止湿度在临界点附近反复启停水泵。第三类是执行:通过 GPIO 控制继电器模块,继电器再控制水泵电源,实现强弱电隔离。第四类是交互与联网:通过 Wi-Fi 接入局域网,提供网页或 MQTT 状态上报,并保留一个物理按键用于手动浇水。
这里要特别强调“迟滞”这个设计。假设只用一个阈值 40%,湿度降到 39% 就开泵,浇到 41% 就停泵,那么土壤水分扩散稍慢,系统就会在 40% 附近频繁开关,继电器“哒哒”作响,寿命骤减。合理做法是设置启动阈值 35%、停止阈值 50%,只有低于 35% 才启动,高于 50% 才停止,中间 15% 是死区。这个细节会在后续章节展开,但它体现了本项目不是“能跑就行”,而是按真实设备的标准来设计。
二、系统组成:五个部分各司其职
从硬件角度看,整套控制器由五部分组成,它们之间的信号与能量流向可以用下图概括。图中左侧是供电与执行回路,右侧是感知与控制回路,中间由 ESP32 作为决策核心,把“测到什么”和“该做什么”连接起来。
理解这张图的关键,是分清“信号流”和“能量流”。传感器到 ESP32 是模拟电压信号,ESP32 到继电器是数字电平信号,这两段都是低压弱电;而继电器触点到水泵是 220V 强电,二者必须电气隔离。实际接线时,继电器模块的 VCC、GND、IN 接 ESP32,COM 和 NO 串在水泵火线中,绝不能把 220V 引入开发板。这是本项目第一条安全红线。
三、学习路径:30 章如何层层递进
课程按“先通后精、先单点后系统”的顺序组织。前段解决“能不能动”:认识开发板引脚、搭建 Arduino 开发环境、点亮第一个程序、读取 ADC 原始值。中段解决“测得准不准、控得稳不稳”:标定土壤湿度、实现迟滞判断、驱动继电器、加入按键与状态指示。后段解决“好不好用、稳不稳定”:接入 Wi-Fi、搭建网页界面、上报数据、处理断网与水箱缺水等异常,最后做整机联调与外壳装配。
这条路径有一个隐含原则:每个章节都产出一个可验证的小结果。例如学完 ADC 采样,你应该能在串口看到湿度原始值随浇水明显变化;学完继电器驱动,你应该能听到继电器吸合声并看到水泵启动。把这些小结果串起来,最终装置自然成型,而不是等到最后才第一次通电。
四、最终交付成果与验收标准
课程结束时,你手上应有一台完整装置,并满足以下可检查的验收条件:上电后 10 秒内完成 Wi-Fi 连接并在网页显示当前湿度;当湿度低于启动阈值时自动开泵,达到停止阈值后自动关泵;手动按键与远程开关均能生效;断网时仍能按本地阈值自动运行;连续运行 24 小时不出现误触发或死机。建议在整机调试阶段用一张简单的记录表跟踪这些指标,例如记录每次启停的时间、当时湿度读数和触发来源,便于发现阈值设置是否合理。
最后提醒一点:本课程中的传感器读数、阈值和运行数据均为教学示例,实际数值会因土壤类型、探头插入深度、供电电压而明显不同。你需要在自己的盆土中重新标定,而不是照搬示例数字。理解了系统组成与信号流向,接下来的每一章就都有了明确的落点。