bmi270 — BMI270 IMU de 6 eixos¶
Driver para a unidade de medição inercial de baixo consumo BMI270 da Bosch, com 6 eixos (acelerómetro de 3 eixos e giroscópio de 3 eixos), via I2C. O driver executa a sequência de inicialização completa do BMI270 na construção — reset por software, desativação do modo de poupança de energia, carregamento do blob de configuração e verificação de estado — antes de configurar as taxas de dados de saída e os intervalos de escala total solicitados.
A classe pode ser opcionalmente ligada a uma instância externa do magnetómetro bmm150.BMM150, para que os utilizadores possam tratar um par BMI270 + BMM150 como um único dispositivo de 9 eixos através do método magnet().
Nota
O modo SPI não é suportado por este driver; passar um bus que não seja I2C gera ValueError.
Exemplo:
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)
Classes¶
- 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)¶
Constrói uma instância
BMI270e executa a sequência completa de inicialização de carregamento de configuração. GeraOSErrorse o ID do chip não corresponder ou se a sequência de carregamento falhar.busUm bus
machine.I2Cconfigurado ao qual o sensor está ligado.csReservado para o modo SPI. Deve ser deixado como
None; o SPI não está atualmente implementado e fornecer um bus que não seja I2C geraValueError.addressEndereço I2C de 7 bits do dispositivo. Por defeito é
0x68; algumas placas ligam o pino SDO a nível alto, o que seleciona0x69.gyro_odrTaxa de dados de saída do giroscópio em Hz. Deve ser um de
0.78,1.5,3.1,6.25,12.5,25,50,100,200,400,800ou1200.gyro_scaleIntervalo de escala total do giroscópio em graus por segundo. Deve ser um de
125,250,500,1000ou2000.accel_odrTaxa de dados de saída do acelerómetro em Hz. Mesmo conjunto de valores que
gyro_odr.accel_scaleIntervalo de escala total do acelerómetro em g. Deve ser um de
2,4,8ou16.bmm_magnetInstância opcional de
bmm150.BMM150. Quando fornecida, o métodomagnet()delega para ela; caso contrário,magnet()retorna zeros.
- reset() None¶
Emite o comando de reset por software do BMI270. Após chamar este método, o dispositivo deve ser reinicializado antes de ser utilizado novamente.
- gyro() tuple[float, float, float]¶
Retorna o vetor do giroscópio
(x, y, z)em graus por segundo, escalado de acordo comgyro_scale.