跳转到内容

项目架构概览

项目架构概览

本节介绍工厂环境监测系统的整体架构设计。学习完成后,您将能够:

  • 理解工厂环境监测系统的完整架构和数据流
  • 掌握各组件在整个系统中的角色和作用
  • 清晰解释方案的部署架构
  • 快速评估环境监测需求的技术可行性

在开始本节之前,请确保:

  • 已完成 ESP32 开发基础
  • 理解 MQTT 协议的基本概念
  • 了解 Docker 和 Node-RED 的基本功能
  • 已搭建完整的软件栈环境(Mosquitto + Node-RED + InfluxDB + Grafana)

工厂环境监测是 IoT 领域最常见的应用场景之一。对于阿里巴巴国际站的买家来说,典型的场景包括:

海外采购商场景

  • 远程监控代工厂的生产车间环境(温度、湿度、光照)
  • 确保产品质量符合标准要求(例如电子元件的温湿度存储条件)
  • 获取生产环境数据用于合规报告和审计
  • 及时发现环境异常并采取预防措施

工厂管理者场景

  • 实时监测车间各区域的环境参数
  • 记录和分析环境数据以优化生产条件
  • 配置告警规则,异常时自动通知相关人员
  • 通过数据积累进行生产环境趋势分析
需求项说明优先级
温度监测测量范围 0-50°C,精度 ±0.5°C
湿度监测测量范围 0-100%RH,精度 ±3%
光照监测测量范围 0-65535 lux
数据可视化实时图表显示,历史数据查询
远程访问支持通过互联网查看数据
告警通知温湿度超阈值告警
历史存储数据留存至少 30 天
┌──────────────────────────────────────────────────────────┐
│ Grafana Dashboard │
│ (数据可视化、实时监控、告警) │
├──────────────────────────────────────────────────────────┤
│ InfluxDB 时序数据库 │
│ (数据存储、查询、聚合) │
├──────────────────────────────────────────────────────────┤
│ Node-RED 处理层 │
│ (MQTT 接收 → JSON 解析 → 数据转换 → 写入 InfluxDB) │
├──────────────────────────────────────────────────────────┤
│ Mosquitto MQTT Broker │
│ (消息路由、Topic 管理、QoS) │
├──────────────────────────────────────────────────────────┤
│ ESP32 数据采集节点 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 温度传感器 │ │ 湿度传感器 │ │ 光照传感器 │ │
│ │ (DHT22) │ │ (DHT22) │ │ (BH1750) │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└──────────────────────────────────────────────────────────┘

ESP32 采集端

  • 通过 GPIO 接口连接温湿度和光照传感器
  • 定时采集传感器数据(默认每 3 秒一次)
  • 将数据封装为 JSON 格式
  • 通过 MQTT 协议发布到 Broker
  • 支持接收 MQTT 命令(如控制风扇)

Mosquitto Broker

  • 接收 ESP32 发布的传感器数据消息
  • 将消息路由到所有订阅者(Node-RED)
  • 管理 Topic 结构,支持通配符订阅
  • 提供 QoS 保障确保消息可靠传递

Node-RED 处理层

  • 订阅 MQTT Topic 接收原始数据
  • 解析 JSON 格式的数据负载
  • 进行数据清洗和格式转换
  • 将处理后的数据写入 InfluxDB
  • 实现业务逻辑(如迟滞控制算法)
  • 触发告警通知(超阈值时)

InfluxDB 存储

  • 以时序方式存储环境数据
  • 支持高频率数据写入
  • 自动数据保留策略
  • 提供 Flux 查询语言

Grafana 展示

  • 实时数据显示图表
  • 历史趋势分析
  • 多维度数据关联展示
  • 告警规则配置和通知
步骤 1: [ESP32] DHT22 读取温度 = 26.5°C, 湿度 = 62%
步骤 2: [ESP32] BH1750 读取光照 = 450 lux
步骤 3: [ESP32] 构建 JSON: {"temperature":26.5,"humidity":62,"lux":450}
步骤 4: [ESP32] 发布 MQTT → Topic: "factory/zone1/environment"
步骤 5: [Mosquitto] 接收消息并路由给订阅者
步骤 6: [Node-RED] 订阅 Topic 接收数据
步骤 7: [Node-RED] 解析 JSON, 数据格式转换
步骤 8: [Node-RED] 检查是否超过告警阈值
步骤 9: [Node-RED] 写入 InfluxDB (measurement: "environment")
步骤 10: [Grafana] 每 5 秒查询 InfluxDB 更新仪表板
步骤 11: [Grafana] 温度超过 30°C 触发告警通知

从传感器数据采集到仪表板显示,完整链路耗时通常在 1-2 秒以内。

factory/{zone}/{sensor_type}
实际示例:
factory/zone1/environment # 包含所有环境数据
factory/zone1/temperature # 单独温度数据
factory/zone1/humidity # 单独湿度数据
factory/zone1/light # 单独光照数据
factory/control/fan # 风扇控制命令
{
"device_id": "esp32_001",
"timestamp": 1697123456,
"temperature": 26.5,
"humidity": 62.0,
"lux": 450,
"unit": {
"temperature": "celsius",
"humidity": "percent",
"lux": "lux"
}
}
组件型号数量成本估算
微控制器ESP32 DevKit1$5-8
温湿度传感器DHT22 或 BME2801$3-5
光照传感器BH17501$2-3
面包板830 孔1$2
杜邦线公对母/公对公若干$1
电源USB 5V/1A1$3-5
总计$16-24

售前提示:以上成本为原型搭建单价。批量采购时,ESP32 可降至 $3-4,传感器每颗 $1-2。完整套件(不含服务器)的成本约 $10-15/节点。

价值维度说明沟通要点
成本效益单节点硬件成本 < $25”全开源方案,无软件授权费”
快速部署1 天完成原型搭建”从零到仪表板只需数小时”
扩展灵活从 1 节点到 100+ 节点”可逐步扩展,无需更换架构”
远程监控支持互联网远程访问”买家可通过网页实时查看工厂环境”
数据留存自动数据存储和备份”历史数据可用于合规审计”

Q1: 这个方案能监测多大范围的车间? A: 单个 ESP32 节点的 WiFi 覆盖范围约 50 米(室内)。大型车间需要部署多个节点,每个节点负责一个区域,数据汇总到同一平台。

Q2: 传感器的精度够用吗? A: DHT22 精度 ±0.5°C、±2%RH,适用于一般工厂环境监测。如果需要更高精度(如实验室环境),可以升级到 BME280(±0.3°C、±1%RH)或工业级传感器。

Q3: 数据安全如何保障? A: 基础方案在局域网内运行。远程访问时可通过 TLS 加密 + VPN 保障数据传输安全。

本节介绍了工厂环境监测系统的整体架构:

  1. 系统分五层:设备层、通信层、处理层、存储层、展示层
  2. 核心数据流:ESP32 采集 → MQTT 传输 → Node-RED 处理 → InfluxDB 存储 → Grafana 展示
  3. 硬件成本低:单节点硬件成本约 $16-24,批量更低
  4. 售前价值点:成本效益、快速部署、灵活扩展、远程监控