尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
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),仅供参考
RELATED

相关推荐

CRMEB多商户v4.0升级拆解:TP8+PHP8.0技术底座与性能优化实践

CRMEB多商户v4.0升级拆解:TP8+PHP8.0技术底座与性能优化实践

CRMEB 多商户系统(PHP)v4.0 的更新预告在电商开发圈里传得很快。我从早前版本就在用 CRMEB 接项目,这些年最大的感受是:多商户电商的复杂度,远比大多数人想象得高,一套能打的系统,不光要功能全&…

📅 2026/9/10 22:17:06
RevokeMsgPatcher 2.1 深度评测:Windows 微信/QQ/TIM 二进制防撤回补丁

RevokeMsgPatcher 2.1 深度评测:Windows 微信/QQ/TIM 二进制防撤回补丁

RevokeMsgPatcher 2.1 深度评测:Windows 微信/QQ/TIM 二进制防撤回补丁 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: ht…

📅 2026/9/10 22:17:06
测试计划与测试方案的区别及实战设计

测试计划与测试方案的区别及实战设计

1. 测试计划与测试方案的本质区别刚入行的测试工程师经常会把测试计划和测试方案混为一谈,这就像把建筑蓝图和施工方案当成同一个东西。实际上,测试计划是战略层面的总体规划,而测试方案是战术层面的具体实施方法。测试计划的核心是回答"…

📅 2026/9/10 22:17:06
MORE NEWS

更多资讯

📰

WCPulse 第 013 个开关:启用置顶点击保留的位置、验证方法与风险边界

🔥 个人主页: 杨利杰YJlio ❄️ 个人专栏: 《Windows 疑难杂症与工单复盘案例库》 《Sysinternals实战教程》 《WINDOWS教程》 《Windows PowerShell 实战》 《IOS插件分析测试》 《超简单:用Python让Excel飞起来》…

📰

电网故障下分布式能源系统的无功优化与GCC控制

1. 电网故障下分布式能源系统的无功优化挑战 现代电力系统中,分布式能源(DER)的渗透率不断提高,这对电网的稳定运行提出了新的要求。当电网发生故障时,如何通过并网转换器(Grid-Connected Converter, GCC&a…

📰

WCPulse 第 031 个开关:启用多选消息撤回的位置、验证方法与风险边界

🔥 个人主页: 杨利杰YJlio ❄️ 个人专栏: 《Windows 疑难杂症与工单复盘案例库》 《Sysinternals实战教程》 《WINDOWS教程》 《Windows PowerShell 实战》 《IOS插件分析测试》 《超简单:用Python让Excel飞起来》…

📰

基于libfota2的物联网设备FOTA系统设计与实践

1. 项目概述:FOTA固件更新系统搭建在物联网设备大规模部署的今天,固件远程升级(FOTA)已成为智能设备运维的刚需功能。最近我在一个工业PLC项目中,基于开源库libfota2搭建了完整的固件更新系统,实现了从服务器部署到终端设备升级的…

📰

二分查找算法实现高效平方根计算

1. 二分查找算法基础与平方根问题二分查找(Binary Search)是计算机科学中最基础且高效的搜索算法之一,它的核心思想是通过不断缩小搜索范围来快速定位目标值。这个算法要求数据集必须是有序的,这也是它能达到O(log n)时间复杂度的…

📰

2026年多店铺电商实时看数工具排行榜8款主流工具实测盘点

同时经营多个电商平台、多个店铺的卖家,最常问的一个问题是:销售数据能不能实时看到?市面上到底有哪些工具能解决这件事?本文先把多店铺实时看数工具按功能定位分成三类,再逐个盘点评测 8 款主流工具,给出梯…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