adithya-187326/bno055

1.0.1

Latest
uploaded 1 week ago
BNO055 I2C IMU Driver

readme

| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-H2 | ESP32-S3 |
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- |

# _BNO055 ESP-IDF Component_

This component provides a complete ESP-IDF driver for the Bosch BNO055 absolute orientation sensor, which combines accelerometer, gyroscope, and magnetometer data through sensor fusion in an onboard microcontroller.

The driver offers a clean, modular interface for initialization, configuration, data acquisition, calibration management, offset handling, and unit conversions — making it easy to integrate the BNO055 into any ESP-IDF project.

## Features

- Full I²C communication support (no batch writes required)
- Initialization and configuration with error handling
- Operation mode switching (CONFIG, NDOF, IMU, etc.)
- Unit system control (m/s², deg/s, radians, etc.)
- Offset management:
  - Read calibration offsets (`bno055_get_offsets()`)
  - Write saved offsets (`bno055_set_offsets()`)
- Sensor data acquisition:
  - Accelerometer
  - Magnetometer
  - Gyroscope
  - Euler Angles
  - Quaternion
  - Linear Acceleration
  - Gravity
  - Temperature
- Calibration monitoring with detailed status output
- Axis remapping and sign inversion
- Configurable via Kconfig
- Works across all ESP32 targets
- Fully compatible with ESP-IDF ≥ 5.3.2 (includes I²C clock-stretching fix)

## Component Structure

```bash
bno055/
├── include/
│   ├── bno055.h              # Public API
├── src/
│   ├── bno055.c              # Public interface implementation
│   ├── bno055_priv.c         # Internal logic and helpers
│   └── bno055_priv.h
├── Kconfig                   # Configuration options
├── CMakeLists.txt            # Component build definition
├── idf_component.yml         # Component manifest for ESP Registry
└── examples/
    ├── initialization/       # Simple initialization example
    ├── offsets/              # Working with sensor offsets
    ├── axis_remaps/          # Axis remapping example
    └── sensor_readings/      # Data readout example
```

## Configuration (Kconfig)

This example uses the following Kconfig options from the component:
| Setting | Description | Default |
| ----------------------------- | ------------------------- | ------- |
| `CONFIG_BNO055_I2C_FREQUENCY` | I²C frequency (kHz) | `400` |
| `CONFIG_BNO055_SDA_PIN` | SDA GPIO | `2` |
| `CONFIG_BNO055_SCL_PIN` | SCL GPIO | `3` |
| `CONFIG_BNO055_I2C_ADDR` | I²C address (0x28 / 0x29) | `0x28` |
| `CONFIG_BNO055_RESET_PIN` | Reset GPIO (-1 disables) | `-1` |

Modify these using `idf.py menuconfig → BNO055 Configuration`.

## Usage

Refer to the `/examples` directory for:

- initialization: Minimal working setup
- offsets: Working with offsets post calibration
- axis_remaps: Axis reconfiguration after calibration
- sensor_readings: Periodic calibrated sensor data acquisition

## Notes

- Requires ESP-IDF ≥ 5.3.2 for I²C clock stretching compatibility.
- Tested on ESP32, ESP32-C3, and ESP32-S3 targets.
- Logging can be controlled via esp_log_level_set() for BNO055_TAG.
- Offsets and calibration data can be saved and reloaded between sessions.
- Axis remapping requires complete calibration before use.

## License

Licensed under the **MIT License**. \
See the [LICENSE](LICENSE) file for full text.

## Maintainer

**Author:** Adithya Venkata Narayanan ([Adithya-187326](https://github.com/adithya-187326))
**Version:** 1.0.0
**Registry:** ESP Component Registry

Links

Supports all targets

Maintainer

  • Adithya Venkata Narayanan <adithyavnarayanan@gmail.com>

License: MIT

To add this component to your project, run:

idf.py add-dependency "adithya-187326/bno055^1.0.1"

download archive

Stats

  • Archive size
    Archive size ~ 26.58 KB
  • Downloaded in total
    Downloaded in total 0 times
  • Downloaded this version
    This version: 0 times

Badge

adithya-187326/bno055 version: 1.0.1
|