BNO055 9-axis motion sensor with hardware sensor fusionDesigned by Pesky Products in United States of America
Wondering which motion sensor is right for you? Take a look here. Just added CAD models of the board courtesy of [Dylan Reynolds] (email@example.com). STEP files available on request. What...Read More…
Wondering which motion sensor is right for you? Take a look here.
Just added CAD models of the board courtesy of [Dylan Reynolds] (firstname.lastname@example.org). STEP files available on request.
Bosch’s new BNO-055 9-axis motion sensor plus Bosch's BMP280 pressure sensor. The BNO-055 has an embedded Cortex M0 ARM processor as well as accel/gyro and mag for a purely hardware absolute orientation solution. This is either a mini Teensy 3.1 shield or a conventional breakout board, choice is made via solder pads on back which bring 3V3 and GND out to edge pins. Sensor can be accessed either via I2C, UART, or HID-I2C on Windows 8 by changing solder pads PS0 and PS1 on back. Lastly, BNO-055 I2C address LSB can be changed via solder pad ADO so two can be on the same circuit, if desired.
The new trend in motion sensors is to embed powerful processors with the sensor to allow direct calculation and register read of fused quaternion and AHRS output, obviating the need for users to program their own sensor fusion or to take up valuable microprocessor memory or processing power in crunching the numbers for sensor fusion. The first of these inexpensive embedded sensor fusion motion sensors was the 6-axis MPU6050 by Invensense, and the latest Invensense 9-axis motion sensor the MPU9250 maintains the technology with the Digital Motion Processor or DMP providing 6-axis sensor fusion. The drawback of Invensense's approach is the microprocessor must upload a large (4K) binary file of firmware for the DMP, and the DMP is still limited to 6-axis sensor fusion despite being embedded in a 9-axis motion sensor. The next class of device includes the MAX21100, which also embeds a hardware sensor fusion engine with a 6-axis gyro/accelerometer but can perform true 9-axis sensor fusion by importing compass data from a slave magnetometer. This device requires no binary firmware and the quaternion or heading results of the sensor fusion are read from the MAX21100 registers like any other data. Also in this class is the EM7180, which is a sensor fusion hub that takes data from external sensors and performs sensor fusion in hardware for readout by a master microcontroller. The latest class of integrated motion sensor is embodied in the BNO-055. In this device is Bosch's latest 9-axis motion sensor (the BMX-055) coupled with a Cortex M0 ARM processor to perform the 9-axis sensor fusion. No external magnetometer and no microcontroller processing is required; again the quaternions, linear acceleration, gravity vector, and heading information are directly readable from the BNO-055 registers. This is a compact and powerful motion sensing solution that promises to make absolute orientation and sophisticated motion control available to anyone who can run a blink program on an Arduino.
The BNO-055 has a lot of functions and communication paths and I worked hard to make them all available in a small breakout board. The board can be used as a Teensy 3.1 mini add-on board by just soldering the breakout board directly to the Teensy 3.1 pins 8 - 17 and using the 3V3 and GND at the end of the Teensy board. The BN0-055 uses 3V3/GND, SDA/SCL for communication with the Teensy 3.1, and has one multifunction interrupt. I designed the breakout board such that when mounted on the Teensy 3.1, the SPI pins are free for other devices (like SD cards or radios) that must use SPI.
The BNO-055 breakout board communicates via I2C (default), UART, or HID-I2C protocol for Windows 8. These latter functions can be accessed by the PS0 and PS1 pins; (0,0) is the default I2C including fast (400 kHz) I2C communication. (0,1) is UART RX/TX communication through the same pins as SDA/SCL. (1,0) is the HID-I2C mode specific to Windows 8. These choices are made by soldering jumpers on the back of the breakout board.
The BNO-055 breakout board also breaks out the device reset, which is triggered by setting the reset pin low. The LSB of the I2C address can be changed via the ADO pin by soldering a junction in the back of the board. And lastly, the BNO-055 breakout board can be used as a conventional sensor breakout board by soldering jumpers on the back to take 3V3 and GND from the board edge so it is convenient to mount the sensor in a breadboard and connect it to an Arduino (3V3 only! Use a logic level converter for 5V operation) microcontroller.
On the latest version of the board, I did not break out the boot pin since Bosch has told me they do not expect users to change the firmware. I notice that the first batch of BNO-055 chips has firmware version 02.B0 while the data sheet says it should be 03.04. So apparently, the firmware does change and I will redesign the board to breakout the boot pin so future firmware upgrades are possible.
I packed a lot of versatility in a small (0.7 in x 0.5 in) breakout board that will allow almost anybody the benefit of sophisticated 9-axis sensor fusion with ease.
Order the BNO-055 pc boards from OSH Park and make your own, or buy a fully assembled and tested breakout board from me and see what the latest motion sensor technology can do for you!
There is a working Arduino (Teensyduino) sketch to allow most of the features of this BNO-055 sensor to be used and is available at GitHub. The sketch parametrizes the sensor registers, initializes the device, calibrates the accelerometer, gyro, and magnetometer, sets up both the hardware and software sensor fusion, and outputs scaled sensor data as well as yaw, pitch, and roll, and quaternions, etc. My initial testing shows the hardware sensor fusion works well and is very stable. The hardware sensor fusion is updated at a fixed 100 Hz. The software sensor fusion responds at an update rate between 300 and 400 Hz when the Teensy 3.1 processor speed is set to 48 MHz depending on the amount of data output requested. The hardware sensor fusion results compare well with the open-source sensor fusion results except, as in the case of the MAX21100, there seems to be a relative rotation between the hardware yaw and the software yaw. This has to do with the different reference frames used in the two algorithms but I haven't yet figured out how to properly align them to agree.
As far as I know, there is no export control of this item so it will ship anywhere without restriction. Also, being relatively new and in short supply the BNO-055 is selling for more than other 9-axis motion sensors which, unfortunately, must be reflected in the price of the breakout board.
Daniel | Jan. 27, 2017
Oleksandr | Sept. 21, 2016
Martin | Aug. 24, 2016
Dan | July 13, 2016
Kirill | June 17, 2016
Sam | June 13, 2016
Bradley | March 7, 2016
Michael | Jan. 17, 2016
Alf | Oct. 22, 2015
David | July 27, 2015
Mathieu | July 10, 2015
Thibaut | July 1, 2015
Clint | June 18, 2015
Matthew | June 9, 2015
Joan | May 13, 2015
Ted | April 13, 2015
Sathish | Feb. 17, 2015
Robert | Jan. 27, 2015
Marco | Jan. 15, 2015
Martin | Dec. 17, 2014
Bruce | Nov. 24, 2014
We recognize our top users by making them a Tindarian. Tindarians have access to secret & unreleased features.
We look for the most active & best members of the Tindie community, and invite them to join. There isn't a selection process or form to fill out. The only way to become a Tindarian is by being a nice & active member of the Tindie community!