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 (стандартных ускорений свободного падения).