Skip to content

jun-chy/Qt-SmartDashboard

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Qt-SmartDashboard - 智能仪表盘监控系统

C++ Qt CMake License Cross Platform

项目介绍

Qt-SmartDashboard 是一个基于 Qt5 的工控风格智能仪表盘监控软件,用于实时监控和显示 STM32 设备上报的传感器数据。软件支持串口通信、实时曲线图表、自定义仪表盘控件、数据记录与回放等功能,适用于工业自动化、环境监测、设备调试等场景。

功能特性

  • 串口通信管理:自动扫描可用串口,支持波特率/数据位/停止位/校验位配置
  • 实时数据解析:支持 JSON 格式数据帧,带帧头检测和 CRC 校验
  • 自定义仪表盘控件:QPainter 手绘弧形仪表,渐变色进度条、刻度线、数值动画
  • 实时波形图表:4 通道实时滚动曲线(温度/湿度/光照/气压),自动 Y 轴缩放
  • 状态面板:卡片式传感器值显示,连接状态指示灯
  • 数据记录与回放:按天生成 CSV 文件,支持带时间戳记录和回放控制
  • 工控风格 UI:Catppuccin 深色主题,工业监控 HMI 风格

支持的传感器数据

传感器 字段 单位 范围
温度 T °C -40 ~ 85
湿度 H %RH 0 ~ 100
光照 L Lux 0 ~ 65535
气压 P hPa 300 ~ 1100

数据协议

STM32 上报 JSON 数据帧格式:

{"T":25.3,"H":65.2,"L":450,"P":1013.25,"ts":123456}

帧结构:[0xAA][0x55][JSON数据][CRC16][0x0D][0x0A]


技术架构

Qt-SmartDashboard/
├── CMakeLists.txt          # CMake 构建脚本
├── README.md               # 项目文档
├── .gitignore              # Git 忽略规则
├── include/                # 头文件目录
│   ├── mainwindow.h        # 主窗口
│   ├── serial_port_manager.h  # 串口管理器
│   ├── data_parser.h       # 数据协议解析器
│   ├── gauge_widget.h      # 自定义仪表盘控件
│   ├── wave_chart_widget.h # 自定义波形图控件
│   ├── status_panel.h      # 状态面板控件
│   └── data_logger.h      # 数据记录器
├── src/                    # 源文件目录
│   ├── main.cpp            # 程序入口
│   ├── mainwindow.cpp      # 主窗口实现
│   ├── serial_port_manager.cpp  # 串口管理器实现
│   ├── data_parser.cpp     # 协议解析器实现
│   ├── gauge_widget.cpp    # 仪表盘控件实现
│   ├── wave_chart_widget.cpp    # 波形图控件实现
│   ├── status_panel.cpp    # 状态面板实现
│   └── data_logger.cpp     # 数据记录器实现
└── resources/              # 资源文件目录
    ├── style.qss           # 工控风格深色主题样式表
    └── icons.qrc           # Qt 资源文件

模块依赖关系

MainWindow
 ├── SerialPortManager  ──→ DataParser
 ├── GaugeWidget        (×4: 温度/湿度/光照/气压)
 ├── WaveChartWidget    (4通道实时曲线)
 ├── StatusPanel        (状态指示卡片)
 └── DataLogger         (CSV 记录/回放)

技术栈

  • 语言: C++11/14
  • 框架: Qt 5.12+
  • 模块: Core, Widgets, SerialPort, Charts
  • 构建: CMake 3.14+
  • 样式: QSS (Catppuccin 深色主题)

构建方法

前提条件

  1. 安装 Qt 5.12 或更高版本(需包含 SerialPort 模块)
  2. 安装 CMake 3.14 或更高版本
  3. 支持的编译器:
    • Windows: MSVC 2015+ 或 MinGW
    • Linux: GCC 5+
    • macOS: Clang

构建步骤

Windows (MSVC)

# 配置 Qt 环境变量
set CMAKE_PREFIX_PATH=C:/Qt/5.15.2/msvc2019_64

# 创建构建目录
mkdir build && cd build

# 生成项目
cmake .. -G "Visual Studio 16 2019" -A x64

# 编译
cmake --build . --config Release

Windows (MinGW)

set CMAKE_PREFIX_PATH=C:/Qt/5.15.2/mingw81_64
mkdir build && cd build
cmake .. -G "MinGW Makefiles"
cmake --build .

Linux

export CMAKE_PREFIX_PATH=/opt/Qt/5.15.2/gcc_64
mkdir build && cd build
cmake ..
make -j$(nproc)

Qt Creator 构建

  1. 打开 Qt Creator
  2. 选择 "打开文件或项目",选择 CMakeLists.txt
  3. 配置构建套件 (Kit)
  4. 点击 "构建" → "构建项目"

使用说明

1. 连接设备

  1. 通过 USB 串口线连接 STM32 设备
  2. 在菜单栏选择 "设置" → "串口配置"
  3. 选择正确的 COM 端口和波特率(默认 115200)
  4. 点击 "连接" 按钮

2. 实时监控

  • 仪表盘显示各传感器当前值,弧形进度条随数值变化
  • 波形图实时滚动显示 4 通道数据变化趋势
  • 状态面板以卡片形式显示当前传感器读数

3. 数据记录

  • 连接后自动开始数据记录
  • CSV 文件按日期保存在 logs/ 目录
  • 文件名格式:sensor_data_YYYYMMDD.csv

4. 数据回放

  1. 在菜单栏选择 "工具" → "数据回放"
  2. 选择要回放的 CSV 文件
  3. 使用播放控制(播放/暂停/停止/速度调节)

5. 快捷键

快捷键 功能
F5 连接/断开串口
F6 开始/停止记录
F7 清除波形数据
Ctrl+O 打开回放文件
Ctrl+Q 退出程序

STM32 端参考

STM32 端需要按照以下协议格式上报数据:

// 数据帧格式
// [0xAA][0x55][JSON字符串][CRC16低字节][CRC16高字节][0x0D][0x0A]

// 示例代码(基于 HAL 库)
void SendSensorData(float temp, float humi, uint16_t light, float pressure) {
    char json_buf[128];
    int len = snprintf(json_buf, sizeof(json_buf),
        "{\"T\":%.1f,\"H\":%.1f,\"L\":%u,\"P\":%.2f,\"ts\":%lu}",
        temp, humi, light, pressure, HAL_GetTick());

    uint8_t frame[256];
    uint16_t idx = 0;

    // 帧头
    frame[idx++] = 0xAA;
    frame[idx++] = 0x55;

    // JSON数据
    memcpy(&frame[idx], json_buf, len);
    idx += len;

    // CRC16校验
    uint16_t crc = CRC16_Calc(&frame[2], len);
    frame[idx++] = crc & 0xFF;
    frame[idx++] = (crc >> 8) & 0xFF;

    // 帧尾
    frame[idx++] = 0x0D;
    frame[idx++] = 0x0A;

    HAL_UART_Transmit(&huart1, frame, idx, 100);
}

许可证

MIT License

作者

蔡浩宇 (Cai Haoyu) · GitHub

About

Qt5 Smart Dashboard for Embedded Device Monitoring - Real-time charts, serial communication, industrial HMI style UI

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors