Skip to content
Get started

BMI270 Accelerometer/Gyroscope Sensor

The bmi270 motion platform allows you to use your BMI270 Accelerometer/Gyroscope (datasheet) sensors with ESPHome. The I²C Bus is required to be set up in your configuration for this sensor to work.

The BMI270 is an ultra-low-power IMU optimized for wearable applications. It includes a 16-bit 3-axis accelerometer and a 16-bit 3-axis gyroscope, plus an on-chip temperature sensor. It requires an internal configuration blob to be uploaded at each power-on (handled automatically by this component).

The BMI270 also exposes an auxiliary (secondary I²C master) interface that can optionally drive a Bosch BMM150 magnetometer wired to its AUX pins. A BMM150 on the AUX interface is not visible on the main I²C bus, so the BMI270 reads it on the host’s behalf. Set aux_device to BMM150 to enable it, then read the magnetic field via the BMI270 Sensor platform’s magnetic_field_x/magnetic_field_y/magnetic_field_z types.

# Example configuration entry
motion:
- platform: bmi270
accelerometer_range: 4G
gyroscope_range: 2000DPS
sensor:
- platform: motion
type: acceleration_x
name: "BMI270 Accel X"
- platform: motion
type: gyroscope_x
name: "BMI270 Gyro X"
- platform: motion
type: roll
name: "BMI270 Roll"
  • address (Optional, int): Manually specify the I²C address of the sensor. Defaults to 0x68. The BMI270 supports 0x68 (SDO to GND) and 0x69 (SDO to VDDIO).

  • accelerometer_range (Optional, string): The full-scale range of the accelerometer. One of 2G, 4G, 8G, 16G. Defaults to 4G.

  • accelerometer_odr (Optional, string): The output data rate of the accelerometer. One of 12_5HZ, 25HZ, 50HZ, 100HZ, 200HZ, 400HZ, 800HZ, 1600HZ. Defaults to 100HZ.

  • gyroscope_range (Optional, string): The full-scale range of the gyroscope. One of 125DPS, 250DPS, 500DPS, 1000DPS, 2000DPS. Defaults to 2000DPS.

  • gyroscope_odr (Optional, string): The output data rate of the gyroscope. One of 25HZ, 50HZ, 100HZ, 200HZ, 400HZ, 800HZ, 1600HZ, 3200HZ. Defaults to 200HZ.

  • aux_device (Optional, string): What, if anything, is wired to the BMI270’s auxiliary interface. One of NONE, BMM150. Defaults to NONE.

  • aux_address (Optional, int): The I²C address of the device on the auxiliary interface. Only relevant when aux_device is not NONE. The BMM150 can be set to 0x10–0x13 through its address pins. Defaults to 0x10.

  • All other options from Motion.

As an IMU with both an accelerometer and a gyroscope, the BMI270 supports all of the Motion sensor types, as well as the orientation and gesture binary sensors (face_up, face_down, free_fall, moving) and the shake event.