Login
Start Free Trial Are you a business? Click Here

Adafruit 9-DOF Absolute Orientation IMU Fusion Breakout - BNO055 Reviews

4.6 Rating 14 Reviews
Read The Pi Hut Reviews
Visit Product Page

Email:

contact@thepihut.com

A high-quality Inertial Measurement Unit, recommended for drones and rockets
1 Helpful Report
Posted 4 years ago
Works great
Helpful Report
Posted 4 years ago
Excellent. I tried a cheaper version off Amazon (MakerHawk MPU9250) but gave such a noisy signal. This Adafruit was stable. Few data glitches but nothing a filter couldn’t solve. Would (and have) bought more products from PiHut
Helpful Report
Posted 4 years ago
I'm experimenting with telescope pointing systems, and this seemed like an interesting part of a solution. It was easy to set up and the example code has been useful in developing a test programme I wanted. I'm still evaluating the device but it is impressive. After a few hours of use, the output started to be patchy, some of the sensors are reporting 'Not a Number' sometimes. I've gotten around this by looping round until I get valid data. Not sure whether I have damaged something or whatever. hence a loss of one star.
Helpful Report
Posted 5 years ago
Like all Adafruit products I’ve used this driver is easy to Setup and reliable. Ideal for controlling the speed of a single DC motor using Arduino or rPi.
Helpful Report
Posted 6 years ago
I use this for my Lego projects, and have written my own C# driver. Following the C++ sample code it is fairly straightforward. This chip is a lot easier to deal with compared to other IMUs I have used. But: I found something that appears to be a hardware bug. When reading Euler data, any positive pitch (> 0° ) will have the most significant bit set to 1 - making the int value some negative number instead of positive. Very annoying and unnecessary, but fairly easy to solve in software. This is my solution: var bytes = ReadBytes(Registers.BNO055_EULER_H_LSB_ADDR, 6); // bug in the chip. // Whenever pitch > 0, pitch MSB is set erroneously var msb = (short) (bytes[5] 2880 || msb < -2880) { bytes[5] &= 0b0111_1111; // set most significant bit to 0 instead of 1 } Not sure if this applies to all chips, or if this is an issue with the one I got.
Helpful Report
Posted 7 years ago