news 2026/9/12 9:18:06

200 元搭一套农田数据哨兵:基于 Arduino-ESP32 的 ESP32 物联网智能农业监测教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
200 元搭一套农田数据哨兵:基于 Arduino-ESP32 的 ESP32 物联网智能农业监测教程

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 ESP32S320×17.5mm~25 元超小体积,方便塞进田头箱子
中小农场主力节点ESP32-C3 DevKitM-1标准 DevKit~18 元性价比最高,GPIO 够用
需要本地看数M5Stack Atom S325×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 为例):

传感器VCCGND信号线
FC-28 土壤湿度3.3VGNDAO → GPIO4
DHT11 温湿度3.3VGNDDATA → GPIO6(内部上拉即可)
DS18B20(可选)3.3VGNDDATA → 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 接下来可以玩什么(扩展路线)

跑通基础监测后,下面三条路一条比一条值钱,按需往上加:

  1. 加继电器 → 自动灌溉:阈值报警从"提醒你"升级成"直接开电磁阀",实现闭环,价值最高。
  2. 加光照/多路土壤参数 → 温室优化:接入光照、EC(电导率),为温室补光和施肥提供数据,决策更准。
  3. 上 AI 推理 → 病虫害初筛:ESP32-S3 带向量指令加速,能跑轻量模型做图像初筛,把问题在田头就地发现,少依赖云端。

每条都是"在现有固件上加一个传感器/执行器"的增量,不推翻已跑通的部分。

H2-8 你的前 30 分钟(行动清单)

  1. 0~10 分钟:IDE 装好 ESP32 支持包、选对板子和串口,打开 docs/en/getting_started.rst 对照一遍环境。
  2. 10~20 分钟:按 Step 1 的表把 FC-28 和 DHT11 接好,把 Step 2 的最小固件烧进去,看串口数字在动。
  3. 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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/12 9:17:09

Python正则表达式实战:re模块核心技巧与应用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/12 9:15:15

机房温湿度采集协议怎么选?TCP、UDP、SNMP对比与实战

机房里的温湿度数据看着简单&#xff0c;真要把它稳定、准实时地送进监控系统&#xff0c;协议选型往往比传感器本身更让人头疼。不少运维新手第一次接触以太网温湿度传感器时&#xff0c;都会对着“支持TCP、UDP、SNMP”这几个字发懵——到底该用哪个&#xff1f;三个都开行不…

作者头像 李华
网站建设 2026/9/12 9:14:50

鸿蒙开发调试指南:解决分布式玄学Bug

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/12 9:12:38

嵌入式系统本质:功能定位而非硬件形态

1. 从“能跑Windows的盒子”到“塞进洗衣机的芯片”&#xff1a;嵌入式设备的边界从来不是由大小决定你拆开过家里的智能电饭煲吗&#xff1f;我拆过——里面那块比指甲盖还小的电路板上&#xff0c;焊着一颗ARM Cortex-M3芯片、几颗电阻电容、一个温控传感器&#xff0c;还有固…

作者头像 李华