bno055 — BNO055 IMU 드라이버¶
이 모듈은 Bosch BNO055 9축 절대 방위 센서를 I2C로 제어하는 드라이버를 제공합니다. 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를 발생시킵니다.- operation_mode(mode: int = None) int¶
동작 모드 레지스터를 가져오거나 설정합니다. 인자가 없으면 현재 모드를
int로 반환합니다.mode인자가 있으면 새 모드를 장치에 씁니다. 아래의 동작 모드 상수를 참조하십시오.
- system_trigger(data: int) None¶
시스템 트리거 레지스터(
0x3F)에data를 씁니다. 이는 내부적으로 소프트 리셋(0x20)을 발행하고 외부 발진기(0x80)를 선택하는 데 사용됩니다.
- power_mode(mode: int = None) bytes¶
전원 모드 레지스터를 가져오거나 설정합니다. 인자가 없으면 현재 전원 모드 레지스터 내용을 반환합니다.
mode인자가 있으면 새 전원 모드를 장치에 씁니다.
- page(num: int = None) None¶
레지스터 페이지를 가져오거나 설정합니다. 인자가 없으면 현재 페이지 레지스터를 읽습니다.
num인자가 있으면 페이지를 선택합니다.
상수¶
동작 모드¶
축 배치¶
다음 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까지는 부품면이 위를 향한 방향에서 칩을 90°씩 회전한 네 가지이고, P4부터 P7까지는 칩을 뒤집은 후의 동일한 네 가지 회전입니다.