bmi270 --- BMI270 6軸IMU

Bosch BMI270 低消費電力6軸慣性計測ユニット(3軸加速度センサーと3軸ジャイロスコープ)をI2C経由で制御するためのドライバです。このドライバはコンストラクション時にBMI270の完全な初期化シーケンス(ソフトリセット、省電力モードの無効化、構成ブロブのアップロード、ステータス検証)を実行してから、指定された出力データレートとフルスケールレンジを設定します。

このクラスは、外部の bmm150.BMM150 磁力計インスタンスとオプションでリンクできます。これにより、呼び出し側は magnet() メソッドを通じてBMI270とBMM150のペアを単一の9軸デバイスとして扱えます。

注釈

このドライバは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]

gyro_scale に従ってスケーリングされた、ジャイロスコープのベクトル (x, y, z) を度毎秒で返します。

accel() tuple[float, float, float]

accel_scale に従ってスケーリングされた、加速度ベクトル (x, y, z) を標準重力単位(1 g = 9.81 m/s²)で返します。

magnet() tuple[float, float, float]

コンストラクション時に bmm_magnet が指定されていた場合、そのデバイスから最新の磁力計の測定値を返します。それ以外の場合は (0.0, 0.0, 0.0) を返します。