news 2026/9/12 16:51:11

ESP32 智能农业物联网监控系统实战指南:3步80元搞定土壤数据上云

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ESP32 智能农业物联网监控系统实战指南:3步80元搞定土壤数据上云

ESP32 智能农业物联网监控系统实战指南:3步80元搞定土壤数据上云

【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32

这篇指南带你用一块 ESP32-C3 和开源的 arduino-esp32 核心,搭一套能上云的物联网土壤监控系统:土壤干了自动上报,数据随时可查。硬件总花费约 80 元,全程约 90 分钟。读完你就能自己接线、烧录固件,并把数据传到自己的服务器。

动手之前:物联网监控硬件与软件清单

先说人话:你要做的东西本质是一台"会看土的迷你电脑"——ESP32-C3 是主控,板子自带 2.4GHz WiFi 和 12 位 ADC(也就是把模拟电压信号翻译成数字的"翻译官"),传感器负责感知,云平台负责存。

名称用途参考价 / 获取方式
ESP32-C3 DevKitM-1 开发板主控,板载 2.4GHz WiFi 与 12 位 ADC约 18 元
FC-28 土壤湿度传感器电阻式探头,AO 口输出 0~3.3V 模拟电压约 5 元
面包板 + 杜邦线 10 根以上免焊接临时接线约 10 元
USB-C 数据线给板子供电 + 串口通信约 10 元
Arduino IDE代码编辑、编译、烧录免费,从 arduino.cc 官网下载
arduino-esp32 开发板支持包本文主角:ESP32 家族的 Arduino 官方核心免费,用开发板管理器安装

前置条件,一共三条:

  • 一台能联网的电脑(Windows、macOS、Linux 均可)
  • 一个2.4GHz 的 WiFi。先说人话:ESP32-C3 只认 2.4GHz 频段,如果你家路由器只开 5GHz,它连都连不上
  • 一个能接收数据的 HTTP 接口地址(你自己的服务器或测试环境即可,第四步才用到)

替代方案:手头没有 FC-28 也没关系,任何带电压输出(AO)的电容式土壤传感器都能替代,代码一字不改;连传感器都没有,可以先拿一个 10K 电阻接在 GPIO4 和 GND 之间把代码跑通,之后再换真传感器。

全局视角:土壤数据从探头到手机的流向

整条链路一句话:探头阻值变化 → ADC 转成 0~4095 → 换算百分比 → WiFi 发包 → 云端存储 → 手机查看

ESP32 内部 GPIO 矩阵示意图:传感器信号经 IO_MUX 分配到具体引脚,再由 GPIO 矩阵送往 ADC 等外设

拆开看就四件事:

  1. 探头插进土里,含水量变化让电阻变化,ESP32 通过 ADC 引脚读到一个 0~4095 的原始值
  2. 代码把原始值线性换算成 0~100% 的湿度百分比
  3. 板子以 STA 模式(Station,即"客户端"身份)接入家里 WiFi
  4. 通过 HTTP 把 JSON 数据 POST 到你的服务器,由你决定怎么展示和报警

🛠️ 第一步:安装 arduino-esp32 支持包并选中开发板

做什么:让 Arduino IDE 认识 ESP32-C3 这块板子,这是所有后续操作的前提。

怎么做

  1. 安装 Arduino IDE(1.8 以上版本即可),从官网下载安装包一路下一步
  2. 打开 IDE 的偏好设置窗口(File → Preferences,Linux 在 Edit → Preferences),在 Additional Boards Manager URLs 一栏填入 ESP32 支持包的索引地址,完整 URL 可直接查官方安装文档,稳定版以package_esp32_index.json结尾
  3. 依次点 Tools → Board → Boards Manager,搜索 "esp32",点 Install
  4. 重启 IDE,在 Tools → Board 里选中 "ESP32C3 Dev Module"

在 Additional Boards Manager URLs 中填入 ESP32 支持包索引地址,这是开发板管理器能找到 esp32 包的关键一步

开发板管理器里搜到 esp32 包并点 Install,下载需要几分钟,耐心等进度条走完

