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:
- The PI 3's raspi-config has moved the option for serial port adjustments from
Interfacing Options, which is relevant for the
Hardwarestep in the tutorial3.
- The PI 3 needs adjustments for OpenGL to work within in its Chromium browser4, which is relevant to the
WebGL Examplestep 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.
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.
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.