Cirkit Designer Logo
Cirkit Designer
Your all-in-one circuit design IDE
Home / 
Component Documentation

How to Use BNO085: Examples, Pinouts, and Specs

Image of BNO085
Cirkit Designer LogoDesign with BNO085 in Cirkit Designer

Introduction

The BNO085 is a 9-axis absolute orientation sensor that integrates a 3-axis accelerometer, a 3-axis gyroscope, and a 3-axis magnetometer. This sensor is designed to provide highly accurate motion tracking and orientation data. It is widely used in applications such as robotics, drones, augmented reality (AR), virtual reality (VR), and wearable devices. The BNO085 is capable of fusing sensor data internally, reducing the computational load on the host microcontroller.

Explore Projects Built with BNO085

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
Arduino Nano and BNO055 Sensor with Bluetooth Connectivity
Image of Clutch Pedal Gyro: A project utilizing BNO085 in a practical application
This circuit features an Arduino Nano interfaced with a BNO055 sensor and an HC-05 Bluetooth module. The Arduino communicates with the BNO055 via I2C (using A4 for SDA and A5 for SCL) and with the HC-05 via serial communication (using D0/RX and D1/TX for data transfer). The HC-05's Key and State pins are connected to D2 and D3 of the Arduino for module control, and all components share a common ground with the Arduino powered at 5V and the BNO055 at 3.3V from the Arduino's 3V3 output.
Cirkit Designer LogoOpen Project in Cirkit Designer
Battery-Powered Arduino UNO with BNO085 IMU and Bluetooth HC-06 for Orientation Tracking
Image of bno085: A project utilizing BNO085 in a practical application
This circuit integrates an Arduino UNO with an Adafruit BNO085 9-DOF Orientation IMU and a Bluetooth HC-06 module. The Arduino reads orientation data from the IMU via I2C and transmits it over Bluetooth, powered by a 7.4V battery.
Cirkit Designer LogoOpen Project in Cirkit Designer
Arduino UNO-Based IMU and Bluetooth Communication System
Image of New one: A project utilizing BNO085 in a practical application
This circuit features an Arduino UNO microcontroller interfaced with a Bluetooth HC-06 module for wireless communication and an Adafruit BNO085 9-DOF Orientation IMU for motion sensing. The Arduino handles data acquisition from the IMU via I2C and communicates the data wirelessly through the Bluetooth module.
Cirkit Designer LogoOpen Project in Cirkit Designer
Arduino UNO and BMP085 Based Weather Station with Solar Charging and APC220 Wireless Communication
Image of Vicsat-1: A project utilizing BNO085 in a practical application
This circuit features an Arduino UNO collecting environmental data from a BMP085 sensor and location data from a GPS module, transmitting it wirelessly via an APC220 module. It is powered by a solar-charged lithium-ion battery system, with a secondary Arduino UNO R4 WiFi and APC220 for potential expansion or separate functionality.
Cirkit Designer LogoOpen Project in Cirkit Designer

Explore Projects Built with BNO085

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
Image of Clutch Pedal Gyro: A project utilizing BNO085 in a practical application
Arduino Nano and BNO055 Sensor with Bluetooth Connectivity
This circuit features an Arduino Nano interfaced with a BNO055 sensor and an HC-05 Bluetooth module. The Arduino communicates with the BNO055 via I2C (using A4 for SDA and A5 for SCL) and with the HC-05 via serial communication (using D0/RX and D1/TX for data transfer). The HC-05's Key and State pins are connected to D2 and D3 of the Arduino for module control, and all components share a common ground with the Arduino powered at 5V and the BNO055 at 3.3V from the Arduino's 3V3 output.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of bno085: A project utilizing BNO085 in a practical application
Battery-Powered Arduino UNO with BNO085 IMU and Bluetooth HC-06 for Orientation Tracking
This circuit integrates an Arduino UNO with an Adafruit BNO085 9-DOF Orientation IMU and a Bluetooth HC-06 module. The Arduino reads orientation data from the IMU via I2C and transmits it over Bluetooth, powered by a 7.4V battery.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of New one: A project utilizing BNO085 in a practical application
Arduino UNO-Based IMU and Bluetooth Communication System
This circuit features an Arduino UNO microcontroller interfaced with a Bluetooth HC-06 module for wireless communication and an Adafruit BNO085 9-DOF Orientation IMU for motion sensing. The Arduino handles data acquisition from the IMU via I2C and communicates the data wirelessly through the Bluetooth module.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of Vicsat-1: A project utilizing BNO085 in a practical application
Arduino UNO and BMP085 Based Weather Station with Solar Charging and APC220 Wireless Communication
This circuit features an Arduino UNO collecting environmental data from a BMP085 sensor and location data from a GPS module, transmitting it wirelessly via an APC220 module. It is powered by a solar-charged lithium-ion battery system, with a secondary Arduino UNO R4 WiFi and APC220 for potential expansion or separate functionality.
Cirkit Designer LogoOpen Project in Cirkit Designer

Technical Specifications

  • Sensor Type: 9-axis absolute orientation sensor
  • Interfaces: I²C, SPI, UART
  • Operating Voltage: 1.8V to 3.6V
  • Current Consumption:
    • Typical: 1.3 mA (at 3.3V, accelerometer + gyroscope + magnetometer active)
    • Low-power mode: 0.01 mA
  • Operating Temperature: -40°C to +85°C
  • Output Data: Quaternion, Euler angles, raw sensor data
  • Update Rate: Configurable up to 400 Hz
  • Package: 3.8 mm x 5.2 mm LGA

