bno055 --- BNO055 IMU ドライバ¶
このモジュールは、I2C 経由で Bosch BNO055 9 軸絶対方位センサーを使用するためのドライバを提供します。BNO055 は加速度計、磁力計、ジャイロスコープのデータをチップ上で融合し、生のセンサーチャンネルに加えて、クォータニオン、オイラー角、線形加速度、重力の出力を提供します。
使用例:
import time
from machine import I2C
import bno055
bus = I2C(1)
imu = bno055.BNO055(bus)
while True:
print(imu.euler())
time.sleep_ms(100)
クラス¶
- class bno055.BNO055(bus: machine.I2C, address: int = 0x28, mode: int = NDOF_MODE, axis: bytes = AXIS_P4)¶
BNO055 ドライバインスタンスを構築します。
busは、センサーとの通信に使用される構成済みのmachine.I2Cバスオブジェクトです。addressはデバイスの 7 ビット I2C アドレスです。デフォルトは0x28です。modeは、リセット後にデバイスを設定する動作モードです。以下の動作モード定数を参照してください。デフォルトはNDOF_MODEです。axisは 2 バイトの軸リマップ構成値です。以下の軸配置定数を参照してください。デフォルトはAXIS_P4です。
コンストラクタは、チップ ID を検証し、ソフトリセットを実行し、通常電源に切り替え、軸構成を適用し、外部発振器を使用して要求された動作モードに入ります。期待される ID レジスタ値が読み戻されない場合は
RuntimeErrorを発生させます。- read_registers(register: int, size: int = 1) bytes¶
指定されたデバイスレジスタから
sizeバイトを読み取り、bytesオブジェクトとして返します。
- operation_mode(mode: int = None) int¶
動作モードレジスタを取得または設定します。引数がない場合は、現在のモードを
intとして返します。mode引数を指定すると、新しいモードをデバイスに書き込みます。以下の動作モード定数を参照してください。
- system_trigger(data: int) None¶
システムトリガレジスタ(
0x3F)にdataを書き込みます。これは、ソフトリセット(0x20)の発行や外部発振器(0x80)の選択のために内部的に使用されます。
- power_mode(mode: int = None) bytes¶
電源モードレジスタを取得または設定します。引数がない場合は、現在の電源モードレジスタの内容を返します。
mode引数を指定すると、新しい電源モードをデバイスに書き込みます。
定数¶
動作モード¶
軸配置¶
以下の 2 バイト値は、デバイス座標系をリマップするために BNO055.axis() に渡されます。各定数は、BNO055 データシート(セクション 3.4、Axis remap)の (AXIS_MAP_CONFIG, AXIS_MAP_SIGN) レジスタペアであり、8 つの標準配置方位のいずれかに対してあらかじめエンコードされています。
チップがホスト PCB 上に物理的にどのように取り付けられているかに、出力軸が一致する定数を選択してください:
定数 |
出力 X |
出力 Y |
出力 Z |
バイト |
取り付け |
|---|---|---|---|---|---|
|
|
|
|
上面向き、P1 から反時計回りに 90° |
|
|
|
|
|
上面向き、データシートのデフォルト |
|
|
|
|
|
上面向き、180° 回転 |
|
|
|
|
|
上面向き、P1 から時計回りに 90° |
|
|
|
|
|
下面向き、X 軸まわりに反転(コンストラクタのデフォルト) |
|
|
|
|
|
下面向き、P4 から反時計回りに 90° 回転 |
|
|
|
|
|
下面向き、P4 から 180° 回転 |
|
|
|
|
|
下面向き、P4 から時計回りに 90° 回転 |
Xc / Yc / Zc はチップの固有の軸を表します(BNO055 データシートに記載されているとおり)。「出力」列は、デバイスが BNO055.euler()、BNO055.gyro() などを介して提供する軸です。P0 から P3 は、部品面を上にした方位におけるチップの 4 つの 90° 回転です。P4 から P7 は、チップを背面に裏返した後の同じ 4 つの回転です。