STM32F1与STM32CubeIDE综合实例MPU6050数据3D可视化基于Python
STM32F1与STM32CubeIDE综合实例-MPU6050数据3D可视化(基于Python)
MPU6050数据3D可视化(基于Python)
MPU-6050™ 部件是一款针对智能手机、平板电脑和可穿戴传感器的低功耗、低成本和高性能要求而设计的运动跟踪设备。
MPU-6050 集成了 InvenSense 的 MotionFusion™ 和运行时校准固件,使制造商能够消除在运动支持产品中分立器件的昂贵和复杂的选择、鉴定和系统级集成,确保传感器融合算法和校准程序提供最佳的为消费者提供性能。
MPU-6050 器件在同一硅芯片上结合了 3 轴陀螺仪和 3 轴加速度计,以及处理复杂 6 轴 MotionFusion 算法的板载 Digital Motion Processor™ (DMP™)。该器件可以通过辅助主 I²C 总线访问外部磁力计或其他传感器,从而使器件无需系统处理器干预即可收集全套传感器数据。
本次实例将实现MPU6050采集的3轴加速计数据在Python中显示3D动画效果。
1、硬件准备
- STM32F103VE开发板一块
- MPU6050传感器一块
- 面包板一块
- 杜邦线若干
- TTL转USB数据线一条
- PC电脑一台
关于STM32CubeIDE工程创建、配置请参考前面文章:
- STM32F1与STM32CubeIDE快速入门-开发环境搭建
- STM32F1与STM32CubeIDE快速入门-GPIO概述与点亮LED
- STM32F1与STM32CubeIDE快速入门-USART/UART串口通信
- STM32F1与STM32CubeIDE快速入门-I2C概述
本次MPU-6050的配置如下:

2、软件准备
Python开发环境安装:
- 下载并安装Anaconda:https://www.anaconda.com/products/distribution
- 下载并安装Python开发IDE,本次选择PyChram:https://www.jetbrains.com/pycharm/
Python依赖库:
pip install pygame
pip install pyserial
pip install PyOpenGL PyOpenGL_accelerate
3、MPU6050驱动实现及数据格式传输定义
关于MPU6050的驱动,在这里就再做介绍了,前的文章已经做了详细的说明,请参考:
MPU6050的驱动实现后,需要将数据通过上传给PC机,因此有必要简单定义一下数据的传输格式。定义如下:
| 位1 | 位2 | 位3 | 位4 | 位5 | 位6 | 位7 | 位8 | 位9 |
|---|---|---|---|---|---|---|---|---|
| ‘$’ | X轴数据低位 | X轴数据高位 | Y轴数据低位 | Y轴数据高位 | Z轴数据低位 | Z轴数据高位 | ‘\r’ | ‘\n’ |
在前面MPU6050驱动的STM32CubeIDE工程中,将main.c的代码更改如下:
1 | int main(void) { |
4、Python数据可视化
Python将MPU6050采集到的数据可视化的主要步骤如下:
- 1)通过OpenGL构造一个长方体
- 2)打开串口,读取并解析MPU6050数据
- 3)将MPU6050的数据,转换为X、Y、Z三轴方向的旋转角度
- 4)将MPU6050的旋转角度应用到长方体中
第一步:导入Python依赖库
1 | import pygame |
第二步,定义MPU和串口
1 | class PortSettings: |
第三步,创建串口选择窗口
1 | def RunAppliction(): |
第四步,初始化PyGame和OpenGL
1 | def InitPygame(): |
第五步,打开串口,解析数据
1 | def SerialConnection(): |
第六步,主程序入口
1 | def main(): |
运行结果如下:

文章来源: https://iotsmart.blog.csdn.net/article/details/125888199