Qwiic VR IMU (BNO080) Hookup Guide

Pages
Contributors: Englandsaurus
Favorited Favorite 3

Hardware Overview

Let's look over a few characteristics of the BNO080 sensor so we know a bit more about how it behaves.

CharacteristicRange
Operating Voltage1.65V - 3.6V
Linear Acceleration Accuracy±.35m/s2
Gyroscope Accuracy±.35m/s2
I2C Address0x4B (S0 Pulled High) or 0x4A (S0 grounded)

Pins

There are multiple rows of pins on the BNO080, the first row, used for the default I2C interface (configurable up to 400 kHz) is explained in the table below.

Pin LabelPin FunctionInput/OutputNotes
PS0Protocol SelectionInputConfiguration of the communication interface (Default: 0, I2C)
PS1Protocol SelectionInputConfiguration of the communication interface (Default: 0, I2C)
GNDGroundInput0V/common voltage.
3V3Power SupplyInputShould be between 1.65 - 3.6V
SDAI2C Data SignalBi-directionalBi-directional data line. Voltage should not exceed power supply (e.g. 3.3V).
SCLI2C Clock SignalInputClock signal. Voltage should not exceed power supply (e.g. 3.3V).
RSTReset SignalInputReset signal, active low, pull low to reset IC
INTInterruptOutputInterrupt, active low, pulls low when the BNO080 is ready for communication.


Also broken out on the board is a Serial Peripheral Interface (SPI) which can run data up to 3MHz. The pins for this interface are outlined below. On any pin, the voltage should not exceed that supplied on the 3V3 pin.

Note: You may not recognize the COPI/CIPO labels for SPI pins. SparkFun has joined with other members of OSHWA in a resolution to move away from using "Master" and "Slave" to describe signals between the controller and the peripheral. Check out this page for more on our reasoning behind this change. You can also see OSHWA's resolution here.
Pin LabelPin FunctionInput/OutputNotes
GNDGroundInput0V/Common Voltage
3V3PowerInputShould be between 1.65 - 3.6V
SCKClockInputClock signal to synchronize controller and peripheral.
SOCIPOOutputController in, peripheral out. Device sends data to the controller on this line.
SICOPI/ADDRInputController out, peripheral in. Device receives data from the microcontroller on this line. Tie to 3.3V to change I2C address from 0x4A to 0x4B
CSChip SelectInputChip select, active low, used as chip select on SPI
WAKWakeInputActive low, Used to wake the processor from a sleep mode.
RSTReset SignalInputReset signal, active low, pull low to reset IC


You can also use the UART interface at up to 3 Mbps or a simplified UART called UART-RVC (Used for robotic vacuum cleaners) which can run at a data rate of 115200 kbps. The UART interface is in the middle of the board, with the black and green pins labeled on the back of the board as shown below. These serial pins have been arranged to work with our Serial Basic board to make interfacing to a computer simple and fast. The GRN and BLK labels help align the serial connection properly.

Also note the BOOT pin next to the Qwiic connector, which is necessary for configuration of the communication mode. If the BOOT pin is low upon reset or power up, the chip will go into bootloader mode to allow for programming of new firmware.

Boot Pin

Optional Features

Pull-Up Resistor Jumper

The Qwiic VR IMU has onboard I2C pull up resistors; if multiple sensors are connected to the bus with the pull-up resistors enabled, the parallel equivalent resistance will create too strong of a pull-up for the bus to operate correctly. As a general rule of thumb, disable all but one pair of pull-up resistors if multiple devices are connected to the bus. If you need to disconnect the pull up resistors they can be removed by removing the solder on the corresponding jumpers highlighted below.

I2C Pullup

Protocol Selection Jumpers

You can use the PS0 and PS1 jumpers to change the communication protocol that the BNO080 is using. The jumpers are left open (0) by default, and the following configurations will allow for their corresponding communications protocols.

PS0PS1Interface
00I2C
10UART-RVC
01UART
11SPI


The jumpers themselves are located on the back of the board, shown below

Protocol Selection

I2C Jumper

You can also change the address of the BNO080 from 0x4B (default) to 0x4A by connecting the I2C ADR jumper. The jumper itself is shown in the below image.

Address Jumper

Axis Reference

Also, be sure to check out the labeling on the front of the board that indicates the orientation of the positive X, Y, and Z axes so you know which way your data is pointing.

Axis Reference Photo