Now, the MPU-6050 is a 3.3V device and the Arduino is a 5V device, so there is that recipe for trouble. You can power the MPU-6050 by using the Arduinos regulated 3.3V pin, but the data communication lines for I2C (SCL and SDA) and the interrupt signal (INT) are still 5V logic on the Arduino’s side.
This issue is easily solved by using a level shifter for the data communication lines. However, connecting the devices directly also seems to work despite what the manual says. (For example, take a look at Geeetech MPU-6050 wiki’s page – the usage section.) Altough, I must say, that if you attempt to do this, you do so at your own risk as this may damage the device!
So, I strongly advise the use of a level shifter. You can buy breakout boards for those too. SparkFun sells 2-channel boards and Adafruit has 4-channel and 8-channel boards. Make sure the level shifter works with bi-directional signals (ie. I2C). For example, this one does not.
Another solution would be using an Arduino variant that works at 3.3V. However, most of these run at a lower clock speed (usually 8 MHz) and this in turn affects the maximum baud rate for the serial port, which may be quite important when transmitting data collected from the MPU-6050. For hacking your Arduino to work at 3.3V, take a look at this article by Adafruit.
Other 3.3V development platforms worth mentioning:
- Arduino DUE (ARM)
- Teensy 3.0 (ARM)
One more thing: I think it’s necessary to set the MPU-6050’s VIO to 3.3V (regardless if you have a level shifter or not. Only if you use lower voltages than 3.3V for the communication lines, you may want to adjust to that using the VIO pin).