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 eenOSErrorals de chip-ID niet overeenkomt of als de laadsequentie mislukt.busEen geconfigureerde
machine.I2C-bus waarop de sensor is aangesloten.csGereserveerd voor de SPI-modus. Moet als
Noneworden gelaten; SPI is momenteel niet geïmplementeerd en het opgeven van een niet-I2C-bus veroorzaakt eenValueError.address7-bits I2C-adres van het apparaat. Standaard
0x68; sommige boards trekken de SDO-pin hoog, waardoor0x69wordt geselecteerd.gyro_odrUitvoerdatasnelheid 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,800of1200.gyro_scaleVolledige-schaalbereik van de gyroscoop in graden per seconde. Moet een van de volgende zijn:
125,250,500,1000of2000.accel_odrUitvoerdatasnelheid van de versnellingsmeter in Hz. Dezelfde set waarden als
gyro_odr.accel_scaleVolledige-schaalbereik van de versnellingsmeter in g. Moet een van de volgende zijn:
2,4,8of16.bmm_magnetOptionele
bmm150.BMM150-instantie. Wanneer deze wordt opgegeven, delegeert demagnet()-methode hieraan; anders retourneertmagnet()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 volgensgyro_scale.