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 物件的形式公開。該板的兩個硬體版本皆可透明地處理:

  • Rev 1 使用單一顆 LSM9DS1 九軸 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 回應,則實例化一組 BMI270BMM150(Nano 33 BLE Sense Rev 2),否則實例化一顆 LSM9DS1(Rev 1)。底層驅動程式會保留在 imu 屬性上,並以預設量程與輸出資料率進行設定。

accel() tuple[float, float, float]

g(標準重力加速度)為單位,將最新的加速度計讀數以 (x, y, z) 元組形式回傳。

gyro() tuple[float, float, float]

以每秒度數為單位,將最新的陀螺儀讀數以 (x, y, z) 元組形式回傳。

magnet() tuple[float, float, float]

以微特斯拉(uT)為單位,將最新的磁力計讀數以 (x, y, z) 元組形式回傳。