一、准备工作

主芯片采用是安信可科技的ESF-12F模组(内置ESP8266芯片),使用GPIO模拟I2C驱动MPU6050,i2c驱动部分可直接参考官方例程中的i2c_master.c文件,(附件提供)亲测没问题。注意点:明确MPU6050的从设备地址,可根据设计的硬件引脚AD0接电平来取值,AD0接GND,slave_addr为0x68,AD0接3.3v,slave_addr为0x68。

DMP库(MPU6050自带的数字运动处理器)具体介绍就不啰嗦了,就是MPU6050可以将原始六轴数据直接换算除四元数从而计算除欧拉角,得到yaw,roll,pitch。DMP库源代码原本是在MSP430芯片上做的,这里我们可以移植过来。(附件提供),这里直接使用正点原子MPU6050例程中移植到STM32F4系列上的DMP库(重命名eMPL)进行修改适配ESP-12F。DMP库中mpu_dmp_init初始化中对MPU6050重新配置,注意点:原本为0x68,需不需要更改根据你的i2c写函数。

主要修改的文件有inv_mpu_dmp_motion_driver.c,inv_mpu_dmp_motion_driver.h,inv_mpu.c,inv_mpu.h这几个文件,独立的文件需要自己配置Makefile,这里就不说明,可自行操作。

二、移植修改

从inv_mpu_dmp_motion_driver.c改起,inv_mpu_dmp_motion_driver.h不用更改.

inv_mpu_dmp_motion_driver.c修改点:

1、右边的user_main.h都包含了所需的头文件,根据自己项目头文件名称自己#include。

2、更改对应宏定义函数名。

然后是inv_mpu.c以及inv_mpu.h,

inv_mpu.c修改点:

1、跟上面的文件修改项一样,替换头文件,不过注意的是STM32系列上支持#include<math.h>数学函数处理,而ESP-12F本身不具有该功能,需要自己实现用到的数学函数。

2、同样是替换对应函数的宏定义。

3、在mpu_dmp_init(void)函数处理过程,配置MPU6050参数,以及加载dmp固件所需要的处理时间较久,我的工程文件是在NONOS-SDK-3.0.0版本下,默认是开启软硬看门狗,底层设计者为了系统的稳定性,以应对多冲突的操作环境。这里不进行看门狗操作操作的话,由于该函数运行时间久会触发到软件看门狗复位(有软件+硬件看门狗的情况下,一个程序段如果运行时间超过 1600 ms,即有可能会触发软件看门狗复位,若超过 3200 ms 则一定会触发复位),所以需要引入system_soft_wdt_stop(),system_soft_wdt_restart()搭配来使用防止还没执行完成就触发看门狗。

4、mpu_dmp_get_data(float *pitch,float *roll,float *yaw)函数中也用到看门狗操作,以及上面提到的自写数学函数(附件提供)

inv_mpu.h修改点:

1、替换包含一些uint8,uint16等定义头文件。

截至,关于DMP库的移植部分都修改完毕,开始准备使用了。

三、调用使用

1、调用MPU6050的初始化配置,以及dmp库使用初始化。

2、 调用读取MPU6050六轴原始数据,以及姿态解算数据。注意点:如下框图,如果只读取一次mpu_dmp_get_data(&pitch,&roll,&yaw)会返回-2,原因在于FIFO溢出,使用循环读取得以解决,在STM32上一次读取即可。

四、结尾总结

以上操作步骤主要是点明几个关键点,一些添加DMP库文件等细碎操作不作说明,可自行百度,望理解。以上移植到ESP-12F上使用正常,可正确解算出三轴的姿态角,由于工程应用不属于高精度领域,所以不对数据再进行数据优化处理。如有高人发现错误务必批评指正,留言告知。

最后留一张MPU6050放置静止时解算出的数值,yaw会有偏移属于正常现象,需要辅助矫正。

上述附件文件下载地址:

官方DMP库资料:https://download.csdn.net/download/guohengsheng3882/11215101

自写数学处理函数:https://download.csdn.net/download/guohengsheng3882/11215115

ESP-12F驱动MUP6050以及DMP移植:https://download.csdn.net/download/guohengsheng3882/11215120

测试DEMO工程:https://download.csdn.net/download/guohengsheng3882/12330600

