bmi270 — 6-осевой IMU BMI270¶
Драйвер для маломощного 6-осевого инерциального измерительного модуля Bosch BMI270 (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 подтянут к высокому уровню, что выбирает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.