BNO055 Absolute Orientation Sensor

💻

Table of Contents

Setup and Usage

In the interest of collecting IMU and temperature data on my in-progress, underwater sensor platform, I decided to purchase an IMU board1. Even though I’ve had my BNO055 sensor for a while, I’ve just now been able to wire it up and test it out.

To break it in, I used my Raspberry Pi 3 Model B+ and followed the (now outdated) tutorial by Adafruit2.

The tutorial still works well with two caveats:

  1. The PI 3’s raspi-config has moved the option for serial port adjustments from Advanced Options to Interfacing Options, which is relevant for the Hardware step in the tutorial3.
  2. The PI 3 needs adjustments for OpenGL to work within in its Chromium browser4, which is relevant to the WebGL Example step in the tutorial5. Note that OpenGL runs VERY slowly on chromium within the PI 3 and I resorted to simply accessing the rendered output from a desktop machine.
The temperature reported by the sensor was 28C or about 82.4F near an open window with cool air flowing over it.
However, local weather stations were reporting about about 75F.
Some more investigation will need to be done to determine whether this is a precision issue with the sensor or the weather station.

UPDATE 7/19/2019

CircuitPython Consideration

I contemplated using Adafruit’s newer tutorial6 and library7 to leverage CircuitPython and I2C. However, it seems others and even the newer tutorial still advise to not attempt I2C with the sensor on rpi 3, so I avoided doing so. This would have been nice since I’d be able to use Python 3 without any rewrites of the library code; I am aiming to use Python 3 across the code base.

Register Read Error

Occasionally I would see the following error when starting the example script:

Register read error: 0xee06

I found this StackOverflow post8 that gave a workable solution. Ultimately, the problem isn’t well understood, but simply giving repeated attempts at startup gets around the issue.


  1. https://www.adafruit.com/product/2472 ↩︎

  2. https://learn.adafruit.com/bno055-absolute-orientation-sensor-with-raspberry-pi-and-beaglebone-black/overview ↩︎

  3. https://learn.adafruit.com/bno055-absolute-orientation-sensor-with-raspberry-pi-and-beaglebone-black/hardware ↩︎

  4. https://raspberrypi.stackexchange.com/questions/83113/webgl-does-not-work-properly-on-raspberry-pi-chromium-browser ↩︎

  5. https://learn.adafruit.com/bno055-absolute-orientation-sensor-with-raspberry-pi-and-beaglebone-black/webgl-example ↩︎

  6. https://learn.adafruit.com/adafruit-bno055-absolute-orientation-sensor/python-circuitpython ↩︎

  7. https://github.com/adafruit/Adafruit_CircuitPython_BNO055 ↩︎

  8. https://raspberrypi.stackexchange.com/questions/77370/occasionally-get-register-read-error-0xee06-when-script-is-run-with-adafruit ↩︎

Research Engineer

My interests lie at the intersection of perception and robotics.