ESP-12F驱动MPU6050使用DMP库姿态解算相关推荐

  1. android 陀螺仪滤波_Arduino MPU6050陀螺仪运用卡尔曼滤波姿态解算实验

    Arduino MPU6050陀螺仪运用卡尔曼滤波姿态解算实验 版权声明:本文为博主原创文章,未经博主允许不得转载. 2019年3月20日 发布 实例效果 输出效果: 首先看看本例程XYZ轴的输出效果 ...

  2. android 陀螺仪滤波_Arduino+mpu6050陀螺仪运用卡尔曼滤波姿态解算实验

    MPU6050六轴陀螺仪 作用于四轴无人机,平衡车,机器人等等的电子实作当中,用于姿态判断,掌握了可以发挥自己的想象完成更多更有趣的作品. 本例程输出XYZ的角度,正负90度. 运用卡尔曼滤波算法解算 ...

  3. Arduino uno + mpu6050 陀螺仪 运用卡尔曼滤波姿态解算实验

    MPU6050六轴陀螺仪 作用于四轴无人机,平衡车,机器人等等的电子实作当中,用于姿态判断,掌握了可以发挥自己的想象完成更多更有趣的作品. 本例程输出XYZ的角度,正负90度. 运用卡尔曼滤波算法解算 ...

  4. RT-Thread实战笔记|MPU6050使用详解及DMP姿态解算

    小伙伴们大家好,好久不更新RT-Thread实战笔记啦,今天来搞一搞MPU6050,话不多说,淦! 本章源码获取 欢迎文末留言区或者公众号后台回复"MPU6050"即可获取本教程源 ...

  5. 四旋翼无人机飞控系统设计(姿态解算)

    姿态解算   姿态传感器读出加速度和角速度,而对一个系统的自动控制往往需要更加上层和贴近应用的的一个属性:角度.所以需要通过加速度和角速度进行数据融合转化得到姿态角度.   以MPU6050为例,姿态 ...

  6. 【51单片机快速入门指南】4.3.1: MPU6050调用DMP库获取四元数和欧拉角

    目录 相关介绍 DMP库相关 DMP加载步骤: DMP设置数据写入 更新DMP DMP数据包结构 程序实现 DMP.c DMP.h 测试程序 四元数 实验现象 欧拉角的获取 普中51-单核-A2 ST ...

  7. 六轴加速度传感器MPU6050官方DMP库到瑞萨RL78/G13的移植

    2015年的电赛已经结束了.赛前接到器件清单的时候,看到带防护圈的多旋翼飞行器赫然在列,又给了一个瑞萨RL78/G13的MCU,于是自然联想到13年的电赛,觉得多半是拿RL78/G13做四旋翼的主控, ...

  8. STM32入门笔记(02):MPU6050、MPU9250、ICM20948及姿态解算(SPL库函数版)

    目录 MPU6050 什么是MPU6050? MPU6050的特点 MPU6050框图 MPU6050初始化 MPU6050寄存器 电源管理寄存器1(0X6B) 陀螺仪配置寄存器(0X1B) 加速度传 ...

  9. 从MPU6050了解姿态解算

    前言 最近正在学习和陀螺仪有关的知识,要将陀螺仪用到期末大作业中,代码还处在调试阶段,目前先总结一下学到的理论知识,学习资料来源 三维转动的四元数表述 - 中国知网 (cnki.net) MPU605 ...

最新文章

  1. 域名删除时间及whois状态说明
  2. 渗透各行各业,这家RPA外企宣布全面进军中国市场
  3. Multi-Task Learning的几篇综述文章
  4. AI:2020年6月23日北京智源大会演讲分享之AI创业专题论坛——10:00-10:30张亚勤教授《智能产业新浪潮》
  5. SAP RFC通信模式
  6. python逻辑题_这道逻辑题 用 Python 代码 如何实现?
  7. iOS 深拷贝和浅拷贝
  8. (转)SystemProcessesAndThreadsInformation
  9. 陈艳青(为奥运冠军名字作诗)
  10. zookeeper分布式锁原理及实现
  11. PHP开源CMS介绍
  12. 【NOIP2016】魔法阵(节选自冬雪_狂舞_桀骜-xmy的博客)
  13. 小丑改造计划之复习一
  14. 计算机二级考试Python考试内容大纲,二级考试还是很简单的
  15. Web前端HTML+CSS全套(1~20)
  16. 如何取得UnityHub内旧版本Unity下载链接
  17. MTK屏蔽谷歌服务报错对话框KK
  18. 喂,你要多吃点含乳酸菌的食品
  19. 基于3D CNN的深度学习卫星图像土地覆盖分类
  20. Artetxe2018CoNLL_Uncovering divergent linguistic information in word embeddings...

热门文章

  1. 做短视频的必备工具和素材网,一部手机就能做,稳定收益200多
  2. ImageMagick高级教程整理
  3. wxPython 初体验之AliceVsMonster
  4. 小程序集成vant组件
  5. linux启动Webnet命令,在发布.netCore WebApi服务并在Linux上部署(一)
  6. 6月27日服务器例行维护公告,6月27日服务器维护公告
  7. 众昂矿业深度绑定磷酸铁锂材料
  8. 部门管理系统_2020年营销管理工作日常管理系统——推荐4S店各个管理部门使用...
  9. java 获取电脑唯一编码_java获取页面编码
  10. 有线无线网络准入解决方案有哪些?