lsm6dsox — LSM6DSOX 6축 IMU¶
I2C 또는 SPI를 통한 ST LSM6DSOX iNEMO 6축 관성 측정 장치(3축 가속도계와 3축 자이로스코프) 드라이버입니다. 기본 IMU 출력 외에도 이 드라이버는 온칩 임베디드 기능을 제공합니다: 구성 가능한 보수계(걸음 수 카운터)와 Machine Learning Core(MLC)로, MLC는 ST의 Unico-GUI 도구에서 내보낸 UCF 파일을 통해 프로그래밍할 수 있습니다.
예제:
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초당 각도(degrees-per-second) 단위의 자이로스코프 풀스케일 범위입니다.
250,500,1000또는2000중 하나여야 합니다.accel_scaleg 단위의 가속도계 풀스케일 범위입니다.
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 프로그램을 적용합니다. 드라이버는 파일을 한 줄씩 따라가며 각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핀으로 라우팅합니다.