VR IMU (Qwiic) - BNO080 High Precision

We're clearing out this black SparkX version so get the deal while you can. This version is identical to the red version (without the cool labels). The all-red hookup guide applies to both boards.

First, let us apologize for the product name; it's hard to describe everything this sensor can do. The VR IMU uses the impressive BNO080 IMU. This IC has a combination triple axis accelerometer/gyro/magnetometer packaged with an ARM Cortex M0+ running powerful algorithms. The BNO080 Inertial Measurement Unit (IMU) produces accurate rotation vector headings, excellently suited for VR and other heading applications with a static rotation error of 2 degrees or less. It's what we've been waiting for: all the sensor data is combined and drift corrected into meaningful, accurate IMU information.

This IC was designed to be implemented in Android based cellular phones to handle all the computations necessary for virtual reality goggles using only your phone. The sensor is quite powerful and with power comes a complex interface. We've written an I2C based library that provides the rotation vector (the reading most folks want from an IMU) as well as acceleration, gyro, and magnetometer readings, step counting, activity classifier (such as riding a bike), and calibration.

The VR IMU uses two Qwiic connectors. Qwiic cables are thin and flexible allowing you to manipulate the IMU in space unimpeded. This is especially handy when moving or calibrating the sensor. We've created a demo Processing app to see how the movement of the IMU can accurately manipulate a 3D object using the Quaternion output from the IMU.

There are jumpers on the board allowing the user to select between two different I2C addresses, remove the I2C pull up resistors, and select between the three different interface protocols. If I2C is not your first communication choice the sensor is capable of communicating over SPI and UART as well! If you're using the UART we recommend the Serial Basic for an easy connection.

This version incorporates an on-board 32kHz crystal for increased precision and more accurate time stamps.

Check the documents section for a link to our Arduino library!

We do not plan to regularly produce SparkX products so get them while they’re hot!

Experimental Product: SparkX products are rapidly produced to bring you the most cutting edge technology as it becomes available. These products are tested but come with no guarantees. Live technical support is not available for SparkX products. Head on over to our forum for support or to ask a question.


The BNO080 can communicate through a variety of interfaces. The Qwiic VR IMU has two jumpers that allows the user to select their interface of choice.

  • I2C (Default): Up to 400kHz
  • SPI: Up to 3MHz
  • UART: 3Mbps
  • UART-RVC (Robot Vacuum Cleaners): 115200kbps

Performance Characteristics:

  • Rotation Vector
    • Dynamic Error: 3.5°
    • Static Error: 2.0°
  • Gaming Rotation Vector
    • Dynamic Error: 2.5°
    • Static Error: 1.5°
    • Heading Drift: 0.5° / min
  • Geomagnetic Rotation Vector
    • Dynamic Rotation Error: 4.5°
    • Static Rotation Error: 3.0°
  • Gravity Angle Error: 1.5°
  • Linear Acceleration Accuracy: 0.35m/s2
  • Accelerometer Accuracy: 0.3m/s2
  • Gyroscope Accuracy: 3.1° / sec
  • Magnetometer Accuracy: 1.4µT

VR IMU (Qwiic) - BNO080 High Precision Product Help and Resources

Qwiic VR IMU (BNO080) Hookup Guide

April 30, 2018

Figure out how things are oriented with the robust 9 degrees of freedom (DOF) BNO080 IMU. Maybe even make your own virtual reality (VR) applications if you're feeling savvy.


Looking for answers to technical questions?

We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.

  • Member #1365492 / about 6 years ago / 1

    I connected the sensor through a qwiic shield on top of an arduino mega, but no I2C devices found through I2C scanner(https://playground.arduino.cc/Main/I2cScanner). How can I check if the sensor is dead? There is no light emitting or anything.

  • Member #125896 / about 6 years ago / 1

    Anyone had issues with calibrating the Magnetometer? Using the provided Arduino library, I'm able to read outputs for all 3 sensors and the different rotation vectors. Following the calibration guide, I can get the accelerometer and gyroscope to reach a status of 3 individually (Accuracy high). I can't seem to get the Magnetometer status above 0 though. This means my Game Rotation Vector (0x08) has a status of 3 but the Rotation Vector (0x05) has status of 0. Thanks!

  • Member #50532 / about 6 years ago / 1

    Any plans to update the hardware files on github to reflect the new changes with the added 32kHz Crystal?

Customer Reviews

4.5 out of 5

Based on 2 ratings:

Currently viewing all customer reviews.

1 of 1 found this helpful:

Nice sensor - complete subsystem

I've tried one of the other 9DOF's. The sensor integration math is fascinating. But if you want to do your own software, despite lots of sample code to draw from, I've found that there were a whole bunch of details, and quite a bit of "art" in getting all the calibration, sampling, filtering and coordinate systems just right to get really good performance in my particular application. What you are really buying with this board is the built-in software, and you are saving a whole lot of your time.

Within minutes I was getting useable orientation and acceleration data into a Teensy 3.5 (which is now probably overkill since most of the intense processing is done by the IMU). The library and example code are quite good, and I didn't even have to plug in my soldering iron thanks to the Qwiic cable.

The most glaring deficiency is that the library doesn't seem to support the linear accelerometer function of the device which provides accelerometer data minus gravity. This is pretty useful for navigation and I request it be added as a pretty high priority.