bno055 --- BNO055 IMU 驱动¶
本模块提供通过 I2C 操作 Bosch BNO055 九轴绝对方位传感器的驱动。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参数时,将新模式写入设备。请参见下方的操作模式常量。
常量¶
操作模式¶
坐标轴放置¶
以下 2 字节值会传递给 BNO055.axis() 以重映射设备坐标系。每个常量都是来自 BNO055 数据手册(第 3.4 节,Axis remap)的 (AXIS_MAP_CONFIG, AXIS_MAP_SIGN) 寄存器对,针对八种标准放置方位之一进行了预编码。
请选择其输出坐标轴与芯片在主机 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 是将芯片翻转到背面后的相同四种旋转。