

The BNO08x is a 9-axis absolute orientation sensor that integrates a 3-axis accelerometer, a 3-axis gyroscope, and a 3-axis magnetometer. It features an onboard microcontroller that performs sensor fusion, delivering highly accurate orientation data. This makes it an ideal choice for applications requiring precise motion tracking and navigation.








| Parameter | Value |
|---|---|
| Operating Voltage | 1.8V to 3.6V |
| Communication Interfaces | I²C, SPI, UART |
| Accelerometer Range | ±2g, ±4g, ±8g, ±16g |
| Gyroscope Range | ±125°/s, ±250°/s, ±500°/s, ±1000°/s |
| Magnetometer Range | ±1300 µT |
| Output Data Rate (ODR) | Configurable, up to 800 Hz |
| Power Consumption | ~1.3 mA (typical, varies with mode) |
| Operating Temperature | -40°C to +85°C |
| Package Type | LGA-28 (4.5 mm x 4.5 mm x 1.1 mm) |
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | VDD | Main power supply (1.8V to 3.6V) |
| 2 | VDDIO | I/O voltage supply |
| 3 | GND | Ground |
| 4 | SDA | I²C data line |
| 5 | SCL | I²C clock line |
| 6 | CS | Chip select for SPI interface |
| 7 | SDO | SPI data output |
| 8 | SDI | SPI data input |
| 9 | INT | Interrupt output |
| 10 | RST | Reset pin |
| 11-28 | NC | Not connected |
The BNO08x can be connected to an Arduino UNO using the I²C interface. Below is an example code snippet to read orientation data:
#include <Wire.h>
#include <Adafruit_BNO08x.h>
// Create an instance of the BNO08x sensor
Adafruit_BNO08x bno08x;
// Define the I2C address of the BNO08x
#define BNO08X_I2C_ADDR 0x4A
void setup() {
Serial.begin(115200); // Initialize serial communication
Wire.begin(); // Initialize I2C communication
// Initialize the BNO08x sensor
if (!bno08x.begin_I2C(BNO08X_I2C_ADDR)) {
Serial.println("Failed to initialize BNO08x! Check connections.");
while (1); // Halt execution if initialization fails
}
Serial.println("BNO08x initialized successfully!");
}
void loop() {
// Read orientation data
sensors_event_t orientationEvent;
if (bno08x.getEvent(&orientationEvent, Adafruit_BNO08x::SENSOR_ORIENTATION)) {
Serial.print("Orientation: ");
Serial.print("X: "); Serial.print(orientationEvent.orientation.x, 2);
Serial.print(" Y: "); Serial.print(orientationEvent.orientation.y, 2);
Serial.print(" Z: "); Serial.println(orientationEvent.orientation.z, 2);
} else {
Serial.println("Failed to read orientation data.");
}
delay(100); // Delay to limit data output rate
}
Sensor Not Detected:
Inaccurate Orientation Data:
Interrupts Not Triggering:
By following this documentation, you can effectively integrate the BNO08x into your projects and achieve accurate motion tracking and orientation sensing.