bmi270 — IMU a 6 assi BMI270

Driver per l’unità di misura inerziale a 6 assi a basso consumo Bosch BMI270 (accelerometro a 3 assi più giroscopio a 3 assi) tramite I2C. Il driver esegue l’intera sequenza di inizializzazione del BMI270 alla costruzione — soft reset, disattivazione del risparmio energetico, caricamento del blob di configurazione e verifica dello stato — prima di configurare le frequenze di output dei dati e gli intervalli di fondo scala richiesti.

La classe può facoltativamente essere collegata a un’istanza esterna del magnetometro bmm150.BMM150, in modo che i chiamanti possano trattare una coppia BMI270 + BMM150 come un unico dispositivo a 9 assi tramite il metodo magnet().

Nota

La modalità SPI non è supportata da questo driver; passare un bus non I2C solleva ValueError.

Esempio:

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)

Classi

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)

Costruisce un’istanza BMI270 ed esegue l’intera sequenza di inizializzazione con caricamento della configurazione. Solleva OSError se l’ID del chip non corrisponde o se la sequenza di caricamento fallisce.

bus

Un bus machine.I2C configurato a cui è collegato il sensore.

cs

Riservato per la modalità SPI. Deve essere lasciato a None; la SPI non è attualmente implementata e fornire un bus non I2C solleva ValueError.

address

Indirizzo I2C a 7 bit del dispositivo. Il valore predefinito è 0x68; alcune schede portano alto il pin SDO, il che seleziona 0x69.

gyro_odr

Frequenza di output dei dati del giroscopio in Hz. Deve essere uno tra 0.78, 1.5, 3.1, 6.25, 12.5, 25, 50, 100, 200, 400, 800 o 1200.

gyro_scale

Intervallo di fondo scala del giroscopio in gradi al secondo. Deve essere uno tra 125, 250, 500, 1000 o 2000.

accel_odr

Frequenza di output dei dati dell’accelerometro in Hz. Stesso insieme di valori di gyro_odr.

accel_scale

Intervallo di fondo scala dell’accelerometro in g. Deve essere uno tra 2, 4, 8 o 16.

bmm_magnet

Istanza opzionale bmm150.BMM150. Quando fornita, il metodo magnet() la delega ad essa; altrimenti magnet() restituisce zeri.

reset() None

Invia il comando di soft reset del BMI270. Dopo averlo chiamato, il dispositivo deve essere reinizializzato prima di ogni ulteriore utilizzo.

gyro() tuple[float, float, float]

Restituisce il vettore del giroscopio (x, y, z) in gradi al secondo, scalato in base a gyro_scale.

accel() tuple[float, float, float]

Restituisce il vettore di accelerazione (x, y, z) in unità di gravità standard (1 g = 9.81 m/s²), scalato in base a accel_scale.

magnet() tuple[float, float, float]

Se alla costruzione è stato fornito un bmm_magnet, restituisce l’ultima lettura del magnetometro da quel dispositivo. Altrimenti restituisce (0.0, 0.0, 0.0).