bmi270 — IMU de 6 ejes BMI270¶
Controlador para la unidad de medición inercial de 6 ejes de bajo consumo Bosch BMI270 (acelerómetro de 3 ejes más giroscopio de 3 ejes) a través de I2C. El controlador realiza la secuencia completa de inicialización del BMI270 durante la construcción — reinicio por software, desactivación del ahorro de energía, carga del blob de configuración y verificación de estado — antes de configurar las tasas de datos de salida y los rangos de escala completa solicitados.
La clase puede vincularse opcionalmente a una instancia externa del magnetómetro bmm150.BMM150, de modo que quien la utilice pueda tratar un par BMI270 + BMM150 como un único dispositivo de 9 ejes mediante el método magnet().
Nota
Este controlador no admite el modo SPI; pasar un bus que no sea I2C genera un ValueError.
Ejemplo:
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)
Clases¶
- 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)¶
Construye una instancia de
BMI270y ejecuta la secuencia completa de inicialización con carga de configuración. Genera unOSErrorsi el ID del chip no coincide o si la secuencia de carga falla.busUn bus
machine.I2Cconfigurado al que está conectado el sensor.csReservado para el modo SPI. Debe dejarse como
None; SPI no está implementado actualmente y proporcionar un bus que no sea I2C genera unValueError.addressDirección I2C de 7 bits del dispositivo. El valor predeterminado es
0x68; algunas placas conectan el pin SDO a nivel alto, lo que selecciona0x69.gyro_odrTasa de datos de salida del giroscopio en Hz. Debe ser uno de los siguientes valores:
0.78,1.5,3.1,6.25,12.5,25,50,100,200,400,800o1200.gyro_scaleRango de escala completa del giroscopio en grados por segundo. Debe ser uno de los siguientes valores:
125,250,500,1000o2000.accel_odrTasa de datos de salida del acelerómetro en Hz. El mismo conjunto de valores que
gyro_odr.accel_scaleRango de escala completa del acelerómetro en g. Debe ser uno de los siguientes valores:
2,4,8o16.bmm_magnetInstancia opcional de
bmm150.BMM150. Cuando se proporciona, el métodomagnet()delega en ella; de lo contrario,magnet()devuelve ceros.
- reset() None¶
Emite el comando de reinicio por software del BMI270. Después de llamarlo, el dispositivo debe reinicializarse antes de seguir usándolo.
- gyro() tuple[float, float, float]¶
Devuelve el vector del giroscopio
(x, y, z)en grados por segundo, escalado segúngyro_scale.