RuggedCircuits

The Arduino does pull up the data lines (weakly) using internal pullup resistors. You can disable those by writing 0 to the port pins (you write a 1 to enable the pullup resistor), and then add your own physical resistors externally (pulled up to 3.3V) on the slaves. Depending on how fast you want the I2C bus to talk, something between 1.5k and 10k is reasonable (the lower the resistance, the faster the bus).

The problem with doing this is that the pull up is activated for some time before you can deactivate it. Thus subjecting the device to too much voltage. You are better hacking the I2C libary so that they are not enabled in the first place.

I've been playing with an ADXL345 accelerometer, also a 3,3V device connected to my Uno. I connected 2 4k7 resistors between SDA/SCL and 3,3V. Becomes more difficult when you want to combine 3,3 and 5V devices on the same I2C bus.

This tutorial (http://www.ladyada.net/learn/sensors/bmp085.html) recommends against keeping 3.3V and 5V devices on the same bus. I'm currently using a 5V RTC and a 3.3V pressure sensor on the same bus with a logic level converter with no real problems.

RuggedCircuits

This tutorial (http://www.ladyada.net/learn/sensors/bmp085.html) recommends against keeping 3.3V and 5V devices on the same bus.

No, you have to interpret the tutorial more carefully. Here is what it says (and I agree):

Quote

You may be wondering, how is it OK to connect a 3.3V chip like the BMP085 to 5.0V data pins like the Arduino? Isn't that bad? Well, in this specific case its OK. I2c uses pullup lines to the 3.3V power pin, so the data is actually being sent at 3.3V. As long as all the sensors/device on the i2c bus are running on 3.3V power, we're fine.

Once again: it is OK to connect 3.3V and 5V devices together over the I2C bus as long as the pullup resistors go to 3.3V, and not 5V.

Allow me to take a slightly different position on this. I prefer using a bi-directional voltage translator instead. Something like a PCA9306. For relatively little money (i.e. less than $1 in single unit quantities at Digikey) you get a chip custom-made for these sorts of applications. Seems like a more reliable solution. I take the same approach on the SPI bus.

Lastly, I'd check digikey and other sites for similar gyros that can run on 5V logic levels to avoid the translation need in the first place. Or, run the Arduino at a lower speed and turn the system voltage down to 3.3V...