验证点:选中开发板后,Tools 菜单下会出现一整排 ESP32 专属选项(USB CDC On Boot、Flash Size、PSRAM 等),IDE 底部状态栏显示当前板型号。如果菜单里空空如也,说明第 2 步的 URL 没保存成功,重启 IDE 再试一次。

第二步:接线土壤湿度传感器并验证串口读数

做什么:把传感器接上,确认读数会随干湿变化,排除硬件问题后再谈联网。

怎么做

  1. 传感器 VCC 接板子 3V3,GND 接 GND,AO 接GPIO4
  2. 在 IDE 新建草图,把下面代码粘贴进去,改好引脚号
  3. 选中板子和串口号,点上传
  4. 打开串口监视器(Serial Monitor),波特率选 115200

ESP32-C3 DevKitM-1 引脚布局图:AO 信号接 GPIO4(对应 ADC1_4),电源用 3V3 和 GND

const int SOIL_PIN = 4; // C3 的 ADC1_4 引脚 void setup() { Serial.begin(115200); Serial.setDebugOutput(true); // 串口当调试输出 } void loop() { int raw = analogRead(SOIL_PIN); // 12 位 ADC,0~4095 float percent = map(raw, 1000, 3200, 100, 0); // 干湿区间换算成百分比 percent = constrain(percent, 0, 100); Serial.printf("土壤湿度: %.1f%%\n", percent); delay(2000); }

Arduino IDE 中打开草图、选择 ESP32 开发板与串口号,点绿色箭头即可编译烧录

验证点:串口里每 2 秒刷一行湿度值。用手捏住探头,数值应明显上升;松开回落。如果读数常年钉死在 0 或 4095,先查 VCC/GND 是否接反,再看探头是否真的插进了介质。踩过的坑直接告诉你:map里 1000、3200 这两个区间不是魔法数字,烧录后拿干土和湿土各读一次原始值,把它换成你实测的区间,百分比才准。

第三步:连接家里 WiFi 并验证网络通信

做什么:让板子以 STA 身份接入 2.4GHz WiFi,拿到局域网 IP。

怎么做:在第二步的代码基础上补上 WiFi 连接部分,整段替换 setup:

#include <WiFi.h> void setup() { Serial.begin(115200); WiFi.begin("你的WiFi名", "你的WiFi密码"); while (WiFi.status() != WL_CONNECTED) { // 等联网成功 Serial.print("."); delay(500); } Serial.println(); Serial.print("拿到IP: "); Serial.println(WiFi.localIP()); }

⚠️ 两处最容易翻车:密码里含中文输入法状态会抄错,逐字符对照输入;路由器开了"双频合一"时,确认设备列表里确实有 2.4GHz 信号。

ESP32 作为 WiFi 客户端(STA)接入无线路由器的连接关系示意

验证点:串口打印一串点后,出现拿到IP: 192.168.x.x。如果一直打点、IP 永远出不来,99% 是密码错或连了 5GHz 网络,回到第 2 步重查。

第四步:搭建数据上传循环与深度睡眠节能

做什么:把"读一次 → 传一次 → 睡一会儿"变成自动循环,这是整个物联网监控系统跑起来的最小闭环代码。

怎么做

  1. 头文件加上#include <HTTPClient.h>(该库已随 arduino-esp32 核心内置,无需另装)
  2. 把 setup 换成第三步的 WiFi 连接代码
  3. loop 改为下面这段,把 URL 换成你自己的接口

如果现场没有现成 WiFi,ESP32 还能切换为 AP(热点)模式发射信号,方便设备直连配置