Pin Configuration and Descriptions

The BNO085 has 14 pins. Below is the pinout and description:

Pin Name Type Description
1 VDD Power Main power supply (1.8V to 3.6V).
2 VDDIO Power I/O voltage supply (1.8V to 3.6V).
3 GND Ground Ground connection.
4 PS0 Input Protocol selection pin 0. Used to select communication protocol.
5 PS1 Input Protocol selection pin 1. Used to select communication protocol.
6 RSTN Input Active-low reset pin.
7 INTN Output Interrupt pin. Signals data availability or events.
8 SCL/SCLK Input I²C clock or SPI clock, depending on the selected protocol.
9 SDA/MOSI Input/Output I²C data or SPI MOSI, depending on the selected protocol.
10 SA0/MISO Input/Output I²C address selection or SPI MISO, depending on the selected protocol.
11 CSN Input SPI chip select (active low).
12 BOOTN Input Boot mode selection.
13 NC - No connection.
14 NC - No connection.

Usage Instructions

How to Use the BNO085 in a Circuit

  1. Power Supply: Connect the VDD and VDDIO pins to a 3.3V power source. Ensure proper decoupling capacitors are placed near the power pins.
  2. Communication Protocol: Use the PS0 and PS1 pins to select the desired communication protocol:
    • I²C: PS0 = 0, PS1 = 0
    • SPI: PS0 = 1, PS1 = 0
    • UART: PS0 = 0, PS1 = 1
  3. Pull-Up Resistors: For I²C communication, connect pull-up resistors (typically 4.7 kΩ) to the SDA and SCL lines.
  4. Interrupt Pin: Connect the INTN pin to a GPIO pin on the host microcontroller to handle interrupts.
  5. Reset Pin: Optionally, connect the RSTN pin to a GPIO pin for manual reset functionality.

Example: Connecting the BNO085 to an Arduino UNO (I²C)

Below is an example of how to connect the BNO085 to an Arduino UNO using the I²C protocol:

  • VDD: Connect to the 3.3V pin on the Arduino.
  • VDDIO: Connect to the 3.3V pin on the Arduino.
  • GND: Connect to the GND pin on the Arduino.
  • SCL: Connect to the A5 pin on the Arduino.
  • SDA: Connect to the A4 pin on the Arduino.
  • PS0: Connect to GND.
  • PS1: Connect to GND.

Arduino Code Example

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BNO08x.h>

// Create an instance of the BNO085 sensor
Adafruit_BNO08x bno = Adafruit_BNO08x();

void setup() {
  Serial.begin(115200);
  while (!Serial) {
    delay(10); // Wait for Serial Monitor to open
  }

  Serial.println("Initializing BNO085...");

  // Initialize I2C communication
  if (!bno.begin_I2C()) {
    Serial.println("Failed to initialize BNO085! Check connections.");
    while (1);
  }

  Serial.println("BNO085 initialized successfully!");
  bno.enableReport(BNO_REPORT_ACCELEROMETER); // Enable accelerometer data
}

void loop() {
  sensors_event_t event;

  // Get accelerometer data
  if (bno.getEvent(&event, Adafruit_BNO08x::SENSOR_ACCELEROMETER)) {
    Serial.print("Accel X: ");
    Serial.print(event.acceleration.x);
    Serial.print(" m/s^2, Y: ");
    Serial.print(event.acceleration.y);
    Serial.print(" m/s^2, Z: ");
    Serial.print(event.acceleration.z);
    Serial.println(" m/s^2");
  }

  delay(100); // Delay for readability
}

Important Considerations and Best Practices

  • Power Supply: Ensure the BNO085 is powered with a stable voltage within the specified range (1.8V to 3.6V). Avoid voltage spikes.
  • Communication Protocol: Select the appropriate protocol based on your application and ensure proper wiring.
  • Interrupt Handling: Use the INTN pin to efficiently handle data availability without constant polling.
  • Magnetometer Calibration: Perform magnetometer calibration in the intended environment to improve accuracy.
  • Placement: Mount the sensor on a stable surface to minimize vibrations and noise.

Troubleshooting and FAQs

Common Issues and Solutions

  1. The sensor is not responding over I²C.

    • Check the wiring and ensure pull-up resistors are connected to the SDA and SCL lines.
    • Verify the I²C address of the BNO085 (default: 0x4A or 0x4B depending on SA0 pin state).
  2. Incorrect or unstable orientation data.

    • Ensure the sensor is mounted securely and away from magnetic interference.
    • Perform a magnetometer calibration.
  3. The Arduino code fails to initialize the sensor.

    • Double-check the connections and ensure the BNO085 is powered correctly.
    • Verify that the Adafruit_BNO08x library is installed and up to date.
  4. The sensor outputs data at an unexpected rate.

    • Check the configured update rate in your code and adjust it as needed.

FAQs

  • Can the BNO085 be used with 5V logic?

    • No, the BNO085 operates at 1.8V to 3.6V. Use a level shifter if interfacing with 5V logic.
  • What is the maximum cable length for I²C communication?

    • The maximum length depends on the pull-up resistor values and the I²C clock speed. For reliable communication, keep the cable length under 1 meter.
  • Does the BNO085 support raw sensor data output?

    • Yes, the BNO085 can output raw accelerometer, gyroscope, and magnetometer data in addition to fused orientation data.