使用IOTGW-NUC100十分钟搭建智慧农业大棚监控系统

应用场景

现代农业生产中,大棚环境监控是保障产量和品质的关键。传统方案依赖人工巡检或昂贵的工业SCADA系统。本文介绍如何使用 IOTGW-NUC100 物联网网关,配合 NodeRed 可视化编排,零代码 搭建一套完整的智慧农业大棚监控系统。

系统架构

┌─────────────────────────────────────────────────────────────┐
│                        云平台                                │
│   ┌──────────┐  ┌──────────┐  ┌──────────┐               │
│   │ 数据大屏  │  │ 告警通知  │  │ 历史存储  │               │
│   └────┬─────┘  └────┬─────┘  └────┬─────┘               │
│        │              │              │                      │
│   ┌────┴──────────────┴──────────────┴─────┐               │
│   │              MQTT Broker               │               │
│   └────┬───────────────────────────────────┘               │
└────────┼───────────────────────────────────────────────────┘
         │ MQTT
┌────────┼───────────────────────────────────────────────────┐
│ 边缘层 │  IOTGW-NUC100                                     │
│        │  ┌──────────────────────────────────────┐        │
│        │  │         NodeRed 流程编排               │        │
│        │  │  ┌────┐  ┌────┐  ┌────┐  ┌────┐   │        │
│        │  │  │采集│→ │阈值│→ │告警│→ │上报│   │        │
│        │  │  └────┘  └────┘  └────┘  └────┘   │        │
│        │  └──────────────────────────────────────┘        │
│        └────────────┬─────────────────────┘               │
└─────────────────────┼─────────────────────────────────────┘
                      │ RS485 (Modbus-RTU)
┌─────────────────────┼─────────────────────────────────────┐
│ 感知层 │   ┌─────────┼─────────┐                           │
│        │   ▼         ▼         ▼                           │
│   ┌────┴───┐  ┌────┴───┐  ┌────┴───┐                       │
│   │温湿度传感器│  │CO2传感器│  │土壤EC传感器│                 │
│   └─────────┘  └─────────┘  └─────────┘                       │
└─────────────────────────────────────────────────────────────┘

硬件准备

设备型号数量说明
物联网网关IOTGW-NUC1001台边缘计算核心
温湿度传感器SHT201-4个Modbus-RTU接口
CO2传感器MH-Z19B1个uart接口
土壤EC传感器EC-51-2个模拟输出
继电器模块4路继电器1个控制风机/喷雾
电源DC 12V 2A1个供电
RS485总线RVVP 2x0.75若干传感器接线

接线说明

IOTGW-NUC100 接口定义

                    ┌─────────────┐
                    │  IOTGW-NUC  │
    RS485 A ◄───────┤ A           │
    RS485 B ◄───────┤ B           │
                    │ GND    12V+ │◄── DC 12V
                    │            │◄── USB-C 供电
    继电器 IN1 ◄────┤ GPIO1      │
    继电器 IN2 ◄────┤ GPIO2      │
                    │            │
    LAN ◄───────────┤ Ethernet   │
                    └─────────────┘

传感器接线

温湿度传感器(SHT20)接线:

网关 RS485-A ◄───► 传感器 A
网关 RS485-B ◄───► 传感器 B
网关 12V+   ◄───► 传感器 DC+
网关 GND    ◄───► 传感器 DC-

NodeRed流程配置

登录NodeRed

  1. 浏览器访问 http://192.168.88.1:1880
  2. 首次登录设置用户名密码

创建数据采集流程

步骤1:添加Modbus读取节点

  1. 从左侧节点栏拖入「modbus read」节点
  2. 双击配置:
名称:读取温湿度
单位ID:1
功能码:Read Holding Registers (3)
地址:0
数量:2
轮询间隔:10秒

步骤2:添加数据解析节点

拖入「function」节点,编写解析脚本:

// 假设温湿度传感器寄存器0=温度×10,寄存器1=湿度×10
var temperature = msg.payload[0] / 10;
var humidity = msg.payload[1] / 10;

