imu --- Arduino Nano 33 BLE Sense 用 IMU ヘルパー

注釈

このページでは、Arduino Nano 33 BLE Sense の Python imu モジュール(オンボードIMUドライバの小さなラッパー)について説明します。OPENMV_N6、OPENMV_RT1060、OPENMV_AE3 のカメラボードに搭載される OpenMV のCレベル imu モジュールについては、imu --- imu センサー を参照してください。

このモジュールは、Arduino Nano 33 BLE Sense のオンボード慣性計測ユニットを単一の IMU オブジェクトとして公開する、ボード固有の薄いラッパーです。ボードの両方のハードウェアリビジョンが透過的に扱われます:

  • Rev 1 は単一の LSM9DS1 9軸IMUを使用します。

  • Rev 2 は Bosch BMI270(加速度センサー + ジャイロスコープ)と Bosch BMM150 磁力計を組み合わせています。

コンストラクタはI2Cバスをプローブして BMI270 アドレス(0x68)を探し、一致するドライバを自動的に選択します。そのため、ユーザーコードは一度書けばどちらのリビジョンでも実行できます。

例:

import time
import imu
from machine import Pin, I2C

bus = I2C(1, scl=Pin("P15"), sda=Pin("P14"))
sensor = imu.IMU(bus)

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

class IMU

class imu.IMU(bus: 'machine.I2C')

I2CバスにバインドされたIMUオブジェクトを構築します。

  • bus は、オンボードIMUに接続された初期化済みの machine.I2C インスタンスです。

構築時にバスがスキャンされます: アドレス 0x68 でデバイスが応答した場合は BMI270BMM150 のペアがインスタンス化され(Nano 33 BLE Sense Rev 2)、そうでなければ LSM9DS1 がインスタンス化されます(Rev 1)。基盤となるドライバは imu 属性に保持され、デフォルトのレンジと出力データレートで設定されます。

accel() tuple[float, float, float]

最新の加速度センサーの読み取り値を、g(標準重力加速度)単位の (x, y, z) タプルとして返します。

gyro() tuple[float, float, float]

最新のジャイロスコープの読み取り値を、度毎秒単位の (x, y, z) タプルとして返します。

magnet() tuple[float, float, float]

最新の磁力計の読み取り値を、マイクロテスラ(uT)単位の (x, y, z) タプルとして返します。