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 that 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 (pitch, roll, yaw) 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

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

Technical Specifications

Key Technical Details

Parameter Value
Operating Voltage 2.4V to 3.6V
Logic Level Compatibility 3.3V (5V tolerant with level shifters)
Communication Interfaces I²C, UART, SPI
Power Consumption 12 mA (typical in normal mode)
Operating Temperature -40°C to +85°C
Sensor Fusion Output Euler angles, quaternions, linear acceleration, gravity

Pin Configuration and Descriptions

Pin Name Pin Number Description
VIN 1 Power supply input (3.3V or 5V)
GND 2 Ground
SDA 3 I²C data line
SCL 4 I²C clock line
PS0 5 Protocol selection pin (I²C/SPI)
PS1 6 Protocol selection pin (I²C/SPI)
RST 7 Reset pin (active low)
INT 8 Interrupt output
TX 9 UART transmit line
RX 10 UART receive line

Usage Instructions

Using the BNO055 in a Circuit

  1. Power Supply: Connect the VIN pin to a 3.3V or 5V power source and the GND pin to ground.
  2. Communication Interface:
    • For I²C, connect the SDA and SCL pins to the corresponding pins on your microcontroller. Pull-up resistors (typically 4.7kΩ) are required on these lines.
    • For UART, connect the TX and RX pins to the UART pins on your microcontroller.
    • For SPI, configure the PS0 and PS1 pins accordingly and connect the SPI lines (MISO, MOSI, SCK, CS).
  3. Protocol Selection: Use the PS0 and PS1 pins to select the desired communication protocol:
    • I²C: PS0 = 0, PS1 = 1
    • UART: PS0 = 1, PS1 = 0
    • SPI: PS0 = 1, PS1 = 1
  4. Reset: Optionally, connect the RST pin to a GPIO pin on your microcontroller for manual reset functionality.

Important Considerations

  • Ensure proper decoupling capacitors are placed near the VIN pin to stabilize the power supply.
  • The BNO055 requires a stable clock signal for accurate measurements. Avoid noisy power sources.
  • Use level shifters if interfacing with a 5V microcontroller to prevent damage to the sensor.

Example Code for Arduino UNO (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 serial communication
  while (!Serial) {
    delay(10); // Wait for the serial port to be ready
  }

  // Initialize the BNO055 sensor
  if (!bno.begin()) {
    Serial.println("BNO055 not detected. Check connections.");
    while (1); // Halt execution if the sensor is not found
  }

  bno.setExtCrystalUse(true); // Use external crystal for better accuracy
  Serial.println("BNO055 initialized successfully.");
}

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

  // Print pitch, roll, and yaw to the serial monitor
  Serial.print("Pitch: ");
  Serial.print(event.orientation.x);
  Serial.print(" Roll: ");
  Serial.print(event.orientation.y);
  Serial.print(" Yaw: ");
  Serial.println(event.orientation.z);

  delay(100); // Delay to avoid flooding the serial monitor
}

Troubleshooting and FAQs

Common Issues

  1. Sensor Not Detected:

    • Ensure the correct I²C address (default: 0x28) is being used.
    • Check the wiring and ensure pull-up resistors are present on the SDA and SCL lines.
    • Verify that the PS0 and PS1 pins are configured for I²C mode.
  2. Incorrect Orientation Data:

    • Ensure the sensor is mounted correctly and aligned with the desired axes.
    • Calibrate the sensor using the built-in calibration routines.
  3. No Data Output:

    • Verify that the communication interface (I²C, UART, or SPI) is correctly configured.
    • Check the power supply voltage and ensure it is within the specified range.

Tips for Troubleshooting

  • Use a logic analyzer or oscilloscope to verify communication signals.
  • Test the sensor with a known working library, such as the Adafruit BNO055 library.
  • If using I²C, scan for devices on the bus to confirm the sensor's address.

By following this documentation, you should be able to successfully integrate and use the BNO055 sensor in your projects.