return {
    payload: {
        device: "greenhouse_01",
        timestamp: new Date().toISOString(),
        temperature: temperature,
        humidity: humidity,
        unit: "celsius"
    }
};

步骤3:添加阈值判断节点

拖入「switch」节点配置告警规则:

温度 > 35°C → 发送告警
温度 < 10°C → 发送告警
湿度 > 85% → 发送告警
湿度 < 40% → 发送告警

步骤4:添加邮件告警节点

拖入「email」节点:

SMTP服务器:smtp.qq.com
端口:465
用户:your-email@qq.com
密码:your-auth-code
发件人:your-email@qq.com
收件人:farmer@example.com
主题:温室告警:{{payload.device}}

步骤5:添加MQTT上报节点

拖入「mqtt out」节点:

服务器:broker.example.com:1883
客户端ID:greenhouse_001
主题:farm/greenhouse_01/sensors
QoS:1

完整流程图

[Modbus Read] → [解析函数] → [Switch阈值] ─┬─→ [Email告警]

                   ┌─→ [Dashboard图表]    │
                   │                       ├─→ [MQTT上报]
                   └─→ [Debug调试] ───────┘

数据大屏配置

启用NodeRed Dashboard

  1. 节点栏安装 node-red-dashboard
  2. 创建仪表板布局

添加温湿度曲线图

拖入「chart」节点到Dashboard:

标签:温室温度曲线
类型:折线图
X轴:时间(最近1小时)
Y轴:温度(°C)
刷新间隔:10秒

添加实时数值显示

拖入「gauge」节点:

标签:当前温度
范围:0-50
单位:°C
颜色:蓝→绿→红(根据阈值)

自动化控制配置

温度过高自动开启风机

添加控制流程:

[温度读取] → [判断 > 32°C] → [开启继电器1] → [等待温度 < 28°C] → [关闭继电器1]

实现方式:

  1. 拖入「switch」节点判断温度
  2. 拖入「rpi-gpio out」控制GPIO输出
  3. 拖入「trigger」节点实现延时关闭

土壤干燥自动喷雾

[土壤EC值读取] → [判断 < 30%] → [开启继电器2喷淋30秒] → [关闭继电器2]

云平台对接

阿里云IoT平台

  1. 创建产品和设备
  2. 获取 ProductKey、DeviceName、DeviceSecret
  3. 在NodeRed中使用MQTT节点配置:
服务器:${ProductKey}.iot-as-mqtt.cn-shanghai.aliyuncs.com:1883
客户端ID:${deviceId}|securemode=3,signmethod=hmacsha1|
用户名:${deviceName}
密码:${sign}

数据格式转换

使用function节点转换为JSON格式:

msg.payload = {
    id: new Date().getTime(),
    params: {
        temperature: { value: msg.temperature, desc: "温度" },
        humidity: { value: msg.humidity, desc: "湿度" }
    },
    method: "thing.event.property.post"
};
return msg;

部署与调试

本地调试

  1. 点击右上角「部署」按钮
  2. 观察Debug面板输出
  3. 检查Modbus通信是否正常

常见问题排查

问题可能原因解决方案
读不到数据波特率不匹配检查传感器设置,默认9600
数据跳变RS485干扰使用屏蔽双绞线
继电器不动作GPIO电平错误检查共地连接

查看日志

通过SSH连接网关查看系统日志:

ssh root@192.168.88.1
journalctl -u node-red -f

成本估算

组件单价(元)数量小计
IOTGW-NUC1008991899
温湿度传感器1204480
CO2传感器1801180
4路继电器65165
电源/线材1001100
合计1724

总结

使用IOTGW-NUC100搭建智慧农业大棚的优势:

  • 零代码开发:NodeRed拖拽配置,无需编程基础
  • 本地边缘计算:数据采集、告警、控制均可离线运行
  • 多协议支持:Modbus/ MQTT/ HTTP全支持
  • 远程运维:ZeroTier组网,浏览器远程管理
  • 低成本方案:全套设备不到2000元