Data Sheet
In register 25 the temperature that the BNO055 is currently measuring is provided in °C.
Bosch generate a compass bearing within the BNO055, so this is available in registers 26 (high byte)
and 27 (low byte) and together they form a 16 bit unsigned integer in the range 0-5759, this number can
be scaled to degrees by dividing by 16.
Registers 28 (high byte) and 29 (low byte) form a 16 bit pitch angle for +/- 180 from the horizontal
plane.
Finally we have register 30, this provides feedback on the degree of the calibration that the automatic
calibration routines have achieved.
Calibration of the CMPS12
The CMPS12 is automatically calibrated by movement, there is no instigation required by the user.
Register 30 can be checked to see the level to which the CMPS12 has been calibrated. Bits 0 and 1 of
register 30 will start at 0 (un-calibrated) and increase to 3 with calibration.
Storing and erasing calibration profiles
After calibrating the compass the profile can be stored so it will be automatically reloaded when the
module is ready for use again.
To store a profile write the following to the command register 0xF0, 0xF5, 0xF6 with a 20ms delay
after each of the three bytes.
If you wish to erase the stored profile so your module powers into a default state write the following
to the command register 0xE0, 0xE5, 0xE2 with a 20ms delay after each of the three bytes.
Changing the I2C Bus Address
To change the I2C address of the CMPS12 you must have only one module on the bus. Write the 3
sequence commands in the correct order followed by the address with 20ms between writes. Example;
to change the address of a compass currently at 0xC0 (the default shipped address) to 0xC2, write the
following to the command register 0 at address 0xC0: (0xA0, 0xAA, 0xA5, 0xC2 ) with a 20ms delay
after each of the first three bytes. These commands must be sent in the correct sequence to change the
I2C address, additionally, No other command may be issued in the middle of the sequence. The
sequence must be sent to the command register at location 0, which means 4 separate write transactions
on the I2C bus. When the CMPS12 is re-powered will flash its address out on the LED.
Address
flashes
Decimal Hex
192 C0 1
194 C2 2
196 C4 3
198 C6 4
200 C8 5
202 CA 6
204 CC 7
206 CE 8
Take care not to set more than one device to the same address, there will be a bus collision and very
unpredictable results.