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 界面美观
- 数据实时同步
- 支持多设备查看
- 响应式设计
🎯 展会演示方案
互动场景
温湿度演示:
- 观众对着传感器哈气
- 屏幕折线图实时波动
- 手机扫码看到同步数据
气压演示:
- 用注射器改变气压
- 屏幕显示气压变化
- Web 看板同步显示
陀螺仪演示:
- 倾斜开发板
- 3D 姿态实时显示
- 观众可亲自操作
光照演示:
- 用手遮挡传感器
- 屏幕显示光照强度变化
- 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 看板
↑ ↓
└──────────────── 观众互动 ──────────────────────────────┘🔗 相关资源
- QCustomPlot 文档:https://www.qcustomplot.com/
- MQTT 协议:http://mqtt.org/
- 阿里云 IoT:https://www.aliyun.com/product/iot
- EMQX:https://www.emqx.io/
📚 参考资料
让数据流动起来! 📊🌡️💡