bmi270 — BMI270 6축 IMU

I2C를 통해 동작하는 Bosch BMI270 저전력 6축 관성 측정 장치(3축 가속도계 + 3축 자이로스코프)용 드라이버입니다. 이 드라이버는 객체 생성 시 BMI270의 전체 초기화 시퀀스(소프트 리셋, 절전 모드 해제, 구성 블롭 업로드 및 상태 검증)를 수행한 후 요청된 출력 데이터 레이트와 풀스케일 범위를 구성합니다.

이 클래스는 선택적으로 외부 bmm150.BMM150 자력계 인스턴스에 연결할 수 있으며, 그러면 호출자는 magnet() 메서드를 통해 BMI270 + BMM150 쌍을 단일 9축 장치로 다룰 수 있습니다.

참고

이 드라이버는 SPI 모드를 지원하지 않습니다. I2C가 아닌 버스를 전달하면 ValueError가 발생합니다.

예제:

import time
from machine import Pin, I2C
from bmi270 import BMI270

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

클래스

class bmi270.BMI270(bus: machine.I2C, cs: machine.Pin | None = None, address: int = 0x68, gyro_odr: float = 100, gyro_scale: int = 2000, accel_odr: float = 100, accel_scale: int = 4, bmm_magnet: BMM150 | None = None)

BMI270 인스턴스를 생성하고 전체 구성 로드 초기화 시퀀스를 실행합니다. 칩 ID가 일치하지 않거나 로드 시퀀스가 실패하면 OSError를 발생시킵니다.

bus

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

cs

SPI 모드용으로 예약되어 있습니다. None으로 두어야 합니다. SPI는 현재 구현되어 있지 않으며 I2C가 아닌 버스를 전달하면 ValueError가 발생합니다.

address

장치의 7비트 I2C 주소입니다. 기본값은 0x68이며, 일부 보드는 SDO 핀을 하이로 스트랩하여 0x69를 선택합니다.

gyro_odr

자이로스코프 출력 데이터 레이트(Hz)입니다. 0.78, 1.5, 3.1, 6.25, 12.5, 25, 50, 100, 200, 400, 800, 1200 중 하나여야 합니다.

gyro_scale

자이로스코프 풀스케일 범위(초당 도)입니다. 125, 250, 500, 1000, 2000 중 하나여야 합니다.

accel_odr

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

accel_scale

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

bmm_magnet

선택적 bmm150.BMM150 인스턴스입니다. 제공되면 magnet() 메서드가 이 인스턴스에 위임하고, 그렇지 않으면 magnet()는 0을 반환합니다.

reset() None

BMI270 소프트 리셋 명령을 실행합니다. 이를 호출한 후에는 추가로 사용하기 전에 장치를 다시 초기화해야 합니다.

gyro() tuple[float, float, float]

gyro_scale에 따라 스케일링된, 초당 도 단위의 자이로스코프 벡터 (x, y, z)를 반환합니다.

accel() tuple[float, float, float]

accel_scale에 따라 스케일링된, 표준 중력 단위(1 g = 9.81 m/s²)의 가속도 벡터 (x, y, z)를 반환합니다.

magnet() tuple[float, float, float]

객체 생성 시 bmm_magnet이 제공되었다면 해당 장치에서 가장 최근의 자력계 측정값을 반환합니다. 그렇지 않으면 (0.0, 0.0, 0.0)을 반환합니다.