

The BN0 O55 is a 9 Degrees of Freedom (9DoF) Inertial Measurement Unit (IMU) developed by Adafruit. It integrates an accelerometer, gyroscope, and magnetometer into a single compact module, enabling precise motion tracking and orientation sensing. This component is ideal for applications requiring accurate motion data, such as robotics, navigation systems, drones, and wearable devices.








The BN0 O55 is a high-performance IMU with the following key specifications:
| Parameter | Value |
|---|---|
| Operating Voltage | 3.3V to 5V |
| Communication Protocol | I2C and UART |
| Accelerometer Range | ±2g, ±4g, ±8g, ±16g |
| Gyroscope Range | ±125°/s, ±250°/s, ±500°/s, ±1000°/s, ±2000°/s |
| Magnetometer Range | ±1300µT |
| Operating Temperature | -40°C to +85°C |
| Dimensions | 20mm x 20mm x 3mm |
| Power Consumption | ~3mA (typical) |
The BN0 O55 features a standard pinout for easy integration into circuits. Below is the pin configuration:
| Pin | Name | Description |
|---|---|---|
| 1 | VIN | Power input (3.3V to 5V) |
| 2 | GND | Ground connection |
| 3 | SDA | I2C data line |
| 4 | SCL | I2C clock line |
| 5 | TX | UART transmit line |
| 6 | RX | UART receive line |
| 7 | INT | Interrupt pin for event notifications |
| 8 | RST | Reset pin to restart the module |
0x28. Ensure no address conflicts if multiple I2C devices are used.Below is an example of how to use the BN0 O55 with an Arduino UNO via I2C:
#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("Error: BNO055 not detected. Check connections.");
while (1);
}
Serial.println("BNO055 initialized successfully!");
// Perform sensor calibration
bno.setExtCrystalUse(true); // Use external crystal for better accuracy
}
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("°\tPitch: ");
Serial.print(event.orientation.y);
Serial.print("°\tRoll: ");
Serial.print(event.orientation.z);
Serial.println("°");
delay(500); // Delay for readability
}
Sensor Not Detected:
0x28) is used.Inaccurate Readings:
No Data Output:
Q: Can the BN0 O55 operate at 5V logic levels?
A: Yes, the module is compatible with both 3.3V and 5V logic levels.
Q: How do I reset the module?
A: Pull the RST pin low momentarily to reset the module.
Q: Is the BN0 O55 suitable for outdoor use?
A: Yes, but ensure it is protected from moisture and extreme environmental conditions.
Q: Can I use multiple BN0 O55 modules on the same I2C bus?
A: Yes, but you must configure each module with a unique I2C address.
This documentation provides a comprehensive guide to using the BN0 O55 IMU for motion tracking and orientation sensing. For further assistance, refer to the Adafruit support resources.