bmi270 --- BMI270 六軸 IMU

適用於 Bosch BMI270 低功耗六軸慣性測量單元(三軸加速度計加三軸陀螺儀)的 I2C 驅動程式。此驅動程式會在建構時執行完整的 BMI270 初始化序列——軟體重設、停用省電模式、上傳組態 blob 並驗證狀態——接著才設定所要求的輸出資料速率與滿量程範圍。

此類別可選擇性地連結到外部的 bmm150.BMM150 磁力計實例,讓呼叫端可以透過 magnet() 方法將 BMI270 + BMM150 這組裝置視為單一的九軸裝置。

備註

此驅動程式不支援 SPI 模式;傳入非 I2C 匯流排會引發 ValueError

範例:

import time
from machine import Pin, I2C
from bmi270 import BMI270

imu = BMI270(I2C(1, scl=Pin("P15"), sda=Pin("P14")))

while True:
    print("Accelerometer: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*imu.accel()))
    print("Gyroscope:     x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*imu.gyro()))
    time.sleep_ms(100)

類別

class bmi270.BMI270(bus: machine.I2C, cs: machine.Pin | None = None, address: int = 0x68, gyro_odr: float = 100, gyro_scale: int = 2000, accel_odr: float = 100, accel_scale: int = 4, bmm_magnet: BMM150 | None = None)

建構一個 BMI270 實例並執行完整的組態載入初始化序列。若晶片 ID 不符或載入序列失敗,則引發 OSError

bus

感測器所連接的已設定 machine.I2C 匯流排。

cs

保留供 SPI 模式使用。必須維持為 None;目前尚未實作 SPI,且傳入非 I2C 匯流排會引發 ValueError

address

裝置的 7 位元 I2C 位址。預設為 0x68;某些電路板將 SDO 接腳上拉至高電位,此時會選用 0x69

gyro_odr

陀螺儀輸出資料速率,單位為 Hz。必須為 0.781.53.16.2512.525501002004008001200 之一。

gyro_scale

陀螺儀滿量程範圍,單位為度每秒。必須為 12525050010002000 之一。

accel_odr

加速度計輸出資料速率,單位為 Hz。可用數值與 gyro_odr 相同。

accel_scale

加速度計滿量程範圍,單位為 g。必須為 24816 之一。

bmm_magnet

選用的 bmm150.BMM150 實例。提供時,magnet() 方法會委派給它;否則 magnet() 會回傳零值。

reset() None

發出 BMI270 軟體重設指令。呼叫後,裝置必須重新初始化才能繼續使用。

gyro() tuple[float, float, float]

回傳陀螺儀向量 (x, y, z),單位為度每秒,並依 gyro_scale 進行縮放。

accel() tuple[float, float, float]

回傳加速度向量 (x, y, z),單位為標準重力加速度(1 g = 9.81 m/s²),並依 accel_scale 進行縮放。

magnet() tuple[float, float, float]

若建構時提供了 bmm_magnet,則回傳該裝置的最新磁力計讀數。否則回傳 (0.0, 0.0, 0.0)