尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

ESP32 智能灌溉实战:1 块开发板 + 3 个传感器搭出远程监控的完整指南

ESP32 智能灌溉实战:1 块开发板 + 3 个传感器搭出远程监控的完整指南 ESP32 智能灌溉实战1 块开发板 3 个传感器搭出远程监控的完整指南【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32老张的草莓园阿姨一请假浇水就断档。他决定用一块 ESP32 开发板搭一套 ESP32 智能灌溉系统配土壤湿度传感器和继电器让机器自己看土情、自己决定浇不浇读数还能在手机上随时看。整套系统基于 arduino-esp32 官方核心硬件成本不到一百块下面按真实接线和真实代码走一遍。ESP32 智能灌溉方案全貌系统就是一个感知 → 决策 → 执行 → 上报的闭环四件事分别对应一块硬件和一段代码先对号入座硬件软件预期效果ESP32-WROOM 开发板 ×1arduino-esp32 核心Arduino IDE 烧录每 5 分钟采一次数湿度低于 30% 自动灌溉电容式土壤湿度传感器 ×1analogRead 读 ADC两点校准换算百分比串口和云端都能看到土壤湿度百分比DHT11 温湿度传感器 ×1WiFi 库 HTTPClient 上传 JSON远程页面实时看温湿度5V 继电器模块 12V 电磁阀digitalWrite 控继电器时长封顶 300 秒单次灌溉 30~45 秒SD 卡留 CSV 历史锂电池 太阳能板esp_deep_sleep 深度睡眠非测量时段功耗降到微安级四件事背后全是仓库自带的库模拟量是核心里的 ADC联网用 WiFi 库记录用 SD 库决策只是纯 C不依赖任何第三方库。选开发板用经典的 ESP32-WROOM-32D 就够便宜、Wi-Fi 稳定引脚资料也最全。装环境把线接对Arduino IDE 安装 ESP32 支持包安装 Arduino IDE 2.x1.8 以上也可以打开首选项在附加开发板管理器网址里填入官方 ESP32 软件包索引地址地址在官方安装页 docs/en/installing.rst 里打开 工具 → 开发板 → 开发板管理器搜索 esp32安装最新稳定版重启 IDE在 工具 → 开发板 里选中你的开发板型号⚠️ 避坑开发板管理器里搜不到 esp32九成是第 2 步的地址没保存成功回到首选项确认地址以 .json 结尾再重新搜索。ESP32 土壤湿度传感器接线土壤传感器 VCC → 3.3V土壤传感器 GND → GND土壤传感器模拟输出 AO → GPIO34ADC1_CH6DHT11 DATA → GPIO4VCC → 3.3V继电器 IN → GPIO13继电器 VCC / GND → 外部 5V 电源继电器 COM → 12V 正极NO → 水泵负极SD 卡 CS → GPIO5走 SPI可选⚠️ 避坑继电器和水泵必须用独立 5V 供电从 ESP32 的 3.3V 脚取电会被电流倒灌直接拉死整板COM 和 NO 接反还会烧坏电磁阀。 经验经典款 ESP32 的 GPIO34~39 只能作输入正好放模拟传感器GPIO13 这类数字输出随便用。核心代码分三步搭读一次土壤湿度ADC 原始值没有物理意义第一步是把它校准成人眼能懂的百分比。const int SOIL_PIN 34; // 纯输入引脚 const int DRY 4095; // 传感器悬空时的读数 const int WET 1500; // 传感器没入水中的读数 float readMoisture() { int raw analogRead(SOIL_PIN); float pct 100.0 * (DRY - raw) / (DRY - WET); return constrain(pct, 0.0, 100.0); }ADC 默认 12 位、范围 0~4095实现在 cores/esp32/esp32-hal-adc.h。DRY 和 WET 两个端点要用你自己的传感器实测空气中读一次、完全泡水再读一次。constrain 兜底是为了读数噪声不会把百分比冲出 0~100。灌溉决策逻辑怎么写#define RELAY_PIN 13 #define DRY_PCT 30.0 void maybeWater(float soil, float temp) { if (soil DRY_PCT) return; // 土壤够湿跳过 int secs 30; // 基础 30 秒 if (temp 30.0) secs 15; // 高温再加 15 秒 secs min(secs, 300); // 封顶 5 分钟 digitalWrite(RELAY_PIN, HIGH); delay(secs * 1000L); digitalWrite(RELAY_PIN, LOW); Serial.printf(watered %ds, soil%0.1f%%\n, secs, soil); }不做纯开关阈值而是把温度当加权输入、时长设硬性上限这样就算传感器用久了漂移水泵也不会连灌几个小时。决策是纯函数硬件动作全集中在这一个函数里出问题好排查。数据送上云然后睡到下个周期#include WiFi.h #include HTTPClient.h const char* SSID 你的WiFi名; const char* PASS 你的WiFi密码; const char* URL http://192.168.1.100:8000/irrigation; void upload(float soil, float temp) { if (WiFi.status() ! WL_CONNECTED) { WiFi.begin(SSID, PASS); while (WiFi.status() ! WL_CONNECTED) delay(500); } HTTPClient http; http.begin(URL); http.addHeader(Content-Type, application/json); String body {\soil\: String(soil) ,\temp\: String(temp) }; Serial.printf(http%d\n, http.POST(body)); http.end(); }STA 模式让 ESP32 像普通客户端一样连家里路由器底层实现在 libraries/WiFi/src/WiFiSTA.cpp。接收端可以是树莓派上的一个小 Flask也可以是任意 MQTT 网关ESP32 这边代码完全不用改。上报完就让它睡等定时器叫醒#include esp_sleep.h void sleepCycle(uint32_t seconds) { esp_sleep_enable_timer_wakeup(seconds * 1000000); delay(100); // 等串口把日志打完 esp_deep_sleep_start(); // 到点自动唤醒重新进主循环 }每轮测量完进深度睡眠电流从两百多毫安掉到微安级太阳能加锂电池就能撑几个月。烧录后先排这五个坑前两次上手几乎都会撞进下面五个坑按顺序查一遍现象原因解法串口永远是 0 或 4095引脚选错GPIO34~39 才是纯输入换到 GPIO34~39对着引脚图核对湿度读数乱跳 ±5%引线太长、电阻式传感器漂移换电容式传感器引线控制在 20cm 内取 10 次采样均值开机几秒后整板重启继电器电源反灌或供电不足继电器独立 5V 供电水泵两端加 100µF 电容串口监视器乱码或无输出波特率不匹配、选错 USB 口监视器设 115200双 USB 口开发板选对端口WiFi 一直连不上密码错或现场信号弱打印 WiFi.status() 确认状态先挪近路由器调通再走线这五个坑全都在串口监视器和杜邦线层面解决不用改代码。从串口验证到远程监控串口验证115200 波特率打开监视器确认每 5 分钟出现一行 soilxx tempxx用手握住传感器看读数上涨联网WiFi STA 关联路由器并打印出 IP用局域网里另一台电脑 ping 一下确认可达远程访问浏览器打开接收端的 Web 页面或者订阅 MQTT 主题确认曲线实时跳动上线装进防水盒太阳能加深度睡眠整套 ESP32 智能灌溉系统进入低功耗循环 还能玩什么接 OpenThread 组无线 Mesh大棚多分区覆盖I2C 挂 BH1750 光照计阴雨天自动减灌换 LoRa 通信突破 Wi-Fi 两百米限制喂历史 SD 数据训练模型预测最佳灌溉时间资源导航官方入门文档docs/en/getting_started.rstAPI 参考GPIO、深度睡眠核心 GPIO 驱动cores/esp32/esp32-hal-gpio.hWi-Fi 库实现libraries/WiFi/src/WiFiSTA.cpp卡住的时候把开发板型号、核心版本和最小复现草图贴到项目 Issue 区维护者响应很快烧录固件打开串口看到第一条土壤湿度读数跳出来的那一刻这套系统就算正式上岗了。【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表