玩转树莓派

    返回首页    发表留言
本文作者:李德强
          第八节 电子陀螺仪
 
 

        接下来我们再来看一个关键性的芯片MPU-6050,这是一个陀螺仪,可以感知3维空间里x、y、z三个维度测量加速度和3轴旋转速度。对于3维加速度我们目前还用不到,当然,如果你要对四轴做自稳算法时就需要用到它了。我们只对3轴的旋转角速度做处理。我们知道对旋转角速度的积分即时角度(当然这时所说的积分是狭义上的定积分)。      

        我们再来看一下MPU6050与树莓派的接线方式:

 

        1) 陀螺仪VCC接树莓派3.3V DC Power

        2) 陀螺仪GND接树莓派Ground

        3) 陀螺仪SCL树莓派SCL

        4) 陀螺仪SDA树莓派SDA

        接线完成后,启动树莓派,MPU6050会有红灯亮起。另外还要对树莓派的系统做一些设置:

        1)修改/boot/config.txt文件,去掉下面3行的注释

dtparam=i2c_arm=on
dtparam=i2s=on
dtparam=spi=on

        2) 修改/etc/modules文件,追加以下内容

i2c-bcm2708
i2c-dev

        3) 修改/etc/modprobe.d/raspi-blacklist.conf将下面两行内容删除或用#注释掉

修改前:
blacklist spi-bcm2708
blacklist i2c-bcm2708
修改后:
#blacklist spi-bcm2708
#blacklist i2c-bcm2708

        4) 安装i2c-tools工具

sudo apt-get install i2c-tools libi2c-dev


        5) 重启树莓派:

sudo reboot -n

        之后使用以下命令查看设备是否正常:

sudo i2cdetect -y 1

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --


        可以看到在0x68上有一个设备,就是MPU6050陀螺仪。同时可以使用以下命令看看/dev/下是否有i2c设备:

ls /dev

i2c-1

        我们使用树莓派的MPU6050开源驱动,可以直接取得旋转角:

https://github.com/richardghirst/PiBits.git

        此驱动是用C++编写的,下载后编译运行即可。

 

[-0.11001 -0.29976 -0.013939]
[-0.11001 -0.29976 -0.013939]
[-0.11001 -0.29976 -0.013939]
[-0.10981 -0.30104 -0.014503]
[-0.10981 -0.30104 -0.014503]
[-0.10981 -0.30104 -0.014503]
[-0.10961 -0.30205 -0.015050]
[-0.10961 -0.30217 -0.015057]
[-0.10961 -0.30217 -0.015057]
[-0.10951 -0.30295 -0.015734]
    返回首页    返回顶部
#1楼  匿名  于 2016年11月22日04:37:26 发表
 
这个PiBits.git,如果pi的版本比较高,i2c-1,原文说需要改一个参数。将*.sh中的i2c-0改为i2c-1,以及在I2Cdev.cpp中所有的i2c-0改为i2c-1
#2楼  匿名  于 2016年11月22日09:40:36 发表
 
感谢您的支持!飞控程序中已经将i2c设备文件修改为一个宏定义,位置在mods/mpu6050/i2cdev.h中的第6行#define I2C_DEV"/dev/i2c-1"中定义。如需修改,请按实际 的文件名来修改此处定义,修改后需要重新编译程序。
#3楼  匿名  于 2017年07月05日22:04:22 发表
 
请问作者,这个程序怎么编译运行啊,就是过程。
#4楼  李德强  于 2017年07月06日06:33:57 发表
 
首先下载源代码

git clone https://github.com/richardghirst/PiBits.git

然后进入到MPU6050-Pi-Demo中,执行make即可

注意:我提到的编译环境和运行环境均为Linux操作系统

#5楼  jack  于 2017年12月17日18:07:15 发表
 
6050的采样频率是多少?
#6楼  No39  于 2017年12月17日19:42:20 发表
 
您好,我在树莓派上编译MPU6050-Pi-Demo时出错,显示

g++ -DDMP_FIFO_RATE=9 -Wall -g -O2 `pkg-config gtkmm-3.0 --cflags --libs` -c -o main_3d.o main_3d.cpp

Package gtkmm-3.0 was not found in the pkg-config search path.

Perhaps you should add the directory containing `gtkmm-3.0.pc'

to the PKG_CONFIG_PATH environment variable

No package 'gtkmm-3.0' found

In file included from main_3d.cpp:19:0:

demo_3d.h:22:31: fatal error: gtkmm/drawingarea.h: No such file or directory

#include

^

compilation terminated.

: recipe for target 'main_3d.o' failed

make: *** [main_3d.o] Error 1

#6楼  匿名  于 2017年12月17日19:42:20 发表
 
支持问渠网
#7楼  李德强  于 2017年12月18日09:36:05 发表
 
缺少依赖包,在树莓派上执行sudo apt-get install libgtk-3-dev
#8楼  No39  于 2017年12月19日21:02:00 发表
 
您好,安装libgtk-3-dev时依赖项不能依赖起,存在broken packages,在网上搜到是包依赖的一些依赖项需要降级,但降级怎么也解决不了。请问您当时是怎么安装的?还是在电脑端LINUX编译MPU6050-Pi-Demo比较好?
#9楼  No39  于 2017年12月19日23:00:15 发表
 
对不起是我粗心大意了,在更换下载源后libgtk-3-dev安装成功,不过缺少的应该是libgtkmm-3.0,执行sudo apt-get install libgtkmm-3.0后以管理员身份make就能编译成功了。
#10楼  李德强  于 2017年12月20日09:43:27 发表
 
MPU6050的频率是100hz
#11楼  123  于 2018年05月16日19:27:54 发表
 
怎么运行了?
#12楼  匿名  于 2018年09月16日19:07:16 发表
 
支持问渠网
#13楼  gui3315  于 2018年09月16日19:09:24 发表
 
树莓派2B运行 陀螺仪读取模块 报错 FIFO overflow!

飞行模式也报错 FIFO overflow!

求解? 急用,急用,急用
#14楼  李德强  于 2018年09月26日12:00:41 发表
 
可能是元件问题,我之前也有这问题,换一个就可以了
  看不清?点击刷新

 

  Copyright © 2015-2018 问渠网 辽ICP备15013245号