Skip to content

PROJ-001:便携式环境监测站 + 云端数据看板

项目类型:🥇 旗舰项目(展会级) 预计周期:30 天(3 个月,考虑到调试和优化) 技术栈:C + Qt + QCustomPlot + MQTT + 驱动 难度:⭐⭐⭐⭐⭐ 状态:📋 待开始


📋 项目概述

核心亮点

驱动 + 可视化 + 云端联动,完整产品闭环,展会常驻运行极具说服力。

功能特性

  • 传感器层:自研 IIC/SPI 驱动采集温湿度、气压、陀螺仪、光照强度
  • Qt 界面:实时折线图(QCustomPlot)、仪表盘控件、历史数据表格、多页面切换
  • 网络联动:4G + MQTT 推送到云端(阿里云IoT / EMQX),配套 Web 看板实时同步显示
  • 驱动亮点:中断驱动采集、DMA传输优化、自写字符设备驱动(/dev/sensor_xxx)
  • 展会互动:观众对着传感器哈气,屏幕折线图实时波动;手机扫码看到同步数据

🛠️ 技术栈

硬件层

  • 传感器

    • 温湿度传感器:AHT10 / DHT22 / SHT30
    • 气压传感器:BMP280 / BMP388
    • 陀螺仪:MPU6050 / MPU9250
    • 光照传感器:BH1750 / TSL2561
  • 通信接口

    • IIC(温湿度、气压、光照)
    • SPI(陀螺仪,可选)

软件层

  • 驱动开发

    • Linux 字符设备驱动
    • IIC/SPI 总线驱动
    • 中断处理
    • DMA 传输
    • 设备树配置
  • Qt 应用

    • Qt Widgets
    • QCustomPlot(实时折线图)
    • Qt Serial Port(4G 模块通信)
    • Qt Network(MQTT 客户端)
  • 云端通信

    • MQTT 协议
    • 4G PPP 拨号
    • WebSocket(Web 看板实时更新)

📐 系统架构

┌─────────────────────────────────────────────────────────────┐
│                      Qt 应用层                              │
├─────────────────────────────────────────────────────────────┤
│  传感器管理  │  数据可视化  │  网络通信  │  数据存储      │
│  - 传感器驱动接口  - QCustomPlot  - MQTT  - SQLite      │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│                    Linux 内核层                             │
├─────────────────────────────────────────────────────────────┤
│  字符设备驱动  │  IIC/SPI 驱动  │  中断处理  │  DMA      │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│                      硬件层                                 │
├─────────────────────────────────────────────────────────────┤
│  AHT10  │  BMP280  │  MPU6050  │  BH1750  │  4G 模块     │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│                      云端层                                 │
├─────────────────────────────────────────────────────────────┤
│  MQTT Broker  │  数据库  │  Web 看板  │  API 接口        │
└─────────────────────────────────────────────────────────────┘

📝 开发计划

第一阶段:驱动开发(10 天)

任务

  • [ ] 编写 AHT10 温湿度传感器驱动
  • [ ] 编写 BMP280 气压传感器驱动
  • [ ] 编写 MPU6050 陀螺仪驱动
  • [ ] 编写 BH1750 光照传感器驱动
  • [ ] 创建统一的传感器字符设备接口
  • [ ] 编写设备树配置
  • [ ] 测试所有传感器

验收标准

  • 所有传感器正常工作
  • 数据读取准确
  • 中断和 DMA 正常工作
  • 设备节点:/dev/sensor_temp, /dev/sensor_humidity, etc.

第二阶段:Qt 应用开发(10 天)

任务

  • [ ] 设计 UI 界面(多页面)
  • [ ] 实现传感器数据读取
  • [ ] 实现 QCustomPlot 实时折线图
  • [ ] 实现仪表盘控件
  • [ ] 实现历史数据表格
  • [ ] 实现 SQLite 数据存储
  • [ ] 测试基本功能

验收标准

  • UI 美观易用
  • 数据实时显示
  • 折线图流畅
  • 数据存储正常

第三阶段:网络通信(5 天)

任务

  • [ ] 配置 4G PPP 拨号
  • [ ] 实现 MQTT 客户端
  • [ ] 连接阿里云 IoT / EMQX
  • [ ] 实现数据上传
  • [ ] 测试网络功能

验收标准

  • 4G 拨号成功
  • MQTT 连接成功
  • 数据上传正常
  • 断线重连机制

第四阶段:Web 看板开发(5 天)

任务

  • [ ] 设计 Web 界面
  • [ ] 实现 MQTT 订阅
  • [ ] 实现 WebSocket 实时更新
  • [ ] 实现数据可视化(ECharts)
  • [ ] 部署到云端服务器
  • [ ] 测试整体功能

验收标准

  • Web 界面美观
  • 数据实时同步
  • 支持多设备查看
  • 响应式设计

🎯 展会演示方案

互动场景

  1. 温湿度演示

    • 观众对着传感器哈气
    • 屏幕折线图实时波动
    • 手机扫码看到同步数据
  2. 气压演示

    • 用注射器改变气压
    • 屏幕显示气压变化
    • Web 看板同步显示
  3. 陀螺仪演示

    • 倾斜开发板
    • 3D 姿态实时显示
    • 观众可亲自操作
  4. 光照演示

    • 用手遮挡传感器
    • 屏幕显示光照强度变化
    • Web 看板同步显示

硬件准备

  • IMX6ULL 开发板 x 1
  • AHT10 温湿度传感器 x 1
  • BMP280 气压传感器 x 1
  • MPU6050 陀螺仪 x 1
  • BH1750 光照传感器 x 1
  • 4G 模块 x 1(可选)
  • LCD 显示屏 x 1
  • 连接线、面包板等

📊 数据流

传感器采集 → 内核驱动 → 字符设备 → Qt 应用 → MQTT → 云端 → Web 看板
    ↑                                                        ↓
    └──────────────── 观众互动 ──────────────────────────────┘

🔗 相关资源


📚 参考资料


让数据流动起来! 📊🌡️💡

Built with VitePress