GY91(MPU9250 + BMP280)惯性传感器开发指南
参考资料
参考资料说明:
用户手册时针对电路设计者的,一般时芯片的一些电气特性和经典电路,同时,也会说明该芯片的一些测量精度。
寄存器地图是针对驱动开发者的,主要告诉开发者如何使用(控制和读取)传感器。我们把精力放在寄存器地图这个文档即可。
资料下载:PDF
I2C
MPU9250 是由两个模块(MPU6500+AK8963)组合而成。其中MPU6500可以测量加速度和角加速度(6轴)。AK8963可以测量各个方向磁场数据(3轴)。一共是9轴。
MPU6500的I2C地址为0x68。
BMP280的I2C地址为0x76。
使用树莓派4B可以用以下指令查询:
sudo i2cdetect -y 1
# 查询数据 最后一个1的含义指的是树莓派的第二个i2c总线,第一个为0
sudo i2cdump -y 1 0x68
# 后面跟一个地址可查询对应的数据,查询Register Map可以知其具体含义。
设备ID
MPU6500的设备ID是** 0x70**。地址为0x75。
BMP设备ID是0x58,ID地址为0xD0。


可以根据ID判断传感器是否正确连接。
关键数据读取
说明:在读取数据之前,还需要对传感器进行一些参数设定,这个部分可以参考Register Map的提示设定。(比如电源模式,测量精度,FIFO模式等)
MPU6500:读取加速度数据&换算单位
查询手册,找到关键数据的寄存器地址,如下图:

可以知道,测量的数据的起始地址是0x3B,分别是ax, ay, az, gx, gy, gz。每一个数据是16位,也就是2个字节,总测量数据长度是12个字节。在终端中,读取数据如下

利用树莓派的smbus库,可以编写如下代码片段
def readAccel(self): # 这里以读取加速度为例,角加速度同理
data = bus.read_i2c_block_data(self.address, ACCEL_OUT, 6) # 读取六个字节
# 这里读取的数据的格式是补码,可以从手册里查询到。
x = self.dataConv(data[1], data[0]) # 这里需要按照高位数据在高位的规则左位运算,补码
y = self.dataConv(data[3], data[2]) # 同上
z = self.dataConv(data[5], data[4]) # 同上
x = round(x*self.ares, 3) # 单位换算&四舍五入
y = round(y*self.ares, 3) # 同上
z = round(z*self.ares, 3) # 同上
**这里的单位换算需要根据测量精度乘以对应数值。**这个地方可以这样理解,传感器就像一把尺子,有单位长度(即测量的最小长度)和量程。一把尺子的刻度的数量是固定的,这里的传感器的刻度数量同样固定,不同的是传感器的单位长度是可调整的,根据 单位长度x刻度数量 =量程。 当单位长度变大时,量程也随之变大,但是测量精度会随之下降。反之,量程变小,测量精度提升。
具体代码实现如下:(这里的2G,4G,8G,16G是量程,32768是正刻度数量。)
if afs == AFS_2G: self.ares = 2.0/32768.0
elif afs == AFS_4G: self.ares = 4.0/32768.0
elif afs == AFS_8G: self.ares = 8.0/32768.0
else: #afs == AFS_16G:
self.ares = 16.0/32768.0
BMP280: 读取温度和气压信息 & 单位换算
具体同上。这里列举一些关键信息如下:

各个数据段含义:


测量精度控制:

具体换算实例

