ESP32 智能灌溉系统搭建指南:4 个子任务完成自动浇水与远程监控

发布时间:2026/9/10 22:22:09
ESP32 智能灌溉系统搭建指南:4 个子任务完成自动浇水与远程监控 ESP32 智能灌溉系统搭建指南4 个子任务完成自动浇水与远程监控【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32基于 arduino-esp32 核心包这套 ESP32 智能灌溉系统用一块开发板、几路传感器和一只继电器实现土壤湿度采集、自动开泵浇水与远程数据上报适合第一次做物联网土壤湿度自动灌溉项目的新手。全文按任务驱动推进先备料接线再逐个攻克 4 个子任务最后给出现场部署的避坑清单。一、先定目标这套系统每天要干哪些事把整套需求压缩成一句话让 ESP32 每隔几分钟自己醒一次量一量土壤和环境该浇水就浇水然后把结果记下来、传出去再睡回去。拆开来看就是四件事定时唤醒读 4 个量土壤湿度、温度、湿度、光照土壤湿度低于阈值时结合环境条件决定浇多久把结果以 CSV 追加进 SD 卡同时通过 Wi-Fi 推一条 JSON 到云端全程靠太阳能 锂电池供电所以大部分时间在睡觉数据流长这样二、准备工作开发环境与硬件接线一次搞定2.1 三步装好 arduino-esp32 开发板支持打开 Arduino IDE → 文件 → 首选项在附加开发板管理器网址里填入官方索引地址https://espressif.github.io/arduino-esp32/package_esp32_index.json工具 → 开发板 → 开发板管理器搜索 esp32 并安装最新版本工具栏选择对应开发板型号如 ESP32 Dev Module与串口号2.2 引脚分配ESP32 土壤湿度传感器接线一次看懂信号ESP32 引脚备注土壤湿度 AOGPIO34只读输入脚ADC1_CH6接模拟量最稳妥DHT11 DATAGPIO4单总线数字信号一根线搞定BH1750 SDA / SCL21 / 22Wire 库默认 I2C 引脚继电器 INGPIO13输出控制SD 卡 CSGPIO5SPI 其余线用库默认引脚传感器供电控制GPIO14接 MOSFET 栅极按需通断电为什么湿度探头非要接 GPIO34因为 ESP32 的 GPIO 可以复用成多种外设信号I2C、SPI、UART 等而 34~39 号脚是纯输入专用专门留给 ADC 采样不会冲突。引脚复用关系可以在 GPIO HAL 头文件 和 ADC HAL 里查到内部框图大致如下⚠️继电器务必独立供电继电器模块用单独的 5V/12V 电源只把 IN 和 GND 接到 ESP32。水泵启动电流远超开发板供电能力直接从板子取电容易烧板同时两路电源的 GND 必须共地信号才认得彼此。2.3 光照传感器走 I2C一根总线还能扩I2C 是一种只用两根线SDA 数据线、SCL 时钟线就能挂多个设备的总线每个设备一个地址。BH1750 就挂在上面输出单位为 lux勒克斯光照强度单位。以后想加 I2C 温湿度、气压计直接并到同一总线上即可。I2C 初始化参考 Wire 库。三、子任务一把土壤湿度校准成百分比传感器选型上建议用电容式探头电阻式的两片金属泡进水里会被电解腐蚀越用越不准电容式靠土壤介电常数变化测量长期稳定得多。ADC 读到的是 0~4095 的原始值要换算成百分比必须先做两点校准// 土壤湿度读取把 ADC 原始值换算成 0~100% const int SOIL_PIN 34; // GPIO34只读输入 const float DRY 4095.0; // 校准值探头在空气中 const float WET 1500.0; // 校准值探头完全浸水 float soilMoisture() { int raw analogRead(SOIL_PIN); float pct 100.0 * (DRY - raw) / (DRY - WET); return constrain(pct, 0.0, 100.0); // 越界读数夹回 0~100% }这段代码做的事一次analogRead拿原始值按干湿两个校准点线性插值再用constrain防止脏读数跑出 0~100% 区间。 每个探头都有个体差异空气中和浸水各读一次记下来填进DRY/WET即可多探头部署时建议逐个校准。四、子任务二多参数加权决策该浇才浇只看土壤湿度会偏科同样是 30% 湿度35°C 暴晒和阴凉雨天需要的浇水量完全不同。所以决策算法采用加权方式——湿度低于阈值触发灌溉再用温度、湿度、光照对时长做加减struct Decision { bool water; int seconds; }; Decision decide(float soil, float t, float hum, float lux) { Decision d { false, 0 }; if (soil 30.0) { // 干旱阈值低于 30% 才触发 d.water true; d.seconds 30; // 基础时长 30 秒 if (t 30.0 hum 50.0) // 高温低湿蒸发快加时 d.seconds 15; if (lux 50000) // 强光直射再加点 d.seconds 10; } return d; }光会做决策还不够执行端必须上安全保护。继电器让开发板用小信号控制大电流回路的开关常开或误触发都可能烧泵、淹田所以加两道闸门单次时长封顶、两次灌溉强制间隔。#define RELAY_PIN 13 #define MAX_WATERING 300 // 单次最长 5 分钟 #define MIN_GAP 3600 // 两次灌溉至少间隔 1 小时 unsigned long last 0; void waterFor(int seconds) { if (seconds 0 || seconds MAX_WATERING) return; // 参数保护 unsigned long now millis() / 1000; if (now - last MIN_GAP) return; // 防抖防误触发 digitalWrite(RELAY_PIN, HIGH); // 开阀 delay(seconds * 1000); digitalWrite(RELAY_PIN, LOW); // 关阀 last now; }参数建议值一览可按作物微调参数建议值作用干旱阈值30%低于它才触发浇水基础时长30 秒每次默认浇水量单次上限300 秒防止继电器常开烧泵最小间隔3600 秒等土壤湿度回稳后再决策五、子任务三数据本地记录与云端上传本地记录解决断网也留痕每次测量往 SD 卡上的 CSV 追加一行用 Excel 就能直接打开做趋势分析。File f SD.open(/irrigation.csv, FILE_APPEND); if (f) { f.print(millis() / 1000); // 开机秒数当时间戳 f.print(,); f.print(soil); // 土壤湿度 f.print(,); f.print(temp); // 温度 f.print(,); f.print(hum); // 空气湿度 f.print(,); f.println(d.water ? 是 : 否); // 本轮是否浇水 f.close(); }云端上传走 Wi-Fi 站点STA模式——ESP32 像普通设备一样连上家里/田边的路由器再用 HTTP POST 把 JSON 推给服务器// setup() 里先连网 WiFi.begin(ssid, password); if (WiFi.status() ! WL_CONNECTED) return; // 没网就不发 HTTPClient http; http.begin(serverUrl); http.addHeader(Content-Type, application/json); String json {\soil\: String(soil) ,\temp\: String(temp) ,\hum\: String(hum) ,\lux\: String(lux) }; int code http.POST(json); // 返回 0 表示请求已发出 http.end();联网与请求分别参考 WiFi 库 和 HTTPClient 库文件操作参考 SD 库。六、子任务四深度睡眠让太阳能撑得住 深度睡眠Deep Sleep是 ESP32 最省电的模式CPU 和大部分外设断电只留 RTC 定时器工作整机功耗从几十毫安降到微安级醒来后自动重启并从setup()重新跑。#include esp_sleep.h // 每轮测量结束后调用睡 300 秒 void sleep5min() { esp_sleep_enable_timer_wakeup(300ULL * 1000000); // 单位微秒 esp_deep_sleep_start(); // 醒来后自动重启 } // setup() 里判断本次为什么醒 if (esp_sleep_get_wakeup_cause() ESP_SLEEP_WAKEUP_TIMER) Serial.println(定时唤醒开始测量);还有一层细节能再省一点用 GPIO14 驱动 MOSFET 给传感器组通断电——测量前拉高、等 100ms 稳定再读数读完立刻拉低传感器不工作就不耗电。七、现场部署避坑清单农业环境不温柔部署前对照检查一遍防水主控 继电器装进密封防水盒预留出线孔接头用防水格兰头线缆拉出后留滴水弯别让雨水顺线倒灌校准土壤湿度做干湿两点DHT11 与标准温湿度计比对BH1750 遮住时应接近 0 lux参数阈值、时长、间隔按作物和气候调宁小勿大——先 30 秒试浇观察吸水性再放大测试连续运行 24 小时看稳定性手动断网验证重连断电重启后确认参数与数据完整八、进阶玩法从一块菜地到一片田基础版跑通后这些方向投入产出比都不错多区域灌溉每个区一套探头 继电器决策循环里按区域遍历各浇各的天气联动拉取天气预报 API降雨概率高就跳过当日灌溉省水又省心远距离通信Wi-Fi 覆盖不到的地块换 LoRa多台设备之间可用 Mesh 组网互相兜底数据再利用SD 卡里的历史 CSV 可以喂给 Grafana 做曲线或训练简单的灌溉预测模型九、下一步把仓库克隆到本地开始动手仓库为只读参考请勿改动其内容git clone https://gitcode.com/GitHub_Trending/ar/arduino-esp32克隆完成后到libraries/ESP32/examples/里按传感器类型找接线与采样参考libraries/WiFi/、libraries/SD/、libraries/HTTPClient/各库也都自带示例工程。实现中卡住了可以直接在项目里提交 Issue 描述现象和日志社区维护者会帮你排查。【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询