• Stars
    star
    136
  • Rank 267,670 (Top 6 %)
  • Language
    C
  • Created over 10 years ago
  • Updated over 10 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

MPU6050/MPU6500/MPU9150/MPU9250 over I2c for RaspberryPi
MotionSensorExample
===================

MPU6050/MPU6500/MPU9150/MPU9250 over I2c for RaspberryPi using official Invensense libraries (v5.1):
http://www.invensense.com/developers/index.php?_r=downloads


This is a sample program for testing your MPU Motion Sensor with Rasperry Pi.
It does all the initialization and gathers:
- gyro
- accel
- quaternion
- compass (for MPU9XXX)
- temperature

and calculates Yaw, Pitch, Roll in degrees which in turn is displayed as an output.


**Wiring**
I2C uses only2 wires for data transmission: SCL and SDA
RPi pin 3 -> MPU SDA
RPi pin 5 -> MPU SCL


You will also need to provide power (3.3V) to your MPU. You can use external power or hook it up with RPi.
For example:
RPi pin 1 (3.3V) -> MPU VCC
RPi pin 6 (Ground) -> MPU GND


**Compilation:**
On RPi, edit MotionSensor/Makefile and adjust CXX_OPTS to specify your board (-DMPU6050 for MPU6050, -DMPU9150 for MPU9150), issue make


**Cross compiling:**
Edit all Makefiles in all directories and adjust CXX. Issue make


**Running:**
  make sure you have i2c_dev module loaded (modprobe i2c_dev)
  run mstest
  
*Output:*
Initializing I2C devices...
Testing device connections...
MPU6050 connection successful
Initializing DMP...
Enabling DMP...
DMP ready!
Initializing IMU...
Checking... Done.
IMU init done; offset values are :
yaw = -0.169205, pitch = -1.301078, roll = -1.168776

yaw = -0.174            pitch = 1.325           roll = -1.219   t = 20.24       1       0       0
yaw = -0.179            pitch = 1.350           roll = -1.267   t = 20.22       2       0       0
yaw = -0.185            pitch = 1.372           roll = -1.314   t = 20.23       3       0       0
yaw = -0.190            pitch = 1.395           roll = -1.361   t = 20.21       4       0       0
yaw = -0.195            pitch = 1.418           roll = -1.410   t = 20.23       5       0       0
yaw = -0.201            pitch = 1.441           roll = -1.454   t = 20.23       6       0       0
yaw = -0.206            pitch = 1.465           roll = -1.498   t = 20.23       7       0       0
yaw = -0.211            pitch = 1.485           roll = -1.545   t = 20.23       8       0       0
yaw = -0.216            pitch = 1.506           roll = -1.587   t = 20.23       9       0       0

....

**Additional info:**
Current setup is to run at 40Hz, this can be adjusted in the ms_open function, however note that your code will need to read the values with respective speed or quicker. Otherwise the MPU fifo buffer will overflown.

To read MPU see ms_update - it calls 'dmp read fifo' in a while loop. This means that if fifo is empty this will stall until a packet is available.

-------------------------
Gregory Dymarek