推荐库
(可直接使用或者少量修改可用)
Arduino: https://github.com/thejmart/GY_91-.git
Python: https://github.com/qi-xmu/FaBo9AXIS-MPU9250-Python.git 说明:这个库是克隆别人的,使用的是python2,同时只有MPU9250的代码。可以等我的后期更新。
C/C++: https://github.com/ricardozago/GY91-MPU9250-BMP280.git
GY91(MPU9250 + BMP280)惯性传感器开发指南的更多相关文章
- Beaglebone Black – 连接 GY-91 MPU9250+BMP280 九轴传感器(1)
本篇内容为,通过 I2C 配置 GY-91 MPU9250+BMP280 里面的 MPU9250 连接 AK8963 磁感应.两个办法,1)MPU9250 设置 Master Mode 通过 AUX ...
- Beaglebone Black – 连接 GY-91 MPU9250+BMP280 九轴传感器(2)
这次用 SPI.BBB 有两套 SPI 接口可用,两套都是默认 disable,需要用 overlay 方式启用,即: echo BB-SPIDEV0 > /sys/devices/bone_c ...
- SLAM+语音机器人DIY系列:(三)感知与大脑——2.带自校准九轴数据融合IMU惯性传感器
摘要 在我的想象中机器人首先应该能自由的走来走去,然后应该能流利的与主人对话.朝着这个理想,我准备设计一个能自由行走,并且可以与人语音对话的机器人.实现的关键是让机器人能通过传感器感知周围环境,并通过 ...
- 关于《Swift开发指南》背后的那些事
时间轴(倒叙)2014年8月底在图灵出版社的大力支持下,全球第一本全面.系统.科学的,包含本人多年经验的呕心沥血之作<Swift开发指南>(配有同步视频课程和同步练习)全线重磅推出2014 ...
- 《Google Glass开发指南》
<Google Glass开发指南> 基本信息 作者: BestApp工作室 丛书名: 图灵原创 出版社:人民邮电出版社 ISBN:9787115349477 上架时间:2014-3-19 ...
- 玩转X-CTR100 l STM32F4 l BMP280气压计传感器
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 扩展BMP ...
- ASP.NET Aries 开源开发框架:开发指南(一)
前言: 上周开源了Aries开发框架后,好多朋友都Download了源码,在运行过程里,有一些共性的问题会问到. 所以本篇打算写一下简单的开发指南,照顾一下不是太看的懂源码的同学,同时也会讲解一下框架 ...
- FreeMarker模板开发指南知识点梳理
freemarker是什么? 有什么用? 怎么用? (问得好,这些都是我想知道的问题) freemarker是什么? FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生 ...
- Jetty使用教程(四:21-22)—Jetty开发指南
二十一.嵌入式开发 21.1 Jetty嵌入式开发HelloWorld 本章节将提供一些教程,通过Jetty API快速开发嵌入式代码 21.1.1 下载Jetty的jar包 Jetty目前已经把所有 ...
随机推荐
- Silk语言-中国人自己的开源编程语言
什么是Silk Silk语言是一门完全独立自主开发的跨平台动态类型编程语言,绝非"木兰"等套壳语言. Silk简单易学,30分钟即可掌握全部语法,让你像Python一样简单地写C/ ...
- mybatispluys-Mapper CRUD 接口
Mapper CRUD 接口 通用 CRUD 封装BaseMapper (opens new window)接口,为 Mybatis-Plus 启动时自动解析实体表关系映射转换为 Mybatis 内部 ...
- 【2022知乎爬虫】我用Python爬虫爬了2300多条知乎评论!
您好,我是 @马哥python说,一枚10年程序猿. 一.爬取目标 前些天我分享过一篇微博的爬虫: https://www.cnblogs.com/mashukui/p/16414027.html 但 ...
- rh358 002 fact变量获取 ansible配置网络 service_facts
通过ansible 获取网络信息 1.如何获取fact事实变量 方式1: ansible servera -m servera 方式2: 剧本 [root@workstation ansible]# ...
- SpringMVC 06: 日期类型的变量的注入和显示
日期处理和日期显示 日期处理 此时SpringMVC的项目配置和SpringMVC博客集中(指SpringMVC 02)配置相同 日期处理分为单个日期处理和类中全局日期处理 单个日期处理: 使用@Da ...
- 数据库基础操作 part1
初识数据库 数据库相关概念 数据库管理软件: 本质就是一个C/S架构的套接字程序 服务端套接字 客户端套接字 操作系统: Linux 操作系统: 随意 计算机(本地文件) 计算机硬件 应用流程: 服务 ...
- 【读书笔记】C#高级编程 第十章 集合
(一)概述 数组的大小是固定的.如果元素个数是动态的,就应使用集合类. List<T>是与数组相当的集合类.还有其它类型的集合:队列.栈.链表.字典和集. (二)列表 1.创建列表 调用默 ...
- nginx中 location正则的理解
文章转载自:https://blog.csdn.net/wzj_110/article/details/110142902 正则表达式在线测试工具:https://tool.lu/regex loca ...
- vue基础之MV*和它们之间的不同
vue中的设计思想 vue中的设计思想主要是MV*模式,由最早的MVC(model-view-controller)框架,到后面的MVP(model-view-presenter),甚至到最后的MVV ...
- 努力一周,开源一个超好用的接口Mock工具——Msw-Tools
作为一名前端开发,是不是总有这样的体验:基础功能逻辑和页面UI开发很快速,本来可以提前完成,但是接口数据联调很费劲,耗时又耗力,有时为了保证进度还不得不加加班. 为了摆脱这种痛苦,经过一周的努力,从零 ...