树莓派mpu6050C语言,树莓派2通过I2C访问MPU6050

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

笔者最近做了一个平衡车,主要用到了STM32F10x + MPU9250 + FreeRTOS。

手边正好还有一块MPU6050的模块和树莓派2,就趁热打铁先把树莓派访问MPU6050的路走通,以便后面需要时查阅。1. 首先要启动树莓派的I2C功能

sudo mount /dev/mmcblk0p1 /mnt/

cd /mnt

sudo vim config.txt

找到下面两行

8c8590ca82d1f289b3d9715473afe0bc.png

将注释符号#删掉,如果没有上面两行则自己编辑保存。然后reboot系统。2. 安装i2c-tools

sudo apt-get install i2c-tools

顺便推荐个国内的树莓派软件源:

deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ wheezy main contrib non-free rpi

编辑/etc/apt/sources.list,注释掉官方源,添加上面那个。重新sudo apt-get update下。3. 连接MPU6050设备,并测试I2C驱动是否已经OK

接线只需要四根:电源正3.3V,Ground,SCL,SDA。

MPU6050模块上会有标志,与树莓派对齐用杜邦线接好即可。

树莓派2的IO定义如图:

3bc62fb8fcc7a7a217f0c27698cab97c.png

连接好设备后,通过命令:

i2cdetect -l

查看设备是否已正常工作。如果你的树莓派只接了MPU6050一个I2C设备,对应设备文件为:

/dev/i2c-1

d1663dd3ba58cc0a65eb72322051a8c6.png

至此I2C驱动已开启,设备工作正常,可以继续写代码访问数据了。4. 代码

Github上有个MotionSensorExample用于树莓派对MPU6050/MPU6500/MPU9150/MPU9250的I2C访问。

不过笔者clone了代码,在树莓派2上编译失败了。

有人也遇到了相同的问题并发了issue#

inv_mpu_lib/inv_mpu.c:392:2: error: expected primary-expression before ‘.’ token

截至到笔者发此文章时,作者似乎也并未修改该问题(其实就是树莓派2上安装版本的g++编译器不支持C99标准的C struct复合字面量初始化问题)。

于是笔者fock了源码,并修复了这个错误。所以这里就用我修改后的MotionSensorExample来测试吧。5. 编译&&测试

ssh或者serial登陆到树莓派2,clone笔者修改后的MotionSensorExample:

如果一切OK的,会在MotionSensorExample生成一个测试程序mstest,执行mstest观察数据读数。

64562f41af906d9769028e0becaac50c.png6. 其他

MotionSensorExample通过条件编译的方式来支持不同的MPU(6050/6500/9150/9250),只要修改位于MotionSensorExample/MotionSenso下的Makefile即可:

CXX_OPTS=-c -DMPU6050 -DMPU_DEBUGOFF -I../libs/

实际上笔者这次测试用的是MPU9250,但是如果编译时使用-DMPU9250,则编译出的程序并不能正确工作,

不过既然-DMPU6050可以拿到yaw, pitch, roll数据,暂时也就够用了。错误定位等到有时间再慢慢看吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值