仓库名建议:
stm32-imu-host
基于 Python + PySide6 + pyserial 开发的本地串口可视化上位机,用于与 STM32 IMU 项目进行串口通信、协议识别、数据解码与后续算法验证。
当前项目已经完成基础上位机框架、串口调试助手与协议解码雏形,可作为后续 IMU 数据可视化、ZUPT/INS 实时解算、数据记录与结果分析的开发基础。
- 支持本地串口设备扫描、波特率选择与串口开关控制
- 支持 ASCII / HEX 发送与接收显示
- 支持串口来源识别,并对常见 USB 转串口设备进行高亮提示
- 支持协议自动识别、帧同步与 XOR 校验
- 支持
32B / 64B两类协议帧混合解析 - 支持
RTC / IMU_RAW / IMU_RAW_FULL / INS_POS实时解码 - 支持回报率统计与实时参数卡片展示
- 具备后续扩展实时解算、曲线绘制、数据存储的良好结构
- 串口号选择
- 波特率选择
- 串口打开 / 关闭
- 串口数据发送
- 串口数据接收显示
- HEX / 文本模式切换
- 时间戳显示
- 自动识别帧头
AA 55 - 自动判断不同命令字对应的包长
- 支持校验规则自动验证
- 识别成功后启用解码按钮
- 解码结果以文本和参数卡片两种形式展示
CMD 0x01:RTC_TIME,32 字节CMD 0x10:IMU_RAW,32 字节CMD 0x11:IMU_RAW_FULL,64 字节CMD 0x20:INS_POS,32 字节
mechine/
├─ host_app/
│ ├─ __init__.py
│ ├─ serial_tool.py # 主界面、串口控制、协议识别与解码逻辑
│ └─ serial_worker.py # 串口后台线程,负责非阻塞收发
├─ protocol/
│ ├─ imu_protocol.h # STM32 端协议定义
│ ├─ imu_protocol.c # STM32 端协议打包与格式化实现
│ └─ zupt.py # 后续 ZUPT / INS 解算测试算法
├─ run_serial_tool.py # 上位机启动入口
└─ README.md
当前上位机可以概括为以下几个层次:
-
设备通信层
STM32 IMU 通过串口发送协议帧,上位机通过pyserial与设备建立通信。 -
后台收发层
SerialWorker在独立线程中完成串口读写,避免阻塞 GUI 主线程。 -
协议处理层
包括帧缓存、帧头同步、包长判断、命令识别与 XOR 校验,并将有效数据包送入解码器。 -
界面展示层
基于PySide6构建,负责串口配置、发送控制、接收显示、协议解码控制、实时参数卡片与状态栏展示。 -
后续算法扩展层
未来将接入zupt.py、实时 INS 解算、轨迹显示、数据保存与离线分析等功能。
推荐使用 Anaconda 创建独立环境,并统一使用 conda-forge 安装依赖。
conda create -n imu_host_clean -c conda-forge -y ^
python=3.11 ^
pyside6 pyserial pyserial-asyncio ^
numpy scipy numba pandas h5py pyyaml ^
pyqtgraph matplotlib ^
pytest black isort ruff loguru filterpy transforms3d激活环境:
conda activate imu_host_clean在项目根目录下执行:
python run_serial_tool.py- 选择串口
- 选择波特率
- 刷新端口
- 打开 / 关闭串口
- 协议解码控制
- 发送区
- 接收区
- 解码结果区
- 实时参数卡片
- 串口连接状态
- 最近时间窗内的回报率统计
- 帧头:
0xAA 0x55 - 字节序:小端
- 校验方式:XOR
RTC_TIME (0x01):checksum = XOR(0..8),校验位位于byte[9]IMU_RAW (0x10):checksum = XOR(0..30),校验位位于byte[31]IMU_RAW_FULL (0x11):checksum = XOR(0..62),校验位位于byte[63]INS_POS (0x20):checksum = XOR(0..30),校验位位于byte[31]
RTC_TIME:时间同步信息IMU_RAW:加速度、角速度 z、航向角、气压IMU_RAW_FULL:完整加速度、三轴角速度、姿态角、气压INS_POS:位置与速度信息
- 接入
zupt.py,实现实时 ZUPT/INS 解算 - 增加实时曲线绘图与轨迹显示
- 增加原始数据保存、CSV 导出与回放
- 增加协议发送模板与参数配置面板
- 增加更完整的异常处理、日志系统与测试用例
- 推荐在 VS Code 中运行本项目,当前环境下 PyCharm 可能存在 Qt 运行时兼容问题
- 建议尽量避免
pip + conda混装 Qt 相关依赖 - 若串口无法打开,请先检查串口占用、驱动状态与 USB 转串口芯片识别情况
当前仓库未单独声明许可证。如需开源发布,建议补充 LICENSE 文件。