# Adafruit BNO055 + BMP280 BFF

## Overview

![](https://cdn-learn.adafruit.com/assets/assets/000/129/428/medium800thumb/sensors_5937-06.jpg?1713379750)

Our QT Py boards are a great way to make very small microcontroller projects that pack a ton of power - and now we have a way for you to turn many QT Py boards into powerful 9 degree-of-freedom (9DoF) motion plus pressure/altitude sensing projects that are super small!

![](https://cdn-learn.adafruit.com/assets/assets/000/129/429/medium800/sensors_5937-05.jpg?1713379758)

We call this the **Adafruit BNO055 + BMP280&nbsp;BFF—a "Best Friend Forever."** When you were a kid, you may have learned about the "buddy" system; well, this product is kind of like that! It's a board that will watch your QT Py's back and give it more capabilities.

![](https://cdn-learn.adafruit.com/assets/assets/000/129/430/medium800/sensors_5937-02.jpg?1713379767)

This PCB is designed to fit onto the back of any QT Py or Xiao board. It can be soldered into place or made removable using pin and socket headers.

Rather than spending weeks or months fiddling with algorithms of varying accuracy and complexity, you can have meaningful sensor data in minutes [thanks to the BNO055](https://www.adafruit.com/product/2472). This smart 9-DOF sensor does the sensor fusion all on its own! You can read the data right over I2C and Bob's yer uncle.

![](https://cdn-learn.adafruit.com/assets/assets/000/129/431/medium800/sensors_5937-03.jpg?1713379780)

The BNO055 can output the following sensor data:

- **Absolute Orientation** (Euler Vector, 100Hz) Three axis orientation data based on a 360° sphere
- **Absolute Orientation** (Quaternion, 100Hz) Four point quaternion output for more accurate data manipulation
- **Angular Velocity Vector** (100Hz) Three axis of 'rotation speed' in rad/s
- **Acceleration Vector** (100Hz) Three axis of acceleration (gravity + linear motion) in m/s^2
- **Magnetic Field Strength Vector** (20Hz) Three axis of magnetic field sensing in micro Tesla (uT)
- **Linear Acceleration Vector** (100Hz) Three axis of linear acceleration data (acceleration minus gravity) in m/s^2
- **Gravity Vector** (100Hz) Three axis of gravitational acceleration (minus any movement) in m/s^2
- **Temperature** (1Hz) Ambient temperature in degrees celsius

The only thing it doesn't have is barometric pressure, which can be used for altitude calculations. Aha, that's why there's _also_ [a BMP280 sensor](https://www.adafruit.com/search?q=bmp280) on board. This precision sensor from Bosch is the best low-cost, precision sensing solution for measuring barometric pressure with ±1 hPa absolute accuracy, and temperature with ±1.0°C accuracy. Because pressure changes with altitude and the pressure measurements are so good, you can also use it as an altimeter with ±1 meter accuracy.

![](https://cdn-learn.adafruit.com/assets/assets/000/129/432/medium800/sensors_5937-06.jpg?1713379789)

Usage for the BFF is simple because both the BNO and BMP talk over I2C - so you'll just use the SDA/SCL pins. Note that some QT Py boards with a Stemma QT port have _two_ I2C ports, so make sure you are using the port that's on the SDA/SCL pins, not the QT port!

There are optional Interrupt/Reset pins for the BNO055 if you want more advanced control, and each sensor also has address-changing jumpers in case you want to switch from the default addresses of BMP280 @ 0x77 and BNO055 @ 0x28.

![](https://cdn-learn.adafruit.com/assets/assets/000/129/433/medium800/sensors_5937-00.jpg?1713379800)

If you'd like, you can solder the BFF directly on the back of your Xiao/QT Py or use the included header to solder each side to your QT Py to make a sandwich. [You can also pick up an Itsy Bitsy short female header kit to make it removable but compact](https://www.adafruit.com/product/4174); you'll need to trim the headers to 7 pins long.

**QT Py is not included!**

# Adafruit BNO055 + BMP280 BFF

## Pinouts

![](https://cdn-learn.adafruit.com/assets/assets/000/129/436/medium800/sensors_double.jpg?1713386056)

The default I2C address for the BNO055 is **0x28** and the default I2C address for the BMP280 is **0x77**.

Warning: Some QT Py boards with a Stemma QT port have two I2C ports, so make sure you are using the port that's on the SDA/SCL pins, not the QT port in your code.

## BNO055 9-DoF Sensor

In the center of the board is the BNO055 9-DoF sensor. This sensor performs sensor fusion all on its own and you can read the data right over I2C on the SDA/SCL pins at default address **0x28**.&nbsp;You can access the following data from the BNO055:

- **Absolute Orientation** (Euler Vector, 100Hz) Three axis orientation data based on a 360° sphere
- **Absolute Orientation** (Quaternion, 100Hz) Four point quaternion output for more accurate data manipulation
- **Angular Velocity Vector** (100Hz) Three axis of 'rotation speed' in rad/s
- **Acceleration Vector** (100Hz) Three axis of acceleration (gravity + linear motion) in m/s^2
- **Magnetic Field Strength Vector** (20Hz) Three axis of magnetic field sensing in micro Tesla (uT)
- **Linear Acceleration Vector** (100Hz) Three axis of linear acceleration data (acceleration minus gravity) in m/s^2
- **Gravity Vector** (100Hz) Three axis of gravitational acceleration (minus any movement) in m/s^2
- **Temperature** (1Hz) Ambient temperature in degrees celsius

## BNO055 Jumpers
- **RST** - The reset pin for the BNO055 is located next to pin **A0** (outlined in red in the board image). This jumper is open/not connected by default. If you solder the jumper closed, it will connect the reset pin to&nbsp; **A0**.
- **I&nbsp;** - The interrupt pin for the BNO055 is located next to pin **A1** (outlined in blue in the board image). This jumper is open/not connected by default. If you solder the jumper closed, it will connect the interrupt pin to&nbsp; **A1**.
- **Address jumper** - The I2C address changing jumper for the BNO055 is located to the left of the sensor (outlined in green in the board image). This jumper is open/not connected by default. If you solder the jumper closed, it will change the BNO055 I2C address from **0x28** to **0x29**.

![sensors_bnoJumpers.jpg](https://cdn-learn.adafruit.com/assets/assets/000/129/437/medium640/sensors_bnoJumpers.jpg?1713386528)

## BMP280 Pressure Sensor

At the top edge of the board is the BMP280. You can read the BMP280 over I2C on the SDA/SCL pins at default address&nbsp; **0x77**. This sensor is used for:

- **Barometric pressure** (hPa) with ±1 hPa absolute accuracy
- **Temperature** (°C) with ±1.0°C accuracy
- **Altimeter** (meters) with ±1 meter accuracy

## BMP280 Address Jumper
- **Address jumper** - The I2C address changing jumper for the BMP280 is located to the left of the sensor (outlined in red in the board image). This jumper is open/not connected by default. If you solder the jumper closed, it will change the BMP280 I2C address from **0x77** to **0x76**.

![sensors_bmp_jumper.jpg](https://cdn-learn.adafruit.com/assets/assets/000/129/438/medium640/sensors_bmp_jumper.jpg?1713386581)

# Adafruit BNO055 + BMP280 BFF

## CircuitPython

It's easy to use the **BNO055 + BMP280 BFF** with CircuitPython and the [Adafruit\_CircuitPython\_BNO055](https://github.com/adafruit/Adafruit_CircuitPython_BNO055) and [Adafruit\_CircuitPython\_BMP280](https://github.com/adafruit/Adafruit_CircuitPython_BMP280) modules. These modules allow you to easily write Python code to control the BNO055 9-DoF sensor and the BMP280 pressure sensor.

Warning: The BNO055 I2C implementation violates the I2C protocol in some circumstances. This causes it not to work well with certain chip families. It does not work well with Espressif ESP32, ESP32-S3, and NXP i.MX RT1011, and it does not work well with I2C multiplexers. Operation with SAMD51, RP2040, STM32F4, and nRF52840 is more reliable.

## CircuitPython Microcontroller Wiring

Plug a BNO055 + BMP280 BFF into your QT Py or Xiao form factor board exactly as shown below. Here's an example of connecting a QT Py RP2040 to the BFF.

Connect the QT Py RP2040 with plug headers into the BNO055 + BMP280 BFF with socket headers. They should be plugged in with the backs of the boards facing each other.

For more information on soldering socket headers,&nbsp;[check out this Learn Guide](https://learn.adafruit.com/how-to-solder-headers/female-headers).

![sensors_5937-03.jpg](https://cdn-learn.adafruit.com/assets/assets/000/129/439/medium640/sensors_5937-03.jpg?1713442846)

[How to Solder Headers Learn Guide](https://learn.adafruit.com/how-to-solder-headers/female-headers)
## CircuitPython Usage

To use with CircuitPython, you need to first install the **Adafruit\_CircuitPython\_BNO055** and **Adafruit\_CircuitPython\_BMP280** libraries, and the dependencies, into the **lib** folder on your **CIRCUITPY** drive. Then you need to update **code.py** with the example script.

Thankfully, we can do this in one go. In the example below, click the **Download Project Bundle** button below to download the necessary libraries and the **code.py** file in a zip file. Extract the contents of the zip file, and copy the **entire**  **lib**  **folder** and the **code.py** file to your **CIRCUITPY** drive.

Your **CIRCUITPY/lib** folder should contain the following folders and files:

- **adafruit\_bus\_device/**
- **adafruit\_register/**
- **adafruit\_bmp280.mpy**
- **adafruit\_bno055.mpy**

![CIRCUITPY](https://adafruit.github.io/Adafruit_Learning_System_Guides/BNO055_BMP280_BFF_Examples_CircuitPython.png )

## Example Code

Once everything is saved to the **CIRCUITPY** drive, [connect to the serial console](https://learn.adafruit.com/welcome-to-circuitpython/kattni-connecting-to-the-serial-console) to see the data printed out!

https://github.com/adafruit/Adafruit_Learning_System_Guides/blob/main/BNO055_BMP280_BFF_Examples/CircuitPython/code.py

First, both sensors are instantiated over I2C. In the loop, all of the available data parameters from both sensors are printed to the serial monitor every 2 seconds.

![](https://cdn-learn.adafruit.com/assets/assets/000/129/440/medium800/sensors_cp_serial.png?1713443074)

# Adafruit BNO055 + BMP280 BFF

## BMP280 Python Docs

# Adafruit BNO055 + BMP280 BFF

## BNO055 Python Docs

# Adafruit BNO055 + BMP280 BFF

## Arduino

Using the BNO055 + BMP280 BFF with Arduino involves involves plugging the breakout into your Arduino-compatible QT Py or Xiao form factor board, installing the [Adafruit\_BNO055](https://github.com/adafruit/Adafruit_BNO055) and [Adafruit\_BMP280](https://github.com/adafruit/Adafruit_BMP280_Library) libraries, and running the provided example code.

If you are using an Espressif board (ESP32/S2/S3) make sure you are using [board support package 3.0.0](https://github.com/espressif/arduino-esp32/tree/3.0.0-rc1) or newer to avoid issues with I2C clock-stretching.

Warning: The BNO055 I2C implementation violates the I2C protocol in some circumstances. This causes it not to work well with certain chip families. It does not work well with I2C multiplexers or Espressif chips with older board support packages. Operation with SAMD51, RP2040, STM32F4, nRF52840 and Espressif with BSP 3.0.0 or newer are more reliable.

## Wiring

Plug a BNO055 + BMP280 BFF into your QT Py or Xiao form factor board exactly as shown below. Here's an example of connecting a QT Py RP2040 to the BFF.

Connect the QT Py RP2040 with plug headers into the BNO055 + BMP280 BFF with socket headers. They should be plugged in with the backs of the boards facing each other.

For more information on soldering socket headers,&nbsp;[check out this Learn Guide](https://learn.adafruit.com/how-to-solder-headers/female-headers).

![sensors_5937-03.jpg](https://cdn-learn.adafruit.com/assets/assets/000/129/441/medium640/sensors_5937-03.jpg?1713443404)

[How to Solder Headers Learn Guide](https://learn.adafruit.com/how-to-solder-headers/female-headers)
## Library Installation

You can install the **Adafruit BNO055** and **Adafruit BMP280** libraries for Arduino using the Library Manager in the Arduino IDE.

![](https://cdn-learn.adafruit.com/assets/assets/000/129/442/medium800/sensors_Arduino_Open_Library_Manager.png?1713443467)

Click the&nbsp; **Manage Libraries ...** &nbsp;menu item, search for&nbsp; **Adafruit BMP280** &nbsp;and select the&nbsp; **Adafruit BMP280** &nbsp;library:

![](https://cdn-learn.adafruit.com/assets/assets/000/129/443/medium800/sensors_bmp280_lib.png?1713443501)

If asked about dependencies, click "Install all".

![](https://cdn-learn.adafruit.com/assets/assets/000/129/444/medium800/sensors_bmp280_depends.png?1713443522)

If the "Dependencies" window does not come up, then you already have the dependencies installed.

Warning: If the dependencies are already installed, you must make sure you update them through the Arduino Library Manager before loading the example!

Then, search for **Adafruit BNO055** and select the **Adafruit BNO055** library:

![](https://cdn-learn.adafruit.com/assets/assets/000/129/445/medium800/sensors_bno055_lib.png?1713443619)

Info: The BNO055 library has the same library dependencies as the BMP280.

## Example Code
https://github.com/adafruit/Adafruit_Learning_System_Guides/blob/main/BNO055_BMP280_BFF_Examples/BNO055_BMP280_BFF_Arduino_Demo/BNO055_BMP280_BFF_Arduino_Demo.ino

Upload the sketch to your board and open up the Serial Monitor ( **Tools -\> Serial Monitor** ) at 115200 baud. You'll see the BNO055 and BMP280 sensors recognized over I2C. Then, you'll see sensor data from the BNO055 and the BMP280 print out to the Serial Monitor.

![](https://cdn-learn.adafruit.com/assets/assets/000/129/446/medium800/sensors_arduinoSerial.png?1713443683)

# Adafruit BNO055 + BMP280 BFF

## BMP280 Arduino Docs

# Adafruit BNO055 + BMP280 BFF

## BNO055 Arduino Docs

# Adafruit BNO055 + BMP280 BFF

## Downloads

## Files

- [BNO055 Datasheet](https://cdn-shop.adafruit.com/datasheets/BST_BNO055_DS000_12.pdf)
- [BMP280 Datasheet](https://cdn-shop.adafruit.com/datasheets/BST-BMP280-DS001-11.pdf)
- [EagleCAD PCB files on GitHub](https://github.com/adafruit/Adafruit-BNO055-BMP280-BFF-PCB)
- [Fritzing object in the Adafruit Fritzing Library](https://github.com/adafruit/Fritzing-Library/blob/master/parts/Adafruit%20BNO055%20and%20BMP280%20BFF.fzpz)

## Schematic and Fab Print
![](https://cdn-learn.adafruit.com/assets/assets/000/129/424/medium800/sensors_schem.png?1713295695)

![](https://cdn-learn.adafruit.com/assets/assets/000/129/425/medium800/sensors_fab.png?1713295701 dimensions are in inches)


## Primary Products

### Adafruit BNO055 + BMP280 BFF Add-On for QT Py

[Adafruit BNO055 + BMP280 BFF Add-On for QT Py](https://www.adafruit.com/product/5937)
Our QT Py boards are a great way to make very small microcontroller projects that pack a ton of power - and now we have a way for you to turn many QT Py boards into powerful 9 degree-of-freedom (9DoF)&nbsp;motion plus&nbsp;pressure/altitude sensing projects that are super small!

We call...

In Stock
[Buy Now](https://www.adafruit.com/product/5937)
[Related Guides to the Product](https://learn.adafruit.com/products/5937/guides)

## Featured Products

### Short Female Header Kit for ItsyBitsy

[Short Female Header Kit for ItsyBitsy](https://www.adafruit.com/product/4174)
These three **Short** &nbsp; **Female&nbsp;Headers** &nbsp;alone are, well, lonely. But pair them with any of our&nbsp;[ItsyBitsy](https://www.adafruit.com/?q=itsybitsy)&nbsp;boards, and you're in business!

These headers are particularly cute and...

In Stock
[Buy Now](https://www.adafruit.com/product/4174)
[Related Guides to the Product](https://learn.adafruit.com/products/4174/guides)
### Short Male Header Kit for ItsyBitsy

[Short Male Header Kit for ItsyBitsy](https://www.adafruit.com/product/4173)
These three&nbsp; **Short** &nbsp; **Male&nbsp;Headers** &nbsp;alone are, well, lonely. But pair them with&nbsp;our [ItsyBitsy boards](https://www.adafruit.com/?q=itsybitsy), and you're in business!

These 2.54mm / 0.1" pitch headers are...

In Stock
[Buy Now](https://www.adafruit.com/product/4173)
[Related Guides to the Product](https://learn.adafruit.com/products/4173/guides)
### 20-pin 0.1" Female Headers - Rainbow Color Mix - 5 pack

[20-pin 0.1" Female Headers - Rainbow Color Mix - 5 pack](https://www.adafruit.com/product/4160)
Female header is like the duct tape of electronics. It's great for connecting things together, soldering to perf-boards, sockets for wires or break-away header, etc. We go through these real fast, and thought that given how handy they are, we'd offer them in a pack of five!

Each...

Out of Stock
[Buy Now](https://www.adafruit.com/product/4160)
[Related Guides to the Product](https://learn.adafruit.com/products/4160/guides)
### Break-away 0.1" 36-pin strip male header - Black - 10 pack

[Break-away 0.1" 36-pin strip male header - Black - 10 pack](https://www.adafruit.com/product/392)
Breakaway header is like the duct tape of electronics. It's great for connecting things together, soldering to perf-boards, fits into any breakout or breadboard, etc. We go through these guys real fast, and thought that given how handy they are, we'd offer them in a pack of ten!<br...></br...>

In Stock
[Buy Now](https://www.adafruit.com/product/392)
[Related Guides to the Product](https://learn.adafruit.com/products/392/guides)

## Related Guides

- [LSM6DSOX, ISM330DHC, & LSM6DSO32 6 DoF IMUs](https://learn.adafruit.com/lsm6dsox-and-ism330dhc-6-dof-imu.md)
- [Arduino "Hunt The Wumpus"](https://learn.adafruit.com/arduino-hunt-the-wumpus.md)
- [CircuitPython Hardware: Charlieplex LED Matrix](https://learn.adafruit.com/micropython-hardware-charlieplex-led-matrix.md)
- [Adafruit TLV320DAC3100 I2S DAC](https://learn.adafruit.com/adafruit-tlv320dac3100-i2s-dac.md)
- [New Years Eve Ball Drop](https://learn.adafruit.com/new-years-eve-ball-drop.md)
- [Gemma M0 Sheikah Pendant](https://learn.adafruit.com/gemma-m0-sheikah-pendant.md)
- [ESP-NOW in CircuitPython](https://learn.adafruit.com/esp-now-in-circuitpython.md)
- [Adafruit MAX17048 LiPoly / LiIon Fuel Gauge and Battery Monitor](https://learn.adafruit.com/adafruit-max17048-lipoly-liion-fuel-gauge-and-battery-monitor.md)
- [Bluetooth CLUE Robot Car using CircuitPython](https://learn.adafruit.com/bluetooth-clue-robot-car-using-circuitpython.md)
- [LSM303 Accelerometer + Compass Breakout](https://learn.adafruit.com/lsm303-accelerometer-slash-compass-breakout.md)
- [Snow Globe with Circuit Playground Bluefruit](https://learn.adafruit.com/snow-globe-bluefruit-cpb.md)
- [Twin Peaks Light Reactive Picture Frame](https://learn.adafruit.com/twin-peaks-light-reactive-pyportal-picture-frame.md)
- [How to Choose a Microcontroller](https://learn.adafruit.com/how-to-choose-a-microcontroller.md)
- [Adafruit BMP580, BMP581, and BMP585 - Temperature and Pressure Sensor](https://learn.adafruit.com/adafruit-bmp580-bmp581-and-bmp585-temperature-and-pressure-sensor.md)
- [Adafruit PiCowbell CAN Bus for Pico](https://learn.adafruit.com/adafruit-picowbell-can-bus-for-pico.md)
