ESP32 农田监测站:接线、组网到数据上云完整指南
【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32
用一块 ESP32-C3 开发板加两枚传感器,总成本不到 40 元、耗时约 2 小时,即可搭出把土壤温湿度实时上云的 ESP32 农业监控系统。基于 arduino-esp32 官方核心 3.3.11,WiFi、OTA、深度睡眠开箱即用,适合想给菜园或试验田装监测节点的新手。
一张表备齐物料与开发环境
| 项目 | 规格 | 为什么选它 |
|---|---|---|
| 主控板 | ESP32-C3 Dev Module(RISC-V,160 MHz) | 板载 WiFi/BLE,十几元买断通信成本 |
| 土壤湿度 | FC-28 模拟输出探头 | AO 直插 ADC,免驱动芯片 |
| 温度 | DS18B20 数字探头 | 单总线只占 1 个 GPIO,精度 ±0.5℃ |
| 开发环境 | Arduino IDE + arduino-esp32 核心 3.3.x | 官方维护,板级与工具链一次装全 |
环境搭建只有一步:按 安装文档 在 IDE「首选项 → 附加开发板管理器网址」中加入 ESP32 地址,打开开发板管理器搜索 esp32 安装 3.3.x 版本,再到「工具」菜单选中 ESP32C3 Dev Module。
安装完成后,开发板菜单里会出现 ESP32C3 Dev Module 等可选型号
从零到上云:最短上手路径
动作 1:装核心,先让板子说话。动作:烧录任意 Blink 示例,串口监视器波特率设为 115200。 预期现象:C3 板载 RGB 灯(GPIO8)开始闪烁。 验证成功:串口稳定输出——核心与工具链没问题,后面所有故障都可以排除环境因素。
动作 2:接传感器,把土壤读数读出来。动作:FC-28 的 AO 接 A5(即 GPIO5)、VCC 接 3V3、GND 接地;DS18B20 的 DATA 接 GPIO4,并在 DATA 与 3V3 之间加一只 4.7kΩ 上拉电阻。
const int SOIL_PIN = 5; // A5 = GPIO5 void setup() { Serial.begin(115200); } void loop() { int raw = analogRead(SOIL_PIN); // 12 位,0~4095 float moisture = map(raw, 0, 4095, 100, 0); Serial.printf("soil %d -> %.1f%%\n", raw, moisture); delay(2000); }预期现象:串口每 2 秒刷出一行原始值与百分比。 验证成功:探头悬空时读数接近 100%,插入湿土后明显下降——土壤湿度传感器越湿读数越小,这条变化曲线符合预期,说明 ADC 通路完好。
动作 3:连 WiFi,把数据发出去。
#include <WiFi.h> void setup() { Serial.begin(115200); WiFi.begin("你的SSID", "你的密码"); while (WiFi.status() != WL_CONNECTED) delay(500); Serial.println("IP: " + WiFi.localIP().toString()); }预期现象:串口打印出路由器分配的 IP。 验证成功:把湿度与温度拼成 JSON,用 HTTPClient 库 POST 到云平台免费数据通道,网页端能看到随探头位置波动的实时曲线。ESP32 WiFi 上传数据这一步跑通,系统就算闭环了。
农田现场通常已有路由器,ESP32 作 Station 直接接入,无需额外网关
它是怎么转起来的:输入、处理、输出
整个过程可以拆成三段。输入端,FC-28 输出一个随土壤含水量变化的电压,ESP32 的 ADC 把它量化成 0~4095 的 12 位数字——相当于用一把 4096 格刻度尺给模拟信号拍照;DS18B20 则自己算好温度,只靠一根数据线报数。处理端,程序做两件小事:用 map 把原始值换算成百分比,再用滑动平均滤掉抖动的毛刺。输出端,数据按固定间隔打包成 JSON,经 WiFi 交给云端存储展示;数值越界时,可以在本地点亮指示灯,或为后续控制逻辑留好钩子。
传感器信号先经 IO_MUX/GPIO 矩阵路由,再到达 ADC、UART 等外设
进阶玩法:往三个方向走
🔋 低功耗,让电池版跑几个月。把「常开」改成「定时醒」:参考 深度睡眠 TimerWakeUp 示例,设 5 分钟定时器唤醒,醒后采一次数、发一次包、立刻睡回去,整机功耗从常开的几十毫安降到深睡微安级,适合无电源的田头。
多节点,一片田一个网。装上 ESP-NOW 库 后,节点之间免路由器直连:田间多个从节点把数据发给一个主节点,主节点统一上云,省流量也省布线;距离再远,可换 LoRa 模块走 UART。
从监测到控制,闭环自动灌溉。GPIO 上挂继电器驱动电磁阀:湿度低于阈值开阀、高于阈值关阀;固件迭代不用拔线,用 Update(OTA)库 远程刷包即可。
踩坑速查
| 现象 | 原因 | 处理 |
|---|---|---|
| ⚠️ 串口全乱码或无输出 | 监视器波特率与程序不匹配 | 两边都设 115200,上传前先关掉监视器 |
| 湿度读数恒为 0 或 4095 | 探头没入土,或接了悬空引脚 | 确认 AO 接在 A0~A5(C3 为 GPIO0~5),探头插进湿土 |
| 一上电就进下载模式、无法启动 | GPIO0 上电瞬间被拉低,命中启动引脚 | 传感器信号改接 GPIO5,给 GPIO0 加 10kΩ 上拉 |
| WiFi 永远连不上 | 密码大小写输错,或现场信号太弱 | 串口打印 WiFi.status() 定位,必要时把节点挪近路由器 |
| 云平台返回 401/403 | API Key 失效或通道号写错 | 重新生成 Key,确认 channel 与代码一致 |
| 上传提示找不到设备 | 未进下载模式或选错串口 | 按住 BOOT 键再上电,重新选择 COM 口 |
到这里,一套能自主采数、自主上云的 ESP32 农业监控节点就搭完了。下一步建议:先把 5 分钟定时采集和深度睡眠接上,让设备脱离 USB、靠电池在田里跑满一周,再考虑多节点扩展。
【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考