bmi270 — BMI270 6-assige IMU

Driver voor de Bosch BMI270 6-assige inertiële meeteenheid met laag stroomverbruik (3-assige versnellingsmeter plus 3-assige gyroscoop) via I2C. De driver voert de volledige BMI270-initialisatiesequentie uit bij constructie — soft reset, uitschakelen van de spaarstand, uploaden van de configuratie-blob en statusverificatie — voordat de gevraagde uitvoerdatasnelheden en volledige-schaalbereiken worden geconfigureerd.

De klasse kan optioneel worden gekoppeld aan een externe bmm150.BMM150 magnetometerinstantie zodat aanroepers een BMI270 + BMM150-paar als één enkel 9-assig apparaat kunnen behandelen via de magnet()-methode.

Notitie

De SPI-modus wordt niet ondersteund door deze driver; het doorgeven van een niet-I2C-bus veroorzaakt een ValueError.

Voorbeeld:

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)

Klassen

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)

Construeer een BMI270-instantie en voer de volledige configuratie-laadinitialisatiesequentie uit. Veroorzaakt een OSError als de chip-ID niet overeenkomt of als de laadsequentie mislukt.

bus

Een geconfigureerde machine.I2C-bus waarop de sensor is aangesloten.

cs

Gereserveerd voor de SPI-modus. Moet als None worden gelaten; SPI is momenteel niet geïmplementeerd en het opgeven van een niet-I2C-bus veroorzaakt een ValueError.

address

7-bits I2C-adres van het apparaat. Standaard 0x68; sommige boards trekken de SDO-pin hoog, waardoor 0x69 wordt geselecteerd.

gyro_odr

Uitvoerdatasnelheid van de gyroscoop in Hz. Moet een van de volgende zijn: 0.78, 1.5, 3.1, 6.25, 12.5, 25, 50, 100, 200, 400, 800 of 1200.

gyro_scale

Volledige-schaalbereik van de gyroscoop in graden per seconde. Moet een van de volgende zijn: 125, 250, 500, 1000 of 2000.

accel_odr

Uitvoerdatasnelheid van de versnellingsmeter in Hz. Dezelfde set waarden als gyro_odr.

accel_scale

Volledige-schaalbereik van de versnellingsmeter in g. Moet een van de volgende zijn: 2, 4, 8 of 16.

bmm_magnet

Optionele bmm150.BMM150-instantie. Wanneer deze wordt opgegeven, delegeert de magnet()-methode hieraan; anders retourneert magnet() nullen.

reset() None

Geef het BMI270 soft-reset-commando uit. Na het aanroepen hiervan moet het apparaat opnieuw worden geïnitialiseerd voordat het verder kan worden gebruikt.

gyro() tuple[float, float, float]

Retourneer de gyroscoopvector (x, y, z) in graden per seconde, geschaald volgens gyro_scale.

accel() tuple[float, float, float]

Retourneer de versnellingsvector (x, y, z) in eenheden van de standaardzwaartekracht (1 g = 9,81 m/s²), geschaald volgens accel_scale.

magnet() tuple[float, float, float]

Als bij constructie een bmm_magnet is opgegeven, retourneer dan de meest recente magnetometermeting van dat apparaat. Retourneer anders (0.0, 0.0, 0.0).