Gee!Design » Arduino sketch for connection with MPU-9150. I recently managed to connect an MPU-9150 breakout board to a Unity3D application, using a Teensy2.0 as an interface (also got it working with Teensy++ 2.0 and Arduino Uno).
With this combination I can easily rotate an object in the real world and have a counterpart in a virtual world do the same in real time. I chose the MPU-9150 because its”sensor fusion” functions make this possible without much mathematics. I quite like the result, and I want to share my experiences and code! On this page, I go into the details of the Arduino (Teensy) sketch. What did I add/change in my Arduino sketch, relative to the standard MPU6050_DMP6 example?
Arduino sketch details The Arduino sketch that I use is basically a combination of the standard MPU6050_DMP6 example, by Jeff Rowberg and RGSteele, and the “Unity Arduino Serial Connection” by Tiuri de Jong. Step 1: setup a connection to Unity Serial.begin(57600); Step 2: Acquire quaternion data #define OUTPUT_READABLE_QUATERNION //#define OUTPUT_TEAPOT. Www.egr.msu.edu/classes/ece480/capstone/spring13/group08/documents/alex.pdf. Arduino talks to Processing, Python… Note: This post has been updated, see notes below.
MPU-9150. FreeIMU: an Open Hardware Framework for Orientation and Motion Sensing. FreeIMU is an ongoing research project which aims to design Open Hardware 9/10 DOM/DOF Inertial Measurement Units as well as easy to use Orientation and Motion Sensing libraries, built on top of the Arduino platform.
The goal of the FreeIMU Framework is to simplify the development of projects based upon the most powerful and new consumer grade inertial, magnetic and pressure sensors. The main application of FreeIMU is orientation sensing: by reading the data from the various sensors is possible to compute precisely the orientation of FreeIMU in the space. Recent boards also feature an high resolution barometer allowing to precisely track the device altitude. This can be useful in many applications: human-computer interaction device prototyping, flying machines, robots, human movement tracking and everywhere orientation sensing is a key aspect.
Video presentation of FreeIMU Older video presentations: FreeIMU v0.3, FreeIMU v0.1 and 0.2. A true Open Hardware project Getting FreeIMU Calibration. Www.ti.com/lit/an/slaa518a/slaa518a.pdf. MegunoLink. MegunoLink Pro can plot data sent from a microcontroller by parsing specially formatted messages.
Currently two types of plots are supported: Time plots, which are similar to a chart recorder, showing a number plotted against time. Harinadha/STM32_MPU9150eMPL. Datasheet.octopart.com/MPU9150_SDK-InvenSense-datasheet-21255469.pdf. X-io Technologies. The x-BIMU is a versatile IMU and AHRS specifically designed to interface to XBee-style wired and wireless communication modules.
On-board sensors and algorithms to provide both inertial sensor data and a real-time measurement of orientation relative to the Earth The x-BIMU is optimised to operate with 802.15.4 XBee wireless modules to achieve its best low-power and low-latency performance but is compatible with any serial-based interface (e.g. Bluetooth and serial breakout). A simple communication protocol uses either ASCII or binary packets and provides access to all settings through serial commands using any serial terminal. The generic C++ example demonstrates how to decode the serial stream on any host platform. Sensors Calibrated gyroscope (±2000°/s), accelerometer (±16 g) and magnetometer *On-board AHRS algorithm *Battery level measurementSelectable data rates up to 256 Hz (128 Hz with 802.15.4 XBee) Communication.
Secrets of the MPU9150. After another heroicly wasted day, the MPU9150 finally surrendered all 9 of its data streams.
It has so many problems as a 1st run product, a much improved revision negating all of today's work is guaranteed. But with 2 MPU9150's lying around & a definite use, it was time to bang out a workaround just to get the data from it. The DMP firmware isn't going to happen. Step 1: the 1st I2C command must be to set PWR_MGMT_1 (0x6b) to 0x01 to move it out of sleep mode & set the clock to the gyro oscillator. That puts 1.8V on the REG_OUT pin & 25V on the CPOUT pin.
Step 2: set the remaining configuration registers after PWR_MGMT_1 0x37 = 0 // disable i2c passthrough 0x6a = 0 // disable i2c master 0x1b = 0 // gyro config 0x1c = 0 // accel config 0x19 = 0 // desired sample rate divider. HardwareProjects/Processing/MPU-9150 3D Drawing at master · JamesHagerman/HardwareProjects. Richards-tech/RTIMULib-Arduino. MPU-6050: DMP Data from i2cdevlib. In March, I posted on experimenting with the MPU-6050 IMU chip (mounted in a GY-521 breakout board).
It seems that many people are using the MPU-6050, and I wanted to follow up with some more information, because there are better ways to access and process the combined sensor data than were demonstrated in that post. The previous experiment compared the raw data from the 3-axis accelerometer and 3-axis gyroscope sensors to the results when the raw data are combined via a complementary filter. For the comparison, I had adapted a program from the Arduino Playground Wiki on MPU-6050 to pull the raw accelerometer and gyroscope data from the MPU-6050, The program calculated pitch, roll and yaw (rotation about the X, Y and Z axes, respectively, also knows as Euler Angles).
These calculations were limited by certain properties of both the accelerometer and gyroscope. . , and pitch, , (you can’t compute yaw, 9 Degrees of Freedom Breakout - MPU-9150 - SEN-11486. Description: The 9DOF MPU-9150 is the world’s first 9-axis MotionTracking MEMS device designed for the low power, low cost, and high performance requirements of consumer electronics equipment including smartphones, tablets and wearable sensors.
And guess what? Richards-tech/RTIMULib-Arduino. Richards-tech/RTIMULib. MPU9150 DMP. This post is continuation of previous post on MPU9150.
Using MPU9150gui utility program, orientation data has been logged for 2 hours 30 minutes. MPU9150 DMP.