If you’ve ever ordered and wire up a 9-DOF sensor, chances are you’ve also realized the challenge of turning the sensor data from an accelerometer, gyroscope, and magnetometer into actual «3D space orientation»! Orientation is a hard problem to solve. The sensor fusion algorithms (the secret sauce that blends accelerometer, magnetometer, and gyroscope data into stable three-axis orientation output) can be mind-numbingly difficult to get right and implement on low-cost real-time systems.
Bosch is the first company to get this right by taking a MEMS accelerometer, magnetometer and gyroscope and putting them on a single die with a high-speed ARM Cortex-M0 based processor to digest all the sensor data, abstract the sensor fusion and real-time requirements away, and spit out data you can use in quaternions, Euler angles or vectors.
Behold the Adafruit 9-DOF Absolute Orientation IMU Fusion Breakout — BNO055 in Stemma QT format! We also have this breakout in a non-Stemma shape and size. The use is identical between the two breakouts: same library and software will work on both. The QT version is a bit smaller and has plug-and-play I2C connectors on either side for no-solder-required uses!
Rather than spending weeks or months fiddling with algorithms of varying accuracy and complexity, you can have meaningful sensor data in minutes thanks to the BNO055 — a smart 9-DOF sensor that does the sensor fusion all on its own! You can read the data right over I2C and Bob’s yer uncle.
The BNO055 can output the following sensor data:
- Absolute Orientation (Euler Vector, 100Hz) Three axis orientation data based on a 360° sphere
- Absolute Orientation (Quatenrion, 100Hz) Four point quaternion output for more accurate data manipulation
- Angular Velocity Vector (100Hz) Three axis of ‘rotation speed’ in rad/s
- Acceleration Vector (100Hz) Three axis of acceleration (gravity + linear motion) in m/s^2
- Magnetic Field Strength Vector (20Hz) Three axis of magnetic field sensing in micro Tesla (uT)
- Linear Acceleration Vector (100Hz) Three axis of linear acceleration data (acceleration minus gravity) in m/s^2
- Gravity Vector (100Hz) Three axis of gravitational acceleration (minus any movement) in m/s^2
- Temperature (1Hz) Ambient temperature in degrees celsius
Use is simple, with I2C support that is 3 or 5 Volt logic safe. We also break out the interrupt pins and address-selection jumpers in case you want two BNO-055’s on one I2C bus. We’ve got both Arduino (C/C++) and CircuitPython libraries available so you can use it with any microcontroller or computer board and get data readings in under 5 minutes. Four mounting holes make for a secure connection.
Additionally, since it speaks I2C you can easily connect it up with two wires (plus power and ground!). We’ve even included SparkFun qwiic compatible STEMMA QT connectors for the I2C bus so you don’t even need to solder! Use a a plug-and-play STEMMA QT cable to get 9 DoF data ASAP.
Comes assembled and tested, with a small piece of header. Some soldering is required to attach the header to the breakout PCB if you want to use it in a breadboard, but it’s pretty easy work.
- Uses I2C address 0x28 (default) or 0x29
- Datasheet, EagleCAD PCB files, and Fritzing available in the product tutorial