imu --- 用于 Arduino Nano 33 BLE Sense 的 IMU 辅助模块¶
备注
本页面记录的是 Arduino Nano 33 BLE Sense 的 Python imu 模块(对板载 IMU 驱动的一个小型封装)。关于在 OPENMV_N6、OPENMV_RT1060 和 OPENMV_AE3 摄像头主板上提供的 OpenMV C 层 imu 模块,请参阅 imu --- imu 传感器。
本模块是一个针对特定主板的轻量封装,它将 Arduino Nano 33 BLE Sense 的板载惯性测量单元(IMU)以单个 IMU 对象的形式暴露出来。该主板的两个硬件版本均可被透明地处理:
Rev 1 使用单个 LSM9DS1 9 轴 IMU。
Rev 2 将 Bosch BMI270(加速度计 + 陀螺仪)与 Bosch BMM150 磁力计组合在一起。
构造函数会在 I2C 总线上探测 BMI270 地址(0x68)并自动选择匹配的驱动,因此用户代码只需编写一次即可在任一版本上运行。
示例:
import time
import imu
from machine import Pin, I2C
bus = I2C(1, scl=Pin("P15"), sda=Pin("P14"))
sensor = imu.IMU(bus)
while True:
print('Accelerometer: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}'.format(*sensor.accel()))
print('Gyroscope: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}'.format(*sensor.gyro()))
print('Magnetometer: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}'.format(*sensor.magnet()))
print("")
time.sleep_ms(100)
class IMU¶
- class imu.IMU(bus: 'machine.I2C')¶
构造一个绑定到 I2C 总线的 IMU 对象。
bus 是一个已初始化的
machine.I2C实例,连接到板载 IMU。
构造时会扫描总线:如果地址
0x68处有设备响应,则实例化一对BMI270加BMM150(Nano 33 BLE Sense Rev 2),否则实例化一个LSM9DS1(Rev 1)。底层驱动保存在imu属性上,并以默认量程和输出数据速率进行配置。