lsm9ds1 — LSM9DS1 9축 IMU

I2C를 통한 ST LSM9DS1 iNEMO 관성 모듈 드라이버입니다. LSM9DS1은 3축 가속도계, 3축 자이로스코프, 3축 자력계를 단일 패키지에 결합합니다. 가속도계와 자이로스코프는 하나의 I2C 주소를 공유하며 자력계는 두 번째 주소에서 응답합니다. 이 드라이버는 또한 온칩 16단 깊이 자이로/가속도 FIFO를 활성화하여 iter_accel_gyro()를 통해 가장 최근 샘플을 효율적으로 비울 수 있도록 합니다.

예제:

import time
from machine import Pin, I2C
from lsm9ds1 import LSM9DS1

imu = LSM9DS1(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("Magnetometer:  x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*imu.magnet()))
    print("Gyroscope:     x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*imu.gyro()))
    time.sleep_ms(100)

클래스

class lsm9ds1.LSM9DS1(bus: machine.I2C, address_imu: int = 0x6B, address_magnet: int = 0x1E, gyro_odr: float = 952, gyro_scale: int = 245, accel_odr: float = 952, accel_scale: int = 4, magnet_odr: int = 80, magnet_scale: int = 4)

LSM9DS1 인스턴스를 생성하고, 두 하위 장치의 WHO_AM_I 레지스터를 검증하고, 세 센서를 모두 구성하고, 가속도/자이로 FIFO를 연속 모드로 활성화합니다.

bus

센서가 연결된, 구성된 machine.I2C 버스입니다.

address_imu

가속도계/자이로스코프 하위 장치의 7비트 I2C 주소입니다. 기본값은 0x6B입니다.

address_magnet

자력계 하위 장치의 7비트 I2C 주소입니다. 기본값은 0x1E입니다.

gyro_odr

자이로스코프 출력 데이터 레이트(Hz)입니다. 0(꺼짐), 14.9, 59.5, 119, 238, 476 또는 952 중 하나여야 합니다.

gyro_scale

초당 각도(degrees-per-second) 단위의 자이로스코프 풀스케일 범위입니다. 245, 500 또는 2000 중 하나여야 합니다.

accel_odr

가속도계 출력 데이터 레이트(Hz)입니다. gyro_odr과 동일한 값 집합을 사용합니다.

accel_scale

g 단위의 가속도계 풀스케일 범위입니다. 2, 4, 8 또는 16 중 하나여야 합니다.

magnet_odr

자력계 출력 데이터 레이트(Hz)입니다. 0.625, 1.25, 2.5, 5, 10, 20, 40 또는 80 중 하나여야 합니다.

magnet_scale

가우스 단위의 자력계 풀스케일 범위입니다. 4, 8, 12 또는 16 중 하나여야 합니다.

calibrate_magnet(offset: tuple[float, float, float]) None

하드 아이언 오프셋 벡터를 자력계의 OFFSET_REG_*_M 레지스터에 기록합니다. 오프셋은 magnet()이 반환하는 것과 동일한 단위(가우스)로 주어지며, 각 구성 요소는 기록되기 전에 구성된 자력계 스케일을 사용하여 원시 LSB로 변환됩니다.

gyro_id() bytes

가속도계/자이로스코프 하위 장치의 단일 바이트 WHO_AM_I 레지스터 값을 반환합니다.

magent_id() bytes

자력계 하위 장치의 단일 바이트 WHO_AM_I 레지스터 값을 반환합니다.

gyro() tuple[float, float, float]

자이로스코프 벡터 (x, y, z)를 초당 각도 단위로 반환합니다.

accel() tuple[float, float, float]

가속도 벡터 (x, y, z)를 표준 중력 단위(1 g = 9.81 m/s²)로 반환합니다.

magnet() tuple[float, float, float]

자기장 벡터 (x, y, z)를 가우스 단위로 반환합니다.

iter_accel_gyro() Iterator[tuple[tuple[float, float, float], tuple[float, float, float]]]

현재 FIFO에 사용 가능한 모든 샘플에 대해 (gyro, accel) 튜플을 산출하고 FIFO가 비면 멈추는 제너레이터입니다. 각 구성 요소 벡터는 각각 gyro()accel()과 동일한 단위를 가집니다.