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

How to Use BNO055: Examples, Pinouts, and Specs

Image of BNO055
Cirkit Designer LogoDesign with BNO055 in Cirkit Designer

Introduction

The BNO055 is a 9-axis absolute orientation sensor developed by Adafruit. It integrates a 3-axis accelerometer, a 3-axis gyroscope, and a 3-axis magnetometer into a single package. Unlike traditional sensors, the BNO055 features an onboard microcontroller that fuses raw sensor data to provide accurate orientation information in the form of Euler angles or quaternions. This eliminates the need for complex sensor fusion algorithms on the host microcontroller.

Explore Projects Built with BNO055

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 BNO055 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
ESP32-Based Orientation Sensor Interface
Image of ESP32 Gyro module: A project utilizing BNO055 in a practical application
This circuit connects an ESP32 microcontroller to a BNO055 sensor. The ESP32's I2C pins (D21 for SDA and D22 for SCL) are interfaced with the BNO055's SDA and SCL pins, enabling communication between the microcontroller and the sensor. Power and ground connections are also established from the ESP32 to the BNO055, with the ESP32's 3V3 pin supplying power to the BNO055's Vin pin.
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 BNO055 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 R4 WiFi Controlled Data Logger with BNO055 Sensor and Micro SD Storage
Image of Main Telemetry R4: A project utilizing BNO055 in a practical application
This circuit features an Arduino UNO R4 WiFi microcontroller connected to a Micro SD Card Module for data storage, a BNO055 sensor for orientation data, and three red LEDs for indication purposes. The LEDs are controlled by digital pins D2, D3, and D4, and can be turned on or off using a single-pole single-throw (SPST) toggle switch connected to their common cathodes and ground. The BNO055 sensor interfaces with the Arduino via I2C communication using the SDA and SCL pins, and the Micro SD Card Module is interfaced using SPI with chip select on pin D10 and data lines on pins D11 (MOSI), D12 (MISO), and D13 (SCK).
Cirkit Designer LogoOpen Project in Cirkit Designer

Explore Projects Built with BNO055

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 BNO055 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 ESP32 Gyro module: A project utilizing BNO055 in a practical application
ESP32-Based Orientation Sensor Interface
This circuit connects an ESP32 microcontroller to a BNO055 sensor. The ESP32's I2C pins (D21 for SDA and D22 for SCL) are interfaced with the BNO055's SDA and SCL pins, enabling communication between the microcontroller and the sensor. Power and ground connections are also established from the ESP32 to the BNO055, with the ESP32's 3V3 pin supplying power to the BNO055's Vin pin.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of bno085: A project utilizing BNO055 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 Main Telemetry R4: A project utilizing BNO055 in a practical application
Arduino UNO R4 WiFi Controlled Data Logger with BNO055 Sensor and Micro SD Storage
This circuit features an Arduino UNO R4 WiFi microcontroller connected to a Micro SD Card Module for data storage, a BNO055 sensor for orientation data, and three red LEDs for indication purposes. The LEDs are controlled by digital pins D2, D3, and D4, and can be turned on or off using a single-pole single-throw (SPST) toggle switch connected to their common cathodes and ground. The BNO055 sensor interfaces with the Arduino via I2C communication using the SDA and SCL pins, and the Micro SD Card Module is interfaced using SPI with chip select on pin D10 and data lines on pins D11 (MOSI), D12 (MISO), and D13 (SCK).
Cirkit Designer LogoOpen Project in Cirkit Designer

Common Applications and Use Cases

  • Robotics for precise motion tracking and navigation
  • Drones for stable flight and orientation control
  • Virtual reality (VR) and augmented reality (AR) systems
  • Wearable devices for activity tracking
  • Industrial automation and human-machine interfaces

Technical Specifications

The BNO055 is a highly versatile sensor with the following key specifications:

Parameter Value
Operating Voltage 3.3V to 5V
Communication Interfaces I²C, UART
Power Consumption ~12mA (typical)
Accelerometer Range ±2g, ±4g, ±8g, ±16g
Gyroscope Range ±125°/s, ±250°/s, ±500°/s, ±2000°/s
Magnetometer Range ±1300µT
Output Data Formats Euler angles, quaternions, linear acceleration, gravity vector
Operating Temperature Range -40°C to +85°C
Dimensions 20mm x 22mm x 3.5mm

Pin Configuration and Descriptions

The BNO055 breakout board from Adafruit has the following pin layout:

Pin Name Description
VIN Power input (3.3V to 5V)
GND Ground connection
SDA I²C data line
SCL I²C clock line
PS0 Protocol selection pin (set to LOW for I²C, HIGH for UART)
PS1 Protocol selection pin (set to LOW for I²C, HIGH for UART)
RST Reset pin (active LOW)
INT Interrupt pin (optional, used for advanced features)
TX UART transmit line (used when UART protocol is selected)
RX UART receive line (used when UART protocol is selected)

Usage Instructions

How to Use the BNO055 in a Circuit

  1. Power the Sensor: Connect the VIN pin to a 3.3V or 5V power source and the GND pin to ground.
  2. Select Communication Protocol:
    • For I²C: Connect the PS0 and PS1 pins to GND.
    • For UART: Connect the PS0 and PS1 pins to VIN.
  3. Connect Communication Lines:
    • For I²C: Connect the SDA and SCL pins to the corresponding I²C pins on your microcontroller.
    • For UART: Connect the TX and RX pins to the UART pins on your microcontroller.
  4. Install Required Libraries: If using an Arduino, install the Adafruit BNO055 library via the Arduino Library Manager.
  5. Write Code: Use the library functions to initialize the sensor, configure settings, and read orientation data.

Important Considerations and Best Practices

  • I²C Pull-Up Resistors: Ensure that the I²C lines (SDA and SCL) have appropriate pull-up resistors (typically 4.7kΩ).
  • Mounting Orientation: Mount the sensor securely and ensure it is aligned with the axes of your system for accurate readings.
  • Calibration: Perform the sensor's built-in calibration routine for optimal accuracy. This includes accelerometer, gyroscope, and magnetometer calibration.
  • Avoid Magnetic Interference: Keep the sensor away from strong magnetic fields, which can affect the magnetometer's accuracy.

Example Code for Arduino UNO

Below is an example of how to use the BNO055 with an Arduino UNO via I²C:

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

// Create an instance of the BNO055 sensor
Adafruit_BNO055 bno = Adafruit_BNO055(55);

void setup() {
  Serial.begin(9600);
  // Initialize the BNO055 sensor
  if (!bno.begin()) {
    Serial.println("Error: BNO055 not detected. Check connections.");
    while (1);
  }
  Serial.println("BNO055 initialized successfully!");

  // Set the sensor to NDOF mode (sensor fusion mode)
  bno.setMode(Adafruit_BNO055::OPERATION_MODE_NDOF);

  // Allow time for the sensor to stabilize
  delay(1000);
}

void loop() {
  // Get orientation data (Euler angles)
  sensors_event_t event;
  bno.getEvent(&event);

  // Print orientation data to the Serial Monitor
  Serial.print("Heading: ");
  Serial.print(event.orientation.x);
  Serial.print("°, Pitch: ");
  Serial.print(event.orientation.y);
  Serial.print("°, Roll: ");
  Serial.print(event.orientation.z);
  Serial.println("°");

  delay(500); // Delay for readability
}

Troubleshooting and FAQs

Common Issues and Solutions

  1. Sensor Not Detected:

    • Cause: Incorrect wiring or communication protocol mismatch.
    • Solution: Double-check the connections and ensure the PS0 and PS1 pins are set correctly for the desired protocol.
  2. Inaccurate Readings:

    • Cause: Sensor not calibrated or exposed to magnetic interference.
    • Solution: Perform the calibration routine and keep the sensor away from magnetic sources.
  3. No Data Output:

    • Cause: Incorrect library installation or initialization failure.
    • Solution: Ensure the Adafruit BNO055 library is installed and the sensor is initialized properly in the code.
  4. Random Freezing or Crashes:

    • Cause: Insufficient power supply or unstable connections.
    • Solution: Use a stable power source and check all connections for reliability.

FAQs

Q: Can the BNO055 be used with 5V logic microcontrollers?
A: Yes, the BNO055 breakout board includes level-shifting circuitry, making it compatible with both 3.3V and 5V logic.

Q: How do I perform calibration?
A: The Adafruit library includes functions to check calibration status and guide you through the calibration process. Follow the library's examples for detailed instructions.

Q: What is the maximum I²C clock speed supported?
A: The BNO055 supports I²C clock speeds up to 400kHz (Fast Mode).

Q: Can I use the BNO055 for GPS-based navigation?
A: The BNO055 does not include GPS functionality, but it can complement GPS modules by providing orientation and motion data.