void loop() { int raw = analogRead(SOIL_PIN); String body = "{\"moisture\":" + String(raw) + "}"; HTTPClient http; http.begin("http://你的服务器/上报接口"); http.addHeader("Content-Type", "application/json"); Serial.printf("上传状态码: %d\n", http.POST(body)); // 发出 JSON http.end(); // 进入深度睡眠(即让设备"闭眼省电"的模式),5 分钟后再自动醒来 esp_sleep_enable_timer_wakeup(5 * 60 * 1000000); esp_deep_sleep_start(); }

深度睡眠唤醒的细节(RTC 数据保留、唤醒原因判断)可以参考仓库自带的深度睡眠官方示例。

验证点:串口打出上传状态码: 200,同时你的服务器接口收到一条 JSON。拔插 USB 后观察串口重新打印 IP——这说明"醒来→联网→上报"的完整周期成立了。如果状态码是 4xx/5xx,那是你服务器接口的问题,与 ESP32 无关。

✅ 跑通之后:三个值得做的升级

断电不丢配置:把阈值存进闪存

现在报警阈值写死在代码里,改一次就要重烧一次固件。核心思路:用 Preferences 库把阈值、服务器地址写进芯片闪存,开机自动读回。涉及核心内置的 Preferences 库,几十行代码即可完成,Preferences 库目录里有完整 API 说明。

不拆壳升级固件:接入 OTA 远程更新

设备埋进地里后,每次改代码都拔线太反人类。核心思路:代码里引入核心自带的 ArduinoOTA 库,固件里注册一个名字和密码,之后就能通过局域网推送新固件,升级过程在网页端完成并需要登录校验。

OTA 升级的网页登录界面:升级入口带密码校验,防止他人未授权刷写你的设备

现场无网也能配:AP 热点配置模式

农田现场经常没有现成 WiFi,让设备自己当路由器是标准解法。核心思路:调用 WiFi.softAP() 让板子发射热点,再配合核心内置的 WebServer 库做一个配置页,手机连上去填一次 WiFi 名和密码即可,配置存 Preferences,下次开机直连。

⚠️ 翻车急救站

现象最可能原因30秒内能做的排查动作
IDE 里搜不到 esp32 开发板索引 URL 没填或没保存重开偏好设置确认 URL 完整,保存后重启 IDE
设备管理器里不出现 COM 口用了充电专用线 / 缺驱动换一根数据线;Windows 装 CP2102 或 USB-SERIAL-JTAG 驱动
上传卡在Connecting....后报错未按住 BOOT 键 / 板子没进下载模式按住 BOOT 不松,点上传,等出现 "Connecting" 再松开
湿度读数恒为 0 或 4095VCC/GND 接反或探头断路万用表量传感器两端电压,确认 3V3/GND 没反
WiFi 一直打点拿不到 IP密码错 / 连的是 5GHz 网络手机连同一网络测速确认可用,路由器后台确认有 2.4GHz 信号
上传状态码不是 200服务器接口拒绝请求手机浏览器直接访问该 URL 看响应,先排除板子因素

如果以上都没解决,把 IDE 里 "Show verbose output: during upload" 打开后完整重传一次,将这段日志连同你的接线方式贴到项目 Issue 区,通常能快速定位。

最后

你手里现在有一套会自己看土、定时上报的物联网监控系统。今晚就做一件小事:拿干土和湿土各读 5 次原始值,把代码里map的两个区间换成实测数,再跑一轮——你的湿度百分比立刻从"大概对"变成"真的准"。

【免费下载链接】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 16:49:41

RAG 技术方案全解析:从基础架构到生产级优化

这里写自定义目录标题欢迎使用Markdown编辑器引言&#xff1a;RAG 为什么成为大模型落地的主流范式一、RAG 的核心原理与设计目标1.1 从"参数记忆"到"外部记忆"1.2 RAG 解决的核心问题二、RAG 的完整架构&#xff1a;从数据到服务的全链路2.1 数据层&#…

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

如何用 GoogleMock NiceMock 和 StrictMock 控制 uninteresting call 警告

如何用 GoogleMock NiceMock 和 StrictMock 控制 uninteresting call 警告 【免费下载链接】googletest GoogleTest - Google Testing and Mocking Framework 项目地址: https://gitcode.com/GitHub_Trending/go/googletest 在写 GoogleMock 测试时&#xff0c;一个常见…

作者头像 李华
网站建设 2026/9/12 16:42:26

AI驱动的论文写作工具:技术解析与应用实践

1. 项目概述&#xff1a;AI驱动的论文写作革命"书匠策AI"作为一款智能数据分析导航工具&#xff0c;正在重新定义学术写作的边界。这个系统通过自然语言处理、机器学习和大数据分析技术的深度融合&#xff0c;为研究者构建了一个从选题挖掘到论文成稿的智能写作支持平…

作者头像 李华