stm32cubemx配置mpu6050——10分钟0基础到灵活使用

news2024/9/19 10:34:45

stm32cubemx配置mpu6050——10分钟0基础到灵活使用

10分钟速通!你没看错,就是10min,从0基础到灵活运用mpu6050。

不信?往下看看就会:嗷~原来如此

第一步

下载github开源代码。

https://github.com/leech001/MPU6050

首先声明,此代码不是本人所写,为某俄罗斯大佬提供。

如果你访问不了github不用担心,我在文章最后附上下载下来的文件

第二步

软件

根据github开源项目的Readme内容,进行工程配置:

  1. 开启i2c

  2. 将下载下来的.c和.h文件加入到工程内。(有运用mpu6050需求的同学,应该这部都会知道怎么做吧?

  3. 在需要调用mpu6050接口的地方,包含mpu6050.h就可以。此处和项目作者一样,在“第三步”中以在main.c调用为例举例说明。

硬件

接下来我将手摸手带大家连接电路

单片机引脚6050引脚
3.3VVCC3.3V供电
GNDGND
B10SCLI2C时钟
B11SDAI2C数据
GNDAD0AD0为6050地址控制引脚,接地就可以

IMG_20230504_131803

第三步

代码配置

包含mpu6050.h头文件

/ * USER CODE BEGIN Includes * /
#include "mpu6050.h"
/ * USER CODE END Includes * /

定义mpu6050结构体

/ * USER CODE BEGIN PV * /
MPU6050_t MPU6050;
/ * USER CODE END PV * /

在main函数开头,初始化mpu6050

/ * USER CODE BEGIN 2 * /

while (MPU6050_Init(&hi2c1) == 1);

/ * USER CODE END 2 * /

调用MPU6050_Read_All函数,读取所有参数

/ * USER CODE BEGIN WHILE * /
while (1)
{
/ * USER CODE END WHILE * /

/ * USER CODE BEGIN 3 * /
  MPU6050_Read_All(&hi2c1, &MPU6050);
  HAL_Delay (100);
}
/ * USER CODE END 3 * /

那么问题来了,我如何访问这些参数呢?比如读取z轴加速度。

这就要看mpu6050.h里面的MPU6050_t结构体了。

typedef struct
{

    int16_t Accel_X_RAW;	// 原始数值,忽略
    int16_t Accel_Y_RAW;
    int16_t Accel_Z_RAW;
    double Ax;				// x方向加速度,单位为重力加速度g (也就是9.8)
    double Ay;				// y方向加速度
    double Az;				// z方向加速度

    int16_t Gyro_X_RAW;
    int16_t Gyro_Y_RAW;
    int16_t Gyro_Z_RAW;
    double Gx;				// x方向陀螺仪加速度		
    double Gy;				// y方向陀螺仪加速度
    double Gz;				// z方向陀螺仪加速度

    float Temperature;		// 温度

    double KalmanAngleX; 	// 卡尔曼滤波过后的角度
    double KalmanAngleY; 	// 卡尔曼滤波过后的角度
} MPU6050_t;

那么如何访问z轴加速度呢?

a = MPU6050.Az;

除了一口气读取所有参数的MPU6050_Read_All函数,作者还提供了其他的函数,总有一款适合你。详细请参见mpu6050.h

函数名作用
MPU6050_Read_All读取所有参数
MPU6050_Read_Accel读取加速度参数
MPU6050_Read_Gyro读取陀螺仪数据
MPU6050_Read_Temp读取温度

示例代码

main函数前

#include "mpu6050.h"

MPU6050_t MPU6050;

main函数内

while (MPU6050_Init(&hi2c2) == 1)
    ;
// 读取所有参数
MPU6050_Read_All(&hi2c2, &MPU6050);
printf("加速度 x:%.2f \t y:%.2f \t z:%.2f\n",MPU6050.Ax,MPU6050.Ay,MPU6050.Az);
printf("陀螺仪 x:%.2f \t y:%.2f \t z:%.2f\n",MPU6050.Gx,MPU6050.Gy,MPU6050.Gz);
printf("温度 %.2f\n",MPU6050.Temperature);

// 读取加速度
MPU6050_Read_Accel(&hi2c2, &MPU6050);
printf("只更新加速度 x:%.2f \t y:%.2f \t z:%.2f\n",MPU6050.Ax,MPU6050.Ay,MPU6050.Az);

// 读取陀螺仪
MPU6050_Read_Gyro(&hi2c2, &MPU6050);
printf("只更新陀螺仪 x:%.2f \t y:%.2f \t z:%.2f\n",MPU6050.Gx,MPU6050.Gy,MPU6050.Gz);

// 读取温度
MPU6050_Read_Temp(&hi2c2, &MPU6050);
printf("只更新温度 %.2f\n",MPU6050.Temperature);

image-20230504143901947

下面解读加速度参数含义

加速度:加速度计可以测量物体在三维空间中的加速度,单位通常是m/s²。MPU6050能够在三个轴上分别测量出物体的加速度。当物体处于静止状态时,加速度计会受到重力作用而显示一个9.8m/s²的常数值。当物体发生运动时,加速度计会显示物体在各轴上的加速度变化。

此处桌上平放着mpu6050,因此测出来xy方向加速度几乎为0,z方有一个g的重力加速度,也就是9.8m/s²。(显示1.12而不是1,是因为我没有真正放水平)

什么还是不懂?好吧,真拿你没办法,我建立了一个简单工程,以供参考使用。就在文末的文件里面。

未若头发因风起

此文旨在最快的使用出来mpu6050,极具功利性,说真的我并不喜欢这样的速通,他剥夺了一步步征服mpu6050模块所带来的畅快和成就,以及通过阅读数据手册来掌握模块的能力。

如果根据本博客顺利调试出来mpu6050,笔者希望你能明白自己并没有真正掌握mpu6050,它的通信时许、寄存器配置等对你来说,都是不明所以的,这些都要读者根据数据手册和他人的教程逐个攻破。戒骄戒躁!

配套资源,0积分免费下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/489173.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从零开始学习Linux运维,成为IT领域翘楚(六)

文章目录 🔥Linux磁盘管理🔥Linux挂载硬盘🔥Linux系统状态检测命令🔥Linux下载软件安装的命令 🔥Linux磁盘管理 分区的方式 🐟 MBR分区表:每块硬盘最大支持2.1TB硬盘,每块硬盘最多支…

《编程思维与实践》1042.字串变换

《编程思维与实践》1042.字串变换 题目 思路 分两步解决: 1.判断是否可以通过两种变换使所有的字符串变得相同; 2.在能变换的前提下使变换的次数最少。 其中第一步可以将每个字符串的基底(将连续重复出现的字符视为一个字符)求出来, 如: aaabbb的基底就…

28《Protein Actions Principles and Modeling》-《蛋白质作用原理和建模》中文分享

《Protein Actions Principles and Modeling》-《蛋白质作用原理和建模》 本人能力有限,如果错误欢迎批评指正。 第七章:Proteins Evolve (蛋白进化) 蛋白质分子可以通过生物进化而发生改变。随着生物体的进化,它们…

Haproxy集群

引言 Haproxy 是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。 一、Haproxy简介 1、Haproxy应用分析 LVS在企业中康复在能力很强,但存在不足: LVS不支持正则处理&…

Java编程中的20种常见异常及其原因,你知道多少

本文介绍了在Java编程中可能遇到的20种常见异常,包括空指针异常、类未找到异常、数组下标越界异常等,并简要解释了每种异常发生的原因。这些异常可能由于编程错误、运行时资源不足或权限受限等多种原因触发,了解它们有助于更高效地进行程序调…

Crowdsoure的简单介绍

一、什么是Crowdsoure 在美国《连线》杂志2006年的6月刊上,记者Jeff Howe首次提出了Crowdsoure(众包)的概念。众包是一个框架,它将大量分散的人群聚集在一起,收集数据,解决问题,或应对挑战。它…

55、RK3588使用MPP编码yuv到h264、解码h264到yuv模块开发和测试

基本思想:需要使用独立模块代码去实现自己的逻辑功能,所以在基于官方源码基础上,和参考附录几个官方链接,搞出一版rk3588编码测试和解码测试demo 测试视频/生成h264/生成yuv 链接: https://pan.baidu.com/s/1HbpeqMJb8HcgFpzaKh…

JavaScript:字符串

文章目录 字符串344. 反转字符串reverse() 方法(打基础的时候,不要太迷恋库函数)代码及思路 541. 反转字符串 IIJavaScript String split() 方法JavaScript Array join() 方法代码分析见注释 剑指 Offer 05. 替换空格思路注意:上面…

计算机模式识别有哪些SCI期刊推荐? - 易智编译EaseEditing

计算机模式识别是指利用计算机技术,识别、分析和理解图像、声音、文本等各种模式的能力。以下是一些推荐的SCI期刊: IEEE Transactions on Pattern Analysis and Machine Intelligence IEEE Transactions on Pattern Analysis and Machine Intelligence …

OpenGL学习日志之模板测试

模板测试(Stencil Test)出现原因 深度测试更多是为了解决如何区分物体前后遮挡关系,从而选择丢弃片段的测试。而模板测试,是通过设置片元模板缓冲区模板值和引用模板值,再按照我们设定的运算函数来丢弃某些片段&#…

HTB-Brainfuck

HTB-Brainfuck 信息收集443端口https://sup3rs3cr3t.brainfuck.htb/https://brainfuck.htb/和www.brainfuck.htb 立足读取root.txt内容oresits -> root 信息收集 443端口 查看对应证书。 从证书中能获得 Email Address: orestisbrainfuck.htbCommon Name&#…

解决echarts 在缩放中模糊的问题

echarts 在缩放中模糊的问题 参考:缩放带来的echarts模糊 1、echarts.init(dom,null,{ renderer : svg }); 2、echarts.init(chart,null, { devicePixelRatio: 2 });问题:在使用dom-to-image插件截图的情况下: 1、使用方式一 { renderer : …

Jetson Nano emmc版本系统镜像备份和烧录

一、镜像备份 1.将待复制的jetson设备进入恢复模式,用数据线连接jetson设备和主机。 对于原厂开发板将FC_REC引脚与GND短接,通过micro-usb到usb数据线连接到电脑。 在电脑的ubuntu通过lsusb命令查看需要备份的设备是否已经接入&#xff0c…

vue3.x + vite4.3构建属于自己的组件库并发布npm包

在国内的项目研发过程中,使用vue框架的项目占比很大,同样延伸出了很多非常优秀的UI组件库,比如element-plus、ant-design等;优势:资源较少,快速开发,丰富的API,阅读性、性能优化更好…

医疗实验室信息管理系统源码(云LIS)

云LIS系统源码是一种医疗实验室信息管理系统,提供全面的实验室信息管理解决方案。它的主要功能包括样本管理、检测流程管理、报告管理、质量控制、数据分析和仪器管理等。 云LIS源码技术说明: 技术架构:Asp.NET CORE 3.1 MVC SQLserver Re…

Spring:使用注解进行Spring开发(@Component、@Configuration、@ComponentScan、@Autowired等)

Component、Configuration、ComponentScan、Autowired、Scope、Value、Resource、Bean、Qualifier、PropertySource等注解 1. 注解和配置文件applicationContext.xml配合使用 现在有一个接口类Book3Dao、和其实现类Book3DaoImpl,利用注解和配置文件在测试类上调用其…

【Linux网络】网络应用层的 http 和 https协议

文章目录 1、http协议1.1 认识URL1.2 http协议格式1.3 http的方法(GET和POST)1.4 状态码1.5 cookie1.6 短连接和长连接 2、https协议2.1 常见的加密方式2.2 探究https协议的加密2.3 CA证书 1、http协议 在之前学习序列化和反序列化的时候,认…

Linux 之 vi 文本编辑器(二)

1、文本编辑器简介 Linux 中最常用的文本编辑器: vi:类 Unix 系统中默认的文本编辑器 vim:vi 编辑器的增强版本,习惯上也称 vi vi 文本编辑器的作用和特性: vi 可以执行插入、删除、查找、替换等众多文本操作&…

网络计算模式复习(四)

MapReduce MapReduce分布式处理技术、分布式的文件系统GFS、结构化的BigTable存储系统是Google的三个核心技术。 Map-Reduce:用于大规模数据集的并行计算。 (分而治之)将要执行的问题拆解成Map(映射)和Reduce&#x…

SpringBoot整合FreeMarker

一、FreeMarker简述 在线文档:http://freemarker.foofun.cn/ FreeMarker 也是一款模板引擎技术,它是一种基于模板和要改变的数据,并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。当然…