lsm6dsox --- LSM6DSOX 6 軸 IMU¶
ST LSM6DSOX iNEMO 6 軸慣性計測ユニット(3 軸加速度計と 3 軸ジャイロスコープ)を I2C または SPI 経由で扱うドライバです。基本的な IMU 出力に加えて、このドライバはオンチップの組み込み機能を公開します。すなわち、設定可能な歩数計(ステップカウンタ)と、ST の Unico-GUI ツールからエクスポートした UCF ファイルでプログラムできる Machine Learning Core(MLC)です。
例:
import time
from machine import I2C
from lsm6dsox import LSM6DSOX
# Use the I2C bus the LSM6DSOX is wired to on your board.
lsm = LSM6DSOX(I2C(1))
# SPI alternative (replace cs= with your board's chip-select pin):
# from machine import SPI, Pin
# lsm = LSM6DSOX(SPI(1), cs=Pin("CS"))
while True:
print("Accelerometer: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*lsm.accel()))
print("Gyroscope: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*lsm.gyro()))
time.sleep_ms(100)
クラス¶
- class lsm6dsox.LSM6DSOX(bus: machine.I2C | machine.SPI, cs: machine.Pin | None = None, address: int = 0x6A, gyro_odr: float = 104, accel_odr: float = 104, gyro_scale: int = 2000, accel_scale: int = 4, ucf: str | None = None)¶
LSM6DSOXインスタンスを構築します。バスの種類は自動検出されます。busがreadfrom_memを公開していればmachine.I2Cとして扱われ、そうでなければmachine.SPIとして扱われ、csを指定する必要があります。チップはソフトリセットされ、要求された ODR とスケールがプログラムされ、指定されていれば MLC UCF ファイルが読み込まれます。bus設定済みの
machine.I2Cまたはmachine.SPIバスのいずれか。csSPI モードで使用するチップセレクトの
machine.Pin。busが SPI インスタンスの場合は必須で、それ以外の場合は無視されます。addressデバイスの 7 ビット I2C アドレス。デフォルトは
0x6Aです。一部のボードでは SDO ピンを High に固定しており、その場合は0x6Bが選択されます。gyro_odrジャイロスコープの出力データレート(Hz)。
0(オフ)、1.6、3.33、6.66、12.5、26、52、104、208、416、888のいずれかでなければなりません。accel_odr加速度計の出力データレート(Hz)。
gyro_odrと同じ値の集合です。gyro_scaleジャイロスコープのフルスケール範囲(度毎秒)。
250、500、1000、2000のいずれかでなければなりません。accel_scale加速度計のフルスケール範囲(g)。
2、4、8、16のいずれかでなければなりません。ucfST Unico-GUI の
.ucfレジスタダンプファイルへの任意のパス。指定された場合、ファイルが解析され、load_mlc()を介して構築時に MLC へ適用されます。
- reset() None¶
CTRL3_Cを介してソフトウェアリセットを発行し、リセットビットがクリアされるまでブロックします。デバイスが 10 回のリトライ以内に復帰しない場合はOSErrorを送出します。
- set_mem_bank(bank: int) None¶
FUNC_CFG レジスタバンクを切り替えます。組み込み機能やセンサーハブのレジスタページにアクセスするために内部で使用されます。アプリケーションコードで必要になることはほとんどありません。
- set_embedded_functions(enable: bool, emb_ab: tuple[int, int] | None = None) tuple[int, int]¶
組み込み機能ブロックを有効または無効にします。
enableがTrueの場合、2 バイトのemb_abタプルがEMB_FUNC_EN_A/EMB_FUNC_EN_Bに書き込まれます。Falseの場合、現在の値が読み出され、MLC/歩数計の有効化ビットがクリアされ、後で復元できるように以前の値が返されます。
- load_mlc(ucf: str) None¶
パス
ucfのファイルから MLC UCF プログラムを適用します。ドライバはファイルを 1 行ずつ走査し、各Ac <reg> <val>の書き込みを適用した後、BDU を有効にし、MLC イベントを割り込みピン 1 へルーティングし、組み込み機能を再び有効にします。
- mlc_output() bytes | None¶
新しい MLC の結果が利用可能な場合(
MLC_STATUSビットがセットされている場合)、8 つのMLC0_SRC..MLC7_SRCレジスタの内容を bytes 様オブジェクトとして返します。そうでなければNoneを返します。
- pedometer_config(enable: bool = True, debounce: int = 10, int1_enable: bool = False, int2_enable: bool = False) None¶
組み込み歩数計を設定します。
enable組み込み機能ブロックでのステップ検出を有効または無効にします。
debouncePEDO_DEB_STEPS_CONFに書き込まれるステップのデバウンス値。int1_enableTrueの場合、歩数計イベントをINT1ピンへルーティングします。int2_enableTrueの場合、歩数計イベントをINT2ピンへルーティングします。