news 2026/9/12 17:43:31

花不到 200 元,搭一套 ESP32 农田监测站:arduino-esp32 从接线到云端报警

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
花不到 200 元,搭一套 ESP32 农田监测站:arduino-esp32 从接线到云端报警

花不到 200 元,搭一套 ESP32 农田监测站:arduino-esp32 从接线到云端报警

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

凌晨两点,手机亮了

凌晨两点,手机震了一下:「土壤湿度 27%,低于阈值」。

不用起身下地,你在被窝里已经心里有数了。这就是 ESP32 农业监测系统给你的东西——设备埋在土里,数据自己跑到你手机上。传统做法是拿个测墒仪一天走两趟地,走完数据已经过时了。

这篇文章带你用 arduino-esp32 核心把这套系统搭出来:接线、读数据、联网、上云报警,硬件总成本不到 200 元,一个下午就能跑通。

先看清一条数据的完整路径

别急着接线,先看数据从哪里来、到哪里去:

角色谁来做干什么
采集FC-28 土壤湿度模块把土壤含水量变成一个电压值
处理ESP32 + arduino-esp32 核心读 ADC、打包成 JSON
传输芯片内置 WiFi连家里路由器,不用额外买模块
存储报警onenet 云平台存数据,低于阈值时推送到你手机

流程是单向的:传感器 → ESP32 → WiFi → 云 → 手机。整条链路里你只写"读"和"发"两件事,存储和阈值判断都丢给云平台。

为什么选这颗芯片?WiFi 和蓝牙是烧在芯片里的,不用另购通信模块;GPIO 数量够同时接好几路传感器;还有深度睡眠——芯片的最低功耗状态,电流能压到几十微安,让电池撑过整个种植季。这是最典型的 ESP32 物联网应用形态。

仓库里的 arduino-esp32 核心把这些能力都封装好了:WiFi、HTTPClient、DeepSleep 的 API 直接调,不用自己啃底层。

ESP32-C3 DevKitM-1 引脚布局:接线前对照这张图确认电源、地线和 ADC 引脚

顺带说一句:核心里 ADC 是 12 位的,analogRead 返回 0~4095,实现在 cores/esp32/esp32-hal-adc.h,读数据时心里有数。

ESP32 土壤湿度传感器怎么接:电源、信号、地线

先装核心:Arduino IDE 打开板卡管理器,搜 esp32 装上,装完在菜单里选中你的开发板型号。

板卡管理器中搜索 "esp32" 并安装核心,这是后面一切的前置动作

FC-28 是最便宜的 ESP32 土壤湿度传感器,一共三根线:VCC 接 3.3V,GND 接地,AO(模拟输出)接 GPIO4。

记住三要素:电源、信号、地线。模块是 3.3V 逻辑,接到 5V 会烧;地线虚接则是大多数诡异现象的根源。

ESP32 GPIO 外设连接架构:所有传感器都通过 GPIO 矩阵汇入核心,接线前先看懂这张图

想再加一个 DS18B20 温度传感器,把它的 DATA 接到另一个 GPIO,再串一个 4.7K 上拉电阻就行。

核心逻辑:读土、发云

读的部分只有一件事:拿 ADC 原始值,换算成百分比。

float readSoilMoisture() { int raw = analogRead(SOIL_PIN); // 12 位,0~4095 return map(raw, 0, 4095, 100, 0); // 换算成百分比 }

跑起来,串口监视器里应该刷出一个 60 左右的数字,把探头从土里拔出来,数值会明显变大。⚡ 如果数字纹丝不动,先查三根线和引脚号,九成问题出在这。

发的部分是:等 WiFi 连上,把 JSON 用 HTTP POST 到 onenet。这就是 ESP32 云端报警的最后一公里。

void setup() { WiFi.begin(WIFI_SSID, WIFI_PWD); http.begin("http://api.heclouds.com/<device_id>/datapoints"); }
void loop() { String body = "{\"data\":[{\"id\":\"moisture\",\"value\":" + String(readSoilMoisture()) + "}]}"; http.sendHeader("Content-Type", "application/json"); http.POST(body); delay(60000); // 每分钟发一次 }

成功的话串口打印出状态码 200,onenet 控制台的"物数据"页面里跳出湿度值。✅

为什么只推荐 onenet?免费的"物"足够单节点演示,数据点(datapoint)概念简单,发一个 POST 就行;阈值告警在控制台里配一下,超线就推送到你手机,不用自己维护服务器。device_id 是控制台"物"页面里的那个数字,填进 setup 里即可。

设备以 Station 模式(主动连路由器的那种,反之为 AP 热点模式)连家里路由器,农业监测的标准组网方式

踩坑手册:四个高频问题

下面四个是新手第一个星期最常碰到的,都是能当场修好的小事,不用慌:

现象原因一句话修复
土壤湿度读数跳十几点接触不良或电源噪声探头线焊牢,连读 10 次取平均再发
WiFi.begin 后拿不到 IP密码错,或路由器只有 5G在 setup 里打印 WiFi.status() 和 rssi 定位
ESP32 深度睡眠后不唤醒忘了配唤醒源睡眠前调用 esp_sleep_enable_timer_wakeup,写法看 DeepSleep 文档
读数一直是 4095AO 接了没有 ADC 通道的引脚对照上面的引脚布局图换到 ADC 引脚

设备跑起来之后还有个好处:可以 OTA——不插线也能从网上给它换固件,不用再抱开发板回书桌,登录页长这样:

固件联网后可从 Web 页面升级,登录页挡一下未授权访问

延伸方向:低功耗、多节点、自动灌溉

  • 低功耗改造:加一行深度睡眠定时唤醒,每 5 分钟醒一次读一次数据,电池续航能上一个数量级,改动只在 loop 末尾。
  • 多节点组网:用仓库自带的 ESP_NOW 库 做点对点传输,田里的子节点不用各自配 WiFi,由一台基站统一收数转发。
  • ESP32 智能灌溉:加个继电器驱动电磁阀,湿度连续半小时低于阈值就自动浇水,报警系统就此变成控制系统。

接上第一根线,串口里跳出第一个数值的那一刻,这套系统就活了。

【免费下载链接】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 17:43:30

风光互补制氢合成氨系统设计与Python优化实践

1. 项目背景与核心价值风光互补制氢合成氨系统是当前新能源领域的前沿研究方向之一。这个项目标题中提到的"并/离网"系统设计&#xff0c;实际上解决了一个行业痛点&#xff1a;如何平衡可再生能源发电的间歇性与工业生产的连续性需求。我在参与某风电制氢项目时&…

作者头像 李华
网站建设 2026/9/12 17:43:28

NocoBase集成Gemini-3模型:低代码开发的AI升级

1. NocoBase集成Gemini-3模型的技术解析NocoBase作为一款开源的低代码开发平台&#xff0c;最新版本v2.0.0-alpha.64中引入了对Gemini-3模型的支持。这个更新不仅仅是简单的模型替换&#xff0c;而是对整个AI功能模块的深度优化。Gemini-3作为新一代大语言模型&#xff0c;在函…

作者头像 李华