智能农业物联网系统:传感器+云平台+小程序完整方案
2026/8/10 9:01:17 网站建设 项目流程

智能农业不是噱头

提起智慧农业,很多人第一反应是"又是PPT技术"。但实际上,农业物联网是落地最实在的领域之一。原因很简单:农业生产天然需要环境数据——温湿度、土壤水分、光照、CO2浓度。这些数据靠人工去量不现实,靠传感器自动采集才是唯一方案。

这篇文章拆解一套从传感器到云平台到手机APP的完整方案,不讲概念只讲实现。

整体架构

[传感器节点] --LoRa--> [网关] --4G--> [云平台] --HTTP--> [手机APP/小程序] | [电池供电,户外部署]

为什么用LoRa而不是WiFi或蓝牙?

  • WiFi功耗大,户外没有电源,电池撑不住
  • 蓝牙距离太短,农田面积大
  • LoRa传输距离2-5公里,穿透性好,功耗低,一节电池跑半年

传感器节点设计

硬件清单

器件型号价格用途
MCUSTM32L4328元低功耗主控
LoRa模组SX127815元远距离通信
温湿度SHT306元空气温湿度
土壤水分电容式传感器12元土壤含水量
光照BH17503元光照强度
电池18650 3.7V/3000mAh10元电源
太阳能板5V/1W8元辅助充电
PCB+外壳-15元-
总计~77元

一个节点77元,一亩地放3-5个节点,硬件成本200-400元。

低功耗设计

STM32L432的STOP模式功耗约1.2uA。轮询策略:

  • 每10分钟采集一次传感器数据
  • 采集完成→LoRa发送→进入STOP模式
  • RTC定时唤醒
// 采集和上报流程voidloop(){// 1. 唤醒,初始化传感器sht30_init();soil_sensor_init();bh1750_init();// 2. 采集数据floattemp=sht30_read_temp();floathumi=sht30_read_humi();floatsoil=soil_read();uint16_tlux=bh1750_read();// 3. 构建数据包uint8_tpacket[16];pack_data(packet,temp,humi,soil,lux);// 4. LoRa发送lora_send(packet,16);// 5. 关闭传感器电源sensor_power_off();// 6. 进入STOP模式,10分钟后唤醒HAL_RTCEx_SetWakeUpTimer(&hrtc,600,RTC_WAKEUPCLOCK_RTCCLK_DIV2);HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);// 唤醒后重新初始化时钟SystemClock_Config();}

实测功耗:

  • 采集+发送:约40mA,持续2秒
  • STOP模式:1.2uA,持续598秒
  • 平均功耗:(40mA2 + 0.0012mA598) / 600 = 0.134mA

3000mAh电池理论续航:3000 / 0.134 = 22388小时 ≈ 932天

加上太阳能板辅助充电,基本不需要维护。实际部署中考虑温度影响和电池老化,保守估计续航1年以上。

LoRa通信

节点端发送

// lora_node.c#include"sx1278.h"#defineNODE_ID0x01#defineGATEWAY_ID0x00voidlora_send_data(floattemp,floathumi,floatsoil,uint16_tlux){uint8_tpacket[16];packet[0]=GATEWAY_ID;// 目标地址(网关)packet[1]=NODE_ID;// 源地址packet[2]=0x01;// 数据类型:传感器数据// 浮点转int16(x100)int16_ttemp_i=(int16_t)(temp*100);int16_thumi_i=(int16_t)(humi*100);int16_tsoil_i=(int16_t)(soil*100);memcpy(&packet[3],&temp_i,2);memcpy(&packet[5],&humi_i,2);memcpy(&packet[7],&soil_i,2);memcpy(&packet[9],&lux,2);// CRC校验uint16_tcrc=crc16(packet,11);memcpy(&packet[11],&crc,2);SX1278_Send(packet,13);}

网关端接收

网关用ESP32 + SX1278,收到LoRa数据后通过4G转发到云平台:

