imu — вспомогательный модуль IMU для Arduino Nano 33 BLE Sense

Примечание

На этой странице описан Python-модуль imu платы Arduino Nano 33 BLE Sense (небольшая обёртка вокруг встроенных драйверов IMU). Сведения о C-модуле imu от OpenMV, который поставляется на платах камер OPENMV_N6, OPENMV_RT1060 и OPENMV_AE3, см. в imu — датчик imu.

Этот модуль представляет собой тонкую обёртку для конкретной платы, предоставляющую доступ к встроенному инерциальному измерительному блоку Arduino Nano 33 BLE Sense в виде единого объекта IMU. Обе аппаратные ревизии платы обрабатываются прозрачно:

  • Rev 1 использует один 9-осевой IMU LSM9DS1.

  • 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')

Создаёт объект IMU, привязанный к шине I2C.

  • bus — это инициализированный экземпляр machine.I2C, подключённый к встроенному IMU (или нескольким).

При создании объекта шина сканируется: если устройство отвечает по адресу 0x68, создаётся пара BMI270 плюс BMM150 (Nano 33 BLE Sense Rev 2), иначе создаётся LSM9DS1 (Rev 1). Базовый драйвер хранится в атрибуте imu и настраивается с диапазонами и частотами выходных данных по умолчанию.

accel() tuple[float, float, float]

Возвращает последнее показание акселерометра в виде кортежа (x, y, z) в единицах g (стандартных ускорений свободного падения).

gyro() tuple[float, float, float]

Возвращает последнее показание гироскопа в виде кортежа (x, y, z) в градусах в секунду.

magnet() tuple[float, float, float]

Возвращает последнее показание магнитометра в виде кортежа (x, y, z) в микротеслах (мкТл).