ESP32 智能农业监测完整指南:从土壤湿度读数到云端报警的 4 个阶段
2026/9/12 3:05:40 网站建设 项目流程

ESP32 智能农业监测完整指南:从土壤湿度读数到云端报警的 4 个阶段

【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32

凌晨两点,大棚里的辣椒叶卷了——土壤早干了,而你还在按"隔三天浇一次"的老经验行事。这套监测装置就是为这种时刻准备的:一块十几元的 ESP32 开发板加一只土壤湿度探头,配合 Arduino-ESP32 核心库,把"地里现在多少水"变成串口上的一行数字,再变成手机上一条越限报警。全文按"先跑通、再优化"的思路推进,每一步都有可验证的中间结果。

一、动手前先问三个问题:需求、硬件、通信

选型不靠感觉,靠回答三句话:

问题你需要想清楚的事常见答案
测什么?单参数(土壤湿度)还是多参数(温湿度+EC)?决定要几个 ADC/数字口土壤湿度用 1 路 ADC 就够,ADC API
装在哪?桌面调试、棚顶隐蔽安装、还是田间立柱?决定板子尺寸与供电隐蔽安装选 XIAO ESP32S3(约 20×17.5mm),调试选 ESP32-C3 DevKitM-1
数据去哪?本地串口、手机直连、还是云平台?决定联网方式起步选 STA 模式接入家庭/农田 WiFi,无需公网服务器

一个实用的起点组合:ESP32-C3 DevKitM-1(约 18 元)+ FC-28 土壤湿度模块(约 8 元)+ 面包板。总成本不到 30 元,先验证整条链路,再谈扩展。

ESP32-C3 开发板的完整引脚布局如下图所示,标注了 ADC、I2C、SPI、UART 等复用通道,接传感器前对照它挑引脚最不容易踩线:

二、最快点亮传感器:接线 → 烧录 → 串口出数

最小闭环只证明一件事:探头碰土,数字就变。其他功能都先不要想。

  1. 环境:Arduino IDE 中打开"首选项 → 附加开发板管理器网址",填入 ESP32 支持包地址;再进开发板管理器搜索esp32安装。
  2. 接线:FC-28 的 VCC→3V3,GND→GND,AO(模拟输出)→ GPIO4。C3 的 ADC1 通道 4 对应 GPIO4,属于安全可选手册(ADC2 在 WiFi 工作时读数会抖动,C3 上影响较小,但习惯从 ADC1 开始总没错)。
  3. 烧录:参考 AnalogRead 示例,核心只有三行逻辑:
