bmi270 — IMU de 6 eixos BMI270

Driver para a unidade de medição inercial de 6 eixos e baixo consumo BMI270 da Bosch (acelerômetro de 3 eixos mais giroscópio de 3 eixos) via I2C. O driver executa toda a sequência de inicialização do BMI270 na construção — reset por software, desativação do modo de economia de energia, upload do blob de configuração e verificação de status — antes de configurar as taxas de dados de saída e as faixas de fundo de escala solicitadas.

A classe pode ser opcionalmente vinculada a uma instância externa de magnetômetro bmm150.BMM150, de modo que os chamadores possam tratar um par BMI270 + BMM150 como um único dispositivo de 9 eixos por meio do método magnet().

Nota

O modo SPI não é suportado por este driver; passar um barramento não-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 de BMI270 e executa toda a sequência de inicialização com carregamento da configuração. Gera OSError se o ID do chip não corresponder ou se a sequência de carregamento falhar.

bus

Um barramento machine.I2C configurado ao qual o sensor está conectado.

cs

Reservado para o modo SPI. Deve permanecer como None; o SPI não está atualmente implementado e fornecer um barramento não-I2C gera ValueError.

address

Endereço I2C de 7 bits do dispositivo. O padrão é 0x68; algumas placas mantêm o pino SDO em nível alto, o que seleciona 0x69.

gyro_odr

Taxa de dados de saída do giroscópio em Hz. Deve ser um dos valores 0.78, 1.5, 3.1, 6.25, 12.5, 25, 50, 100, 200, 400, 800 ou 1200.

gyro_scale

Faixa de fundo de escala do giroscópio em graus por segundo. Deve ser um dos valores 125, 250, 500, 1000 ou 2000.

accel_odr

Taxa de dados de saída do acelerômetro em Hz. Mesmo conjunto de valores de gyro_odr.

accel_scale

Faixa de fundo de escala do acelerômetro em g. Deve ser um dos valores 2, 4, 8 ou 16.

bmm_magnet

Instância opcional de bmm150.BMM150. Quando fornecida, o método magnet() delega a ela; caso contrário, magnet() retorna zeros.

reset() None

Emite o comando de reset por software do BMI270. Após chamá-lo, o dispositivo deve ser reinicializado antes de qualquer uso adicional.

gyro() tuple[float, float, float]

Retorna o vetor do giroscópio (x, y, z) em graus por segundo, escalonado de acordo com gyro_scale.

accel() tuple[float, float, float]

Retorna o vetor de aceleração (x, y, z) em unidades de gravidade padrão (1 g = 9,81 m/s²), escalonado de acordo com accel_scale.

magnet() tuple[float, float, float]

Se um bmm_magnet foi fornecido na construção, retorna a leitura mais recente do magnetômetro desse dispositivo. Caso contrário, retorna (0.0, 0.0, 0.0).