ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

一篇搞定:零基础 ESP32 智能灌溉系统,手机可查、自动浇水

一篇搞定:零基础 ESP32 智能灌溉系统,手机可查、自动浇水 一篇搞定零基础 ESP32 智能灌溉系统手机可查、自动浇水【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32清晨六点半手机在枕边震了一下土壤湿度 31%已自动浇水 45 秒。你趿拉着拖鞋走到菜地水泵刚好停转电磁阀通电就开阀放水的开关咔哒合上。这套能手机可查、自动浇水的 ESP32 智能灌溉小设备基于 arduino-esp32 官方核心库全文代码都能直接跑通成本几十块跟着做下来手里就是一台能干活的机器。清晨六点半手机先你一步收到地干了先把成品说清楚你心里就有数了一块 ESP32 开发板蹲在菜角的一个防水盒里旁边插着一根土壤探针和一台小水泵。它每 30 分钟醒一次摸一摸土有多干太干就自己放水然后把读数顺着 Wi-Fi 推到你手机干完活就呼呼大睡省电流。整个系统就是一个感知—决策—执行的小闭环这篇文章带你把它从开箱一路搭到野外部署。开箱清单五样东西搭起整套 ESP32 智能灌溉系统买料之前先看懂每样是干嘛的后面接线就不慌角色买什么为什么选它主控ESP32-WROOM-32 开发板DevKitC 外观自带 Wi-FiGPIO34 是纯输入脚正好接传感器不会跟水泵信号打架土壤湿度电容式土壤湿度传感器带模拟输出 AO 口电阻式探针几个月就被电解腐蚀、读数飘电容式能稳稳用一年温湿度DHT11一根信号线读出温度和湿度两个参数便宜到不用心疼执行器5V 继电器模块 12V 电磁阀继电器就是个小电工让 3.3V 的逻辑信号安全地指挥大电流的水泵电路电源5V/2A 电源进阶换太阳能锂电池继电器和电磁阀的电流远超 ESP32 板载输出必须独立供电图里把每个 GPIO 的编号都标清楚了我们全程只用其中四根34 摸土、4 读温湿度、13 管继电器、14 给传感器通断电。5 分钟配好 ESP32 开发环境让传感器先开口说话这一步目标很朴素串口监视器一打开能看到一组真实跳动的湿度读数就算过关。装好板卡支持包选对开发板打开 Arduino IDE进文件 → 首选项在附加开发板管理器网址里粘贴https://espressif.github.io/arduino-esp32/package_esp32_index.json然后工具 → 开发板 → 开发板管理器搜 esp32 安装最新版本装完开发板列表选ESP32 Dev Module即可。传感器接线与上电自测接线就三组土壤模块 AO 接 GPIO34DO 口别碰那是数字口、DHT11 信号接 GPIO4、继电器 IN 接 GPIO13。⚠️ 继电器模块的 VCC 接 5V 电源、GND 跟水泵电源共地别从 ESP32 的 3.3V 口取电。下面这个自测程序负责确认ESP32 能摸到土读 10 次取平均把原始值打到串口。const int SOIL_PIN 34; // 土壤湿度模块的 AO 口模拟量 void setup() { Serial.begin(115200); analogReadResolution(12); // 设成 12 位读数范围 0~4095 } void loop() { long sum 0; for (int i 0; i 10; i) sum analogRead(SOIL_PIN); // 读 10 次取平均滤毛刺 Serial.printf(土壤原始值: %ld\n, sum / 10); delay(500); }探针在干土里和插进湿土里数字明显变化这关就过了。让 ESP32 自己拿主意土壤湿度校准三步走读数只是数字得先教会 ESP32多少算干它才有资格自己拿主意。标出干点和湿点三步把传感器插在当天最干的土里记下读数为 DRY整支插进水杯泡一分钟记下读数为 WET之后每次读数都用这两个点线性换算成百分比。下面这段代码把校准结果固化进去返回 0~100 的湿度百分比// 校准后填自己的两个数干土记 DRY泡水记 WET const int DRY 3800, WET 1200; float soilPercent() { long sum 0; for (int i 0; i 10; i) sum analogRead(SOIL_PIN); long raw sum / 10; float pct (DRY - raw) * 100.0f / (DRY - WET); return constrain(pct, 0, 100); // 限死在 0~100 }阈值、加权与两道保险阈值别拍脑袋生菜叶菜类设 40% 左右辣椒番茄耐旱些可以放到 30%。判定逻辑做加权——基础 30 秒遇到又热又干气温超 30 度且空气湿度低于 50%加 15 秒因为蒸发更快。DHT11 的读法仓库示例里有现成代码这里只把读数作为参数传进判定函数struct Decision { bool water; int seconds; }; // 土壤太干才浇又热又干就加时 Decision decide(float soil, float temp, float hum) { Decision d {false, 0}; if (soil 40) { d.water true; d.seconds 30; // 基础浇 30 秒 if (temp 30 hum 50) d.seconds 15; // 高温低湿加 15 秒 } return d; }执行环节最容易翻车两道保险必须写单次最长 5 分钟封顶两次浇水至少间隔 30 分钟防止传感器坏了水泵空转把水放干。const int RELAY 13; unsigned long lastWater 0; // 继电器吸合放水保险单次封顶 5 分钟、两次间隔 30 分钟 void water(int sec) { if (sec 300) sec 300; unsigned long now millis() / 1000; if (now - lastWater 1800) return; // 刚浇过这次跳过 digitalWrite(RELAY, HIGH); // 水泵/电磁阀通电 delay(sec * 1000); digitalWrite(RELAY, LOW); // 断电断水 lastWater millis() / 1000; }把数据搬上云连 Wi-Fi、报 JSON、手机随时查这一步让 ESP32 上网读数就能源源不断流向你的手机人不在地头也能查。把 ESP32 接到家里路由器ESP32 以 Wi-Fi 客户端STA 模式相当于一台连你家路由器的笔记本接入局域网连不上就每 300 毫秒重试15 秒内放弃这轮void connectWiFi() { WiFi.begin(家里WiFi名, WiFi密码); while (WiFi.status() ! WL_CONNECTED millis() 15000) delay(300); }一条 JSON 搞定上报每轮采集完把土壤湿度、温度、湿度、是否浇水打包成一个 JSON 发给接收端家里一台小主机、NAS 都行接收端顺手搭个网页就是监控界面// 一轮数据打包成 JSON 发给服务器 void report(float soil, float temp, float hum, bool watered) { if (WiFi.status() ! WL_CONNECTED) connectWiFi(); // 掉线就重连 HTTPClient http; http.begin(http://192.168.31.100:8080/collect); // 换成你的服务器地址 http.addHeader(Content-Type, application/json); String body {\soil\: String(soil, 1) ,\temp\: String(temp, 1) ,\hum\: String(hum, 1) ,\watered\: (watered ? 1 : 0) }; http.POST(body); http.end(); }仓库里还有 WebServer 库和一批示例想让 ESP32 自己出网页页面的照着抄就行。野外生存续航与可靠性一次说清菜地里没插座电要省着花设备还得淋雨不坏这一节把三件事一次办完。第一件是深睡。深睡芯片把自己大部分断电、只留闹钟的模式是 ESP32 省电的杀手锏测完一轮就睡 30 分钟到点自动醒来平均电流能压到几毫安。这三行 API 和仓库 DeepSleep 示例里的用法完全一致// 干完一轮活睡 30 分钟到点自己醒 void sleepAWhile() { Serial.flush(); // 把串口尾巴发完 esp_sleep_enable_timer_wakeup(1800ULL * 1000000); // 定时器唤醒单位微秒 esp_deep_sleep_start(); // 从这里开始掉电入睡 }第二件是传感器分时供电用 GPIO14 经一个小 MOS 管控制传感器 5V测量时拉高通电、读完拉低断电传感器待机功耗直接归零。 注意传感器冷启动要一两百毫秒通电后 delay 一下再读。第三件是防水封装ESP32 和继电器塞进带密封胶圈的防水盒探针和盒子的接缝用热缩管防水胶带封死盒内放一包干燥剂。探针是唯一露在外面的部件选它的时候认准不锈钢探针的电容式模块。常见翻车点照着这份清单排读数漂移、毛刺大先确认接的是 AO 不是 DO平均次数从 10 提到 20模块探针根部补一块滤波电容。继电器咔哒响但不吸合供电电流不够继电器必须独立 5V 供电并和大功率负载共地。浇水瞬间整板重启、Wi-Fi 掉线继电器吸合的冲击电流把 5V 拉崩了电源换足流的串口能看到重启记录就能确诊。Wi-Fi 掉线不回来把report()里的掉了就重连放在每轮上报前执行别只连一次。睡醒后读数不对DHT11 和土壤模块都要等稳定再读醒来后先给个 1 秒的稳定时间。读数纹丝不动大概率插到了非 ADC 脚或把信号插到了数字口记住 GPIO34 只能输入。下一步去哪玩想扩就沿着这几个方向走多路继电器分区灌溉、调天气 API 雨天免浇、ESP-NOW 或 LoRa 把设备铺到整片地、用仓库自带的 SD 库在板子上落一份历史日志。先把你那台单区版跑稳一周再动别的地方。延伸阅读仓库内真实路径WiFi 库HTTPClient 库WebServer 库DeepSleep 定时器唤醒示例AnalogRead 模拟量读取示例现在就动手把开发板和土壤模块找出来按上面三组线接好跑一遍自测程序——串口里跳出第一个会随干湿变化的数字时你的 ESP32 智能灌溉系统就已经活了一半。【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表