void setup() { Serial.begin(115200); analogReadResolution(12); // 12 位,0~4095 } void loop() { int v = analogRead(4); Serial.printf("土壤原始值 = %d 约 %d%%\n", v, map(v, 0, 4095, 100, 0)); delay(200); }
  1. 验证:串口监视器设为 115200。把探头插进湿土再拔出来,读数应在几秒内从低位跳到高位。看到数字随手的干湿变化而波动——第一个读数点亮了,链路成立。

ESP32 的引脚并不直接连外设,而是通过 GPIO 矩阵再经 IO_MUX 路由到物理焊盘。也就是说同一只 GPIO 可以同时挂 ADC、触摸、UART 等功能,这解释了为什么"一个脚能顶好几个用",也解释了为什么选脚要看图而不是凭记忆:

开发板管理器中安装 ESP32 支持包的样子,装完在"工具"菜单即可看到各开发板型号:

三、连上云:从串口读数到阈值报警

单点读数只能"看",真正有价值的是"看的时候不用在场"。

  1. 联网:C3 以 Station 模式连入路由器,WiFi.begin(ssid, password)之后轮询WiFi.status()。农田场景建议给设备固定 IP,省掉每次查 DHCP 分配的麻烦。
  2. 上传:把每 5 分钟一次的采集值打包成 JSON,用 HTTPClient 库 POST 到任意接收端——ThingSpeak 的免费通道最省事,自建的话一个几十行的 Flask 接口也够。
  3. 报警:阈值判断可以放云端(服务端收到 moisture < 30% 就推消息),也可以放设备端(越限才发报文,省流量)。新手建议设备端只发数据、云端做判断,逻辑改动不用重刷固件。
  4. 可视化:ThingSpeak 的 Channel 曲线直接就能看趋势;想自己控制页面,WebServer 库 可以 30 行代码搭一个本地监测页,浏览器打开 IP 就能看到实时值。

ESP32 作为 Station 连上现有路由器,就是这类"农田接家庭网"场景的最短路径:

四、跑稳再优化:续航翻倍与多节点组网

跑通之后别急着堆功能,先解决两个决定系统寿命的问题。

① 电池续航:C3 深度睡眠电流可压到 10μA 量级,策略是"睡 5 分钟 → 定时器唤醒 → 采一次数 → 立刻再睡"。代码层面只需两行,深睡 API 文档 和 DeepSleep 示例 都有现成实现。对比一直在线:常开 WiFi 平均约 80mA,"睡醒采传再睡"能把均值拉低一个数量级,同一块电池从一天扛到几周。

② 覆盖面积:田大于一块板的有效 WiFi 范围时,有两条路——

  • 每个节点各连各自的路由/4G 猫棒(成本高,但架构简单);
  • 一台 ESP32 以 AP 模式建热点,周边节点以 STA 接入,本地成网后由主机统一转发上云。

AP 模式组网示意如下,主机与多个子节点之间是纯局域网,不依赖外部信号:

③ 不拆机升级:节点装进大棚后,别指望每次改代码都拔板子。用 ArduinoOTA 库 把固件升级做成网页操作,浏览器输密码即可推送新版:

五、踩坑自查清单:按顺序查,10 分钟定位问题

症状先查什么再看什么
读数恒为 0 或 4095AO/AD 是否接反;探头是否插土换一只探头排除坏件
读数乱跳、噪声大3V3 是否稳定、探头是否半干半湿过渡态软件做 5 次采样取均值,比换硬件便宜
WiFi 一直连不上密码含特殊字符转义;2.4G 还是 5G 频段(ESP32 只认 2.4G)离路由器 2 米内先测通,再谈远端覆盖
上传成功但曲线断档设备时钟是否同步(NTP 未校时会导致时间轴错位)云平台通道是否已达免费额度上限
深睡后不唤醒ULP 代码是否烧到 0x0 地址用 ResetReason 打印上次复位原因,答案直接写在日志里

Q:FC-28 能长期插土里吗? A:不建议。裸露铜条会被土壤电化学腐蚀,一两个月后读数漂移。要么套绝缘套管只露电极尖,要么换 FDR 电容式探头。

Q:一个节点能带几只传感器? A:ADC 口 C3 上有 8 个(ADC1/ADC2 各 4),加 I2C/单总线数字传感器,实测 5~6 路参数毫无压力,瓶颈通常在电池而不是引脚。

六、往哪走:三条演进路线 + 落地路线图

路线 A|从监测到控制:加一只 5V 继电器驱动电磁阀,越限自动补灌 10 分钟再复测——监测闭环升级为"感知-决策-执行"闭环,这是性价比最高的一步。路线 B|从单点成网:按第四节组网,每 50~100 米一个节点,主机汇聚后按区块展示,先看哪块田"渴"。路线 C|从通用到专属:把校准后的阈值、节点 ID 用 Preferences 库 存进 Flash,断电重刷都保留;再引入太阳能板 + 小锂电,彻底摆脱布线。

落地按周排:

周次目标验收标准
第 1 周单节点串口出数湿/干读数差 > 500(12 位)
第 2 周数据上云 + 阈值报警手机收到越限推送
第 3 周深睡改造电流表实测均值 < 1mA
第 4 周第二节点 + OTA远程推送新版固件成功

先让一行数字出现在串口上,剩下的每一步都建立在这个最小闭环之上——这是 ESP32 智能农业监测系统最省心的搭法:每完成一周的目标,手上就多一个真正能用的功能。

【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询