参考资料

参考资料说明:

用户手册时针对电路设计者的,一般时芯片的一些电气特性和经典电路,同时,也会说明该芯片的一些测量精度。

寄存器地图是针对驱动开发者的,主要告诉开发者如何使用(控制和读取)传感器。我们把精力放在寄存器地图这个文档即可。

资料下载: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)惯性传感器开发指南的更多相关文章

  1. Beaglebone Black – 连接 GY-91 MPU9250+BMP280 九轴传感器(1)

    本篇内容为,通过 I2C 配置 GY-91 MPU9250+BMP280 里面的 MPU9250 连接 AK8963 磁感应.两个办法,1)MPU9250 设置 Master Mode 通过 AUX ...

  2. Beaglebone Black – 连接 GY-91 MPU9250+BMP280 九轴传感器(2)

    这次用 SPI.BBB 有两套 SPI 接口可用,两套都是默认 disable,需要用 overlay 方式启用,即: echo BB-SPIDEV0 > /sys/devices/bone_c ...

  3. SLAM+语音机器人DIY系列:(三)感知与大脑——2.带自校准九轴数据融合IMU惯性传感器

    摘要 在我的想象中机器人首先应该能自由的走来走去,然后应该能流利的与主人对话.朝着这个理想,我准备设计一个能自由行走,并且可以与人语音对话的机器人.实现的关键是让机器人能通过传感器感知周围环境,并通过 ...

  4. 关于《Swift开发指南》背后的那些事

    时间轴(倒叙)2014年8月底在图灵出版社的大力支持下,全球第一本全面.系统.科学的,包含本人多年经验的呕心沥血之作<Swift开发指南>(配有同步视频课程和同步练习)全线重磅推出2014 ...

  5. 《Google Glass开发指南》

    <Google Glass开发指南> 基本信息 作者: BestApp工作室 丛书名: 图灵原创 出版社:人民邮电出版社 ISBN:9787115349477 上架时间:2014-3-19 ...

  6. 玩转X-CTR100 l STM32F4 l BMP280气压计传感器

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 扩展BMP ...

  7. ASP.NET Aries 开源开发框架:开发指南(一)

    前言: 上周开源了Aries开发框架后,好多朋友都Download了源码,在运行过程里,有一些共性的问题会问到. 所以本篇打算写一下简单的开发指南,照顾一下不是太看的懂源码的同学,同时也会讲解一下框架 ...

  8. FreeMarker模板开发指南知识点梳理

    freemarker是什么? 有什么用? 怎么用? (问得好,这些都是我想知道的问题) freemarker是什么? FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生 ...

  9. Jetty使用教程(四:21-22)—Jetty开发指南

    二十一.嵌入式开发 21.1 Jetty嵌入式开发HelloWorld 本章节将提供一些教程,通过Jetty API快速开发嵌入式代码 21.1.1 下载Jetty的jar包 Jetty目前已经把所有 ...

随机推荐

  1. Excelize 2.5.0 正式发布,这些新增功能值得关注

    Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准.可以使用它来读取.写入由 Microsoft Exc ...

  2. windows10/11高性能模式开启

    大部分用户windows10和11高性能模式都被隐藏了 并且没有隐藏选项我们如何开启呢如下 win+R如下 打开运行-输入cmd进入后输入代码如下 powercfg -SETACTIVE 8c5e7f ...

  3. Linus命令

    参考: https://blog.csdn.net/weixin_44191814/article/details/120091363 vim编辑器 ## Vim基本模式 [对文件进行操作]vim 文 ...

  4. FastJson远程命令执行漏洞学习笔记

    FastJson远程命令执行漏洞学习笔记 Fastjson简介 fastjson用于将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean.fastjson.ja ...

  5. 数据结构与算法【Java】05---排序算法总结

    前言 数据 data 结构(structure)是一门 研究组织数据方式的学科,有了编程语言也就有了数据结构.学好数据结构才可以编写出更加漂亮,更加有效率的代码. 要学习好数据结构就要多多考虑如何将生 ...

  6. Java 将Excel转为UOS

    以.uos为后缀的文件,表示Uniform Office Spreadsheet文件,是一种国产的办公文件格式,该格式以统一办公格式(UOF)创建,使用XML和压缩保存电子表格.既有的Excel表格文 ...

  7. 累加和为 K 的最长子数组问题

    累加和为 K 的最长子数组问题 作者:Grey 原文地址: 博客园:累加和为 K 的最长子数组问题 CSDN:累加和为 K 的最长子数组问题 题目描述 给定一个整数组成的无序数组 arr,值可能正.可 ...

  8. vue开发组件开发中的小技巧

    声明:以下随笔由博主自主编写,也有部分引用网友的,引用部分版权归原作者所有,其他博主原创部分禁止转载.复制全部或部分用以重新发布! vue递归组件事件阻止冒泡 其实这里主要还有递归组件的自定义事件不生 ...

  9. [MRCTF2020]Ez_bypass WP

    首先打开页面 他提示说f12里面有东西,于是直接ctrl+u 查看源代码 I put something in F12 for you include 'flag.php'; $flag='MRCTF ...

  10. Latex中也能展示动态图?

    技术背景 在学术领域,很多文档是用Latex做的,甚至有很多人用Latex Beamer来做PPT演示文稿.虽然在易用性和美观等角度来说,Latex Beamer很大程度上不如PowerPoint,但 ...