入手一块MPU9250九轴姿态传感器,来折腾看看。九轴具体是指加速度、陀螺仪、 磁场构成九轴姿态跟踪运动,用在航模、机器人、VR等场景,引用一张invensense的图:
芯片实物图如下,该芯片支持i2c总线协议,本次用树莓派i2c接口来驱动。
先来连接模块,接线时只用到上面4针,VCC GND SCL SDA,分别对应树莓派的物理1 9 5 3引脚,接好后上电。
SSH到树莓派,配置树莓派接口,打开i2c, 接口enable即可。
然后在控制台上安装i2c相关工具:
安装python库,smbus
安装好后,先来检测一下设备。看到设备地址0x68,并尝试读取下设备id ,返回 0x71,设备正常工作。
dump下数据:
MPU9250 自带三轴磁力计 AK8963,而且AK8963的i2c地址就在 0x0c,但是上面探测没有发现AK8963,根据手册,这里要开启旁路模式即可:
self.address 是设备地址 0x68,INT_PIN_CFG 是寄存器地址0x37,具体见代码,设置后再次探测,发现AK8963的地址0x0c
这次代码没自己写,芯片的各种设置没完全搞明白,从http://fabo.io/202.html这里找到了一份驱动代码,上述页面末尾有github地址,稍作修改上传到了:
https://github.com/Cat-31/Cat31Driver/blob/master/device/MPU9250.py
测试代码:
https://github.com/Cat-31/Cat31Driver/blob/master/device/MPU9250Test.py
运行结果如下:
数据貌似挺正常的。以上简单记录驱动过程,各种协议、原理等网络上已经很多优秀的帖子,不在赘述。
领取专属 10元无门槛券
私享最新 技术干货