bmi270 — BMI270 6-осьовий IMU¶
Драйвер для Bosch BMI270 — малопотужного 6-осьового інерціального вимірювального блоку (3-осьовий акселерометр і 3-осьовий гіроскоп) через I2C. Під час ініціалізації драйвер виконує повну послідовність налаштування BMI270 — програмне скидання, вимкнення режиму збереження енергії, завантаження конфігураційного блобу та перевірку стану — перш ніж налаштувати запитані частоти вихідних даних і повні діапазони шкали.
За бажанням клас можна зв’язати із зовнішнім екземпляром магнетометра bmm150.BMM150, щоб абоненти могли розглядати пару BMI270 + BMM150 як єдиний 9-осьовий пристрій через метод magnet().
Примітка
SPI-режим цим драйвером не підтримується; передача не-I2C шини викликає ValueError.
Приклад:
import time
from machine import Pin, I2C
from bmi270 import BMI270
imu = BMI270(I2C(1, scl=Pin("P15"), sda=Pin("P14")))
while True:
print("Accelerometer: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*imu.accel()))
print("Gyroscope: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*imu.gyro()))
time.sleep_ms(100)
Класи¶
- class bmi270.BMI270(bus: machine.I2C, cs: machine.Pin | None = None, address: int = 0x68, gyro_odr: float = 100, gyro_scale: int = 2000, accel_odr: float = 100, accel_scale: int = 4, bmm_magnet: BMM150 | None = None)¶
Створює екземпляр
BMI270та виконує повну послідовність ініціалізації завантаження конфігурації. ВикидаєOSError, якщо ідентифікатор чіпа не збігається або якщо послідовність завантаження завершується невдачею.busНалаштована шина
machine.I2C, до якої підключено датчик.csЗарезервовано для SPI-режиму. Має залишатися
None; SPI наразі не реалізовано, і передача не-I2C шини викликаєValueError.address7-бітна I2C-адреса пристрою. За замовчуванням
0x68; на деяких платах вивід SDO підтягнутий до рівня High, що вибирає0x69.gyro_odrЧастота вихідних даних гіроскопа в Гц. Має бути одним із значень:
0.78,1.5,3.1,6.25,12.5,25,50,100,200,400,800або1200.gyro_scaleПовний діапазон шкали гіроскопа в градусах на секунду. Має бути одним із значень:
125,250,500,1000або2000.accel_odrЧастота вихідних даних акселерометра в Гц. Той самий набір значень, що й
gyro_odr.accel_scaleПовний діапазон шкали акселерометра в одиницях g. Має бути одним із значень:
2,4,8або16.bmm_magnetНеобов’язковий екземпляр
bmm150.BMM150. Якщо передано, методmagnet()делегує виклик до нього; інакшеmagnet()повертає нулі.
- reset() None¶
Видає команду програмного скидання BMI270. Після цього пристрій необхідно повторно ініціалізувати перед подальшим використанням.
- gyro() tuple[float, float, float]¶
Повертає вектор гіроскопа
(x, y, z)у градусах на секунду, масштабований відповідно доgyro_scale.