1.项目背景

市面上低成本农用监测系统普遍功能单一,仅能机械采集、展示温湿度、土壤等原始数据,只读数、不解析、无决策,属于 “数据哑巴设备”。农户拿到一堆环境数值后,缺少专业农学知识,无法判断指标异常对作物的影响,不能确定何时浇水、通风、施肥,监测数据无法落地转化为农事动作。

同时传统设备大多依赖外接市电与固定宽带布线,农田、大棚、果园野外场景布线施工难度大、成本高,偏远地块无电网、无运营商宽带,设备难以落地部署。伴随 AI 大模型技术成熟、嵌入式硬件成本持续下行,行业缺少一款低成本、免布线离网部署,既能自动采集环境数据,又依托大模型做数据分析、自动输出落地农事方案的普惠型监测产品。

基于以上痛点,本项目打造分布式作物监测系统,填补中小农户智能化监测的市场空白,解决传统设备只采集数据、无智能分析指导的行业通病。

2.功能概述

系统实现农田环境全要素无感采集、太阳能离网免布线运行、Mesh 自组网数据传输、云端 AI 大模型智能分析;搭配 Web 管理端,农户 / 合作社可随时查看监测数据、异常告警、AI 种植建议,完成从田间数据采集到智能种植决策全闭环。适用散户、农业合作社、大棚高价值作物种植、基层农技部门。

3.硬件技术

3.1 PCB 主板

自研圆形PCB 主板集成 ,基于 ESP32-S3 主控,集成温湿度、光照、CO₂、土壤PH/水分 等多类工业传感器。

3.2 各项传感器

搭载BME280(空气温湿度与气压)与VEML7700(高精度光照)传感器,精准记录作物地上部分的微气候冷暖干湿及日照强度变化,为评估作物光合作用效率、预警极端气候(如高温干旱或霜冻)提供直接依据。采用工业级深埋式土壤探头(土壤湿度与 pH 值传感器),原位动态监测核心土层的含水量与酸碱度。精准把控根际微环境,直接指导后续的土壤改良与水肥一体化作业。气体与代谢环境感知:集成 SCD41(NDIR 红外二氧化碳)与 SGP40(VOC 空气质量)传感器,专门针对大棚等密闭设施农业场景,实时监控气肥(CO₂)浓度与有害气体积聚情况,全面保障作物呼吸代谢健康与农事人员安全。

3.3 外壳结构设计

采用自制开发的气动流道防雨百叶窗外壳结构。该外壳专为野外长期离网运行而设计,具备以下三大核心硬核特色:高防护与高透气完美兼容、光学感知与离网供电一体化顶部、极简的“即插即用”部署形态。

4.软件技术

4.1 mesh组网

相比于 Thread(线程协议)(低功耗,范围10-30米)、Zigbee(依赖网关)、蓝牙 Mesh 组网,Wi-Fi 连接具有较高的网络传输和设备间通信速率。采用 ESP32-S3-ETH 以太网网关,将 Mesh 局域网数据转为以太网信号上传云端,解决传统 Wi-Fi 双模冲突、数据拥堵问题,传输更稳定。

组网核心代码如:

mesh.setDebugMsgTypes( ERROR | STARTUP );  
mesh.init( MESH_PREFIX, MESH_PASSWORD, &userScheduler, MESH_PORT );    //初始化网格
mesh.onReceive(&receivedCallback);
userScheduler.addTask( taskSendmsg );   //将任务添加到调度程序
taskSendmsg.enable();

组网网关串口通信测试:

4.2 mqtt协议

在ESP32上使用MQTT协议,可以用的库比较多,这里选择pubsubclient ,该库可以找到的资料与 文档说明都比较详细,唯一的不足是该库只能发布QoS0的消息和订阅Qos0和Qos1的消息。

核心代码如下:

//创建一个网络客户端
WiFiClient espClient;
//创建一个完全配置的客户端
PubSubClient mqtt_client(mqtt_Server,mqtt_Port,callback,espClient);
//连接WiFi
void WiFi_connect(){
WiFi.begin(ssid, password);
unsigned long start_time = millis();
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
if ((millis() - start_time) / 1000 > connectTimeout) {
Serial.println();
Serial.println("Connection timed out.");
break;
}
}
Serial.println();
Serial.print("WIFI连接成功");                   
//连接成功提示
}
//发布消息到指定主题
void Publish(String msg){                                      
// 构造 JSON 格式,包含接收的消息内容
String dataJson = "{\"mesh_message\":\"" + msg + "\"}";
// 发布到 MQTT 服务器
mqtt_client.publish(pub_Topic, dataJson.c_str()); 
}
//连接mqtt服务器
boolean connect_MQTT(){
	if(WiFi.status() == WL_CONNECTED){                                     
		//WIFI是否连接
		if(mqtt_client.connect("mqttx_72b06547",mqtt_User,mqtt_Password)){   
		//连接服务器,如果成功
		Serial.println("连接MQTT服务器成功");                                 
		//输出连接状态
		mqtt_client.publish(pub_Topic, "ESP32已连接MQTT服务器");             //发布一个消息到主题
		//mqtt_client.subscribe(sub_Topic);                               //订阅一个主题
	}
        return mqtt_client.connected();
}

传输展示:

5.网页功能展示

Web 端面向合作社与农技管理人员:

  1. 首页总览:设备在线数量、全域实时环境指标、当日告警汇总;
  2. 数据可视化:24 小时环境变化曲线、地块温湿度热力图、土壤墒情分布图;
  3. AI 专区:大模型生成的地块农事诊断与实操种植建议;
  4. 运维管理:Mesh 网络状态、节点信号 / 电量、历史告警、设备台账管理。

界面展示:

流程演示:

Avatar photo

作者 NoseEatsPocky

发表回复