# gateway.py - ESP32 MicroPythonfromsx127ximportSX1278importurequests,time lora=SX1278(spi_id=1,pin_ss=5,pin_dio0=4)lora.init(freq=433,bw=125,sf=12,cr=8,sync=0x34)MQTT_TOPIC="farm/sensor/{}/data"CLOUD_API="http://your-server/api/sensor/data"whileTrue:iflora.received():packet=lora.read()iflen(packet)>=13:node_id=packet[1]temp=int.from_bytes(packet[3:5],'little')/100.0humi=int.from_bytes(packet[5:7],'little')/100.0soil=int.from_bytes(packet[7:9],'little')/100.0lux=int.from_bytes(packet[9:11],'little')# 转发到云平台data={"node_id":node_id,"temp":temp,"humi":humi,"soil":soil,"lux":lux,"ts":int(time.time())}try:urequests.post(CLOUD_API,json=data,timeout=10)except:# 网络断了,存本地cache.append(data)# 定时补传缓存ifcacheandnetwork_ok:foritemincache:try:urequests.post(CLOUD_API,json=item,timeout=10)cache.remove(item)except:breaktime.sleep(0.1)

云平台

云平台用FastBee或ThingsBoard都可以。这里以自建PHP后端为例:

数据接收接口

<?php// api/sensor/data.phpheader('Content-Type: application/json');$data=json_decode(file_get_contents('php://input'),true);if(!$data){http_response_code(400);echojson_encode(['error'=>'Invalid data']);exit;}// 存入数据库$pdo=newPDO('mysql:host=localhost;dbname=farm_iot','root','password');$stmt=$pdo->prepare(" INSERT INTO sensor_data (node_id, temperature, humidity, soil_moisture, light, timestamp) VALUES (:node_id, :temp, :humi, :soil, :lux, FROM_UNIXTIME(:ts)) ");$stmt->execute($data);// 检查告警规则check_alerts($data);echojson_encode(['status'=>'ok']);

告警规则

functioncheck_alerts($data){// 温度告警if($data['temp']>35||$data['temp']<5){send_alert($data['node_id'],'温度异常',$data['temp']);}// 土壤干旱if($data['soil']<20){send_alert($data['node_id'],'土壤干旱',$data['soil']);}}functionsend_alert($node_id,$type,$value){// 存入告警表// 推送微信/短信通知$msg="节点{$node_id}{$type}:{$value}";// 调用推送接口...}

手机端

用微信小程序最省事,不需要下载APP:

// pages/index/index.jsPage({data:{nodes:[]},onLoad(){this.loadData()setInterval(()=>this.loadData(),30000)},loadData(){wx.request({url:'https://your-server/api/sensor/latest',success:(res)=>{this.setData({nodes:res.data})}})}})

界面就一个列表,每个节点显示温湿度、土壤水分、光照,颜色标记异常值。30秒刷新一次。

实际部署经验

虎王科技在河北某农场部署的方案:

指标数值
面积50亩(蔬菜大棚)
传感器节点20个
网关1个(大棚中心位置)
通信距离最远节点400米
数据完整率97.5%(2.5%丢包,主要是LoRa干扰)
节点续航平均8个月(冬季太阳能效率低)
月流量约30MB(4G网关)
总硬件成本~2000元

农民最关心的数据是土壤水分。系统上线后,浇水决策从"凭经验"变成"看数据",用水量减少约20%。

踩坑记录

坑1:LoRa同频干扰

多个节点同时发送会冲突。解决:给每个节点加随机延迟(0-2秒),错开发送时间。

坑2:土壤传感器腐蚀

电容式土壤传感器插在土里,3个月后探头腐蚀。解决:选镀金探头的型号,或者用覆膜式传感器。

坑3:大棚内LoRa信号衰减

蔬菜大棚的金属骨架和塑料膜会削弱LoRa信号。实测穿透2个大棚后信号衰减约10dB。解决:网关放在大棚外面,或者每个大棚放一个中继节点。

总结

智能农业物联网方案的核心链路:传感器→MCU→LoRa→网关→4G→云平台→小程序。每个环节的技术选型都直接影响成本和可靠性。

关键原则:

  • 节点越省电越好(STOP模式+太阳能)
  • 通信越简单越好(LoRa+CRC,不要搞复杂协议)
  • 平台越轻量越好(PHP+MySQL够用,不要过度设计)

虎王科技在农业物联网方向有完整方案和落地经验,欢迎交流合作。


沧州虎王科技,专注物联网软硬件开发、通信设备、嵌入式系统与设备管理平台。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询