200 元搭一套农田数据哨兵:基于 Arduino-ESP32 的 ESP32 物联网智能农业监测教程
【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32
基于 Arduino-ESP32 开发框架,这套 ESP32 物联网智能农业监测系统用不到 200 元硬件和约 3 小时,帮你跑通土壤温湿度实时采集、WiFi 云端同步与阈值报警,最终得到一块能持续往云平台吐数据的田间监测节点。
H2-1 场景切入:一个农场的早晨
天没亮,你蹲在田埂上用手捏一把土,判断要不要开泵浇水——这是过去每天重复的活。现在你只想在床头摸出手机,打开图表看一眼昨晚到今早的土壤湿度曲线:如果已经掉到 30% 以下,App 弹一条报警,你顺手点下"灌溉",电磁阀就自己开了。
这套系统要解决的其实很具体:把"凭手感"换成"看数据",并且让数据自己传到云端、自己触发报警。ESP32 因为内置 WiFi 和足够多的 GPIO,正好把传感器、联网、低功耗三件事压进一块小开发板里,不用额外买通信模块。
H2-2 你会得到什么(成果预览)
跑完之后,你手里有这么一块能独立干活的监测节点:
| 能力 | 说明 | 典型表现 |
|---|---|---|
| 实时监测 | 土壤湿度 + 空气温湿度连续采集 | 每 5 秒采一次,ADC 12 位精度 |
| 云端同步 | WiFi 上报 JSON,存进云平台 | 手机随时查历史曲线 |
| 阈值报警 | 数据越限自动推送提醒 | 湿度 < 30% 触发灌溉报警 |
| 低功耗续航 | 深度睡眠 + 定时唤醒 | 待机电流可降到 10μA 级 |
硬件总成本区间:100~200 元。开发板 + 两三个传感器 + 电源/接线,剩下的钱都花在刀刃上,没有一块多余的板子。
H2-3 工具链与物料清单 📌
开发板选型——按你的场景挑,别买贵的:
| 场景 | 推荐板 | 尺寸 | 参考价 | 核心优势 |
|---|---|---|---|---|
| 家庭小棚 / 隐蔽安装 | XIAO ESP32S3 | 20×17.5mm | ~25 元 | 超小体积,方便塞进田头箱子 |
| 中小农场主力节点 | ESP32-C3 DevKitM-1 | 标准 DevKit | ~18 元 | 性价比最高,GPIO 够用 |
| 需要本地看数 | M5Stack Atom S3 | 25×36mm | ~45 元 | 自带 OLED,现场能直接读数 |
传感器清单——每个都一句话讲清为什么选它:
- FC-28 土壤湿度传感器:用电阻原理测含水量,响应约 2 秒,AO 输出直接进 ADC,最适合入门。
- DHT11 温湿度传感器:一颗同时给空气温度和湿度,为灌溉决策提供对照数据。
- DS18B20(可选):单总线协议,精度 ±0.5℃,能多个并联,适合需要更准土温时加。
配套软件:
- Arduino IDE:装 ESP32 开发板支持包即可编译上传。
- 官方文档入口:docs/en/,其中 docs/en/getting_started.rst 和 docs/en/installing.rst 是上手首选。
- 联网示例代码参考 libraries/WiFi/examples/,深度睡眠参考 libraries/ESP32/examples/DeepSleep/。
ESP32-C3 的引脚在开发板上都标了编号,传感器接线前先对着图确认一下引脚位置:
H2-4 从零到跑通:分步构建
Step 1:环境配置与 ESP32 土壤传感器接线
打开 Arduino IDE → 文件 → 首选项,把板管理 URL 里加上 ESP32 支持地址;再进 工具 → 开发板管理器,搜 "esp32" 装最新版。装好后在工具菜单选你的板型(例如 "ESP32 C3 Dev Module"),并选对串口。
接线遵循"电源—信号—地"三要素(以 C3 为例):
| 传感器 | VCC | GND | 信号线 |
|---|---|---|---|
| FC-28 土壤湿度 | 3.3V | GND | AO → GPIO4 |
| DHT11 温湿度 | 3.3V | GND | DATA → GPIO6(内部上拉即可) |
| DS18B20(可选) | 3.3V | GND | DATA → GPIO5,外接 4.7K 上拉 |
✅ 验证点:编译不报错、串口监视器(115200 波特率)能正常打开,说明环境和板子都通了。
Step 2:最小可用固件——传感器读取 + 串口打印
先把"读数"跑通,别急着连云端。下面这段 ≤15 行,是整块节点的心脏:
#include <Arduino.h> const int SOIL_PIN = GPIO4; // 土壤湿度传感器 AO 接这里 void setup() { Serial.begin(115200); pinMode(SOIL_PIN, INPUT); } void loop() { int raw = analogRead(SOIL_PIN); // 读 12 位 ADC,范围 0~4095 float pct = map(raw, 0, 4095, 100, 0); // 映射成 0~100% Serial.printf("土壤湿度: %.1f%%\n", pct); delay(5000); // 每 5 秒采一次 }逐行看懂三处关键:analogRead拿的是 12 位原始值(0~4095,不是 0~1023,ESP32 默认 12 位分辨率);map把原始值翻成人类能懂的百分比;delay(5000)定采集节拍。湿度传感器是"干→大、湿→小"的规律,所以映射方向写成 100→0。
✅ 验证点:往土壤探头浇点水,串口里的百分比应该肉眼可见地往下掉——读数在动,说明硬件链路正常。
Step 3:连云端——WiFi STA 模式 + JSON 上报
农田里通常有现成的 WiFi,用STA 模式(设备作为客户端连路由器)最省事。Arduino-ESP32 的WiFi.begin(ssid, 密码)会默认自动重连,连接示例可直接抄 libraries/WiFi/examples/WiFiClientConnect/。
连上后把每次采到的数据打包成 JSON 发出去:
String data = "{\"moisture\":" + String(pct) + ",\"temperature\":" + String(temp) + "}"; WiFiClient client; HTTPClient http; http.begin(client, "https://api.你的平台.com/feed"); http.addHeader("Content-Type", "application/json"); http.POST(data);平台选型:初学者建议先用 ThingSpeak 这类带免费数据通道的平台,API 是简单的 POST,不用自己搭后端;跑顺了再考虑 Blynk(手机 App 控制)或阿里云 IoT(企业级)。设备端建议配一个固定 IP,避免 DHCP 漂移导致平台侧对不上设备。
✅ 验证点:云平台曲线图开始按 5 秒间隔往上跳新点,且数值和串口打印的一致——数据链路打通。
H2-5 让它扛住田间环境(生产化加固) ⚡
田间设备多半没有市电,靠电池/太阳能,省电是头等大事。核心手法是深度睡眠 + 定时唤醒:平时睡,到点醒、采一次数、发一次包、再睡。Arduino-ESP32 用两行就能进入这个循环:
esp_sleep_enable_timer_wakeup(5 * 60 * 1000000); // 5 分钟(微秒)后唤醒 // ……在这里读传感器 + 上报 JSON,然后: esp_deep_sleep_start(); // 立即入睡这样 ESP32 待机电流可以压到 10μA 量级,一块普通锂电池撑几个星期没问题。完整写法(含 RTC 内存保活、唤醒原因打印)可看 libraries/ESP32/examples/DeepSleep/TimerWakeUp/。
多节点扩展:单块板只管自己脚下那一平方米。要覆盖大面积,就再加几块节点,各自用 WiFi 上报;距离远、WiFi 覆盖不到的地,可以换 LoRa 或 Zigbee 组网,把数据汇聚到一个网关。传感器怎么通过 IO_MUX / GPIO 矩阵接到内核的底层架构,看这张图更直观:
供电:一块 5V 太阳能小板给 18650 锂电池充电,再用一颗 LDO 降压到 3.3V 给 ESP32,就是无电网田地的标准供电方案。白天补的电,足够撑到下一次唤醒。
H2-6 踩坑速查表 🔧
| 现象 | 大概率原因 | 解决 |
|---|---|---|
| 湿度读数一直卡在 0 或 100 不动 | 探头没吃土 / 3.3V 供电不稳 | 探头插进湿润土里,用稳压 3.3V 供电,检查 AO 是否接错 GPIO |
| WiFi 反复连不上 | 密码错、信号弱、DHCP 拿不到 IP | 核对 SSID/密码;挪天线位置;给设备配固定 IP |
| ADC 值跳动大 | 传感器线太长引入干扰 | 缩短信号线,读 5 次取平均再上报 |
| 电池掉电飞快 | 忘了进深度睡眠 / 常亮外设 | 采集完立刻esp_deep_sleep_start(),关掉不必要外设 |
| 想更新固件却得跑现场 | 没开 OTA | 启用 OTA 后远程就能刷,见下方 |
刷固件不用每次爬田——Arduino-ESP32 内置OTA 空中升级,配合官方 Web 更新页面登录校验后上传新固件即可,界面长这样:
登录校验能挡住未授权访问,配合 docs/en/ota_web_update.rst 的说明,你就有一套"远程刷板"的能力了。
H2-7 接下来可以玩什么(扩展路线)
跑通基础监测后,下面三条路一条比一条值钱,按需往上加:
- 加继电器 → 自动灌溉:阈值报警从"提醒你"升级成"直接开电磁阀",实现闭环,价值最高。
- 加光照/多路土壤参数 → 温室优化:接入光照、EC(电导率),为温室补光和施肥提供数据,决策更准。
- 上 AI 推理 → 病虫害初筛:ESP32-S3 带向量指令加速,能跑轻量模型做图像初筛,把问题在田头就地发现,少依赖云端。
每条都是"在现有固件上加一个传感器/执行器"的增量,不推翻已跑通的部分。
H2-8 你的前 30 分钟(行动清单)
- 0~10 分钟:IDE 装好 ESP32 支持包、选对板子和串口,打开 docs/en/getting_started.rst 对照一遍环境。
- 10~20 分钟:按 Step 1 的表把 FC-28 和 DHT11 接好,把 Step 2 的最小固件烧进去,看串口数字在动。
- 20~30 分钟:填好 SSID 和密码,跑通 Step 3 的 JSON 上报,在云平台看到第一个跳动的数据点。
剩下的时间留给阈值报警和深度睡眠。记住一句话:适合你这块地的系统,比复杂的系统更重要——先把一个节点稳稳跑起来,再谈扩展。
【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考