bmi270 — BMI270 6-Achsen-IMU¶
Treiber für die stromsparende 6-Achsen-Trägheitsmesseinheit Bosch BMI270 (3-Achsen-Beschleunigungssensor plus 3-Achsen-Gyroskop) über I2C. Der Treiber führt bei der Konstruktion die vollständige BMI270-Initialisierungssequenz aus — Soft-Reset, Deaktivierung des Stromsparmodus, Hochladen des Konfigurations-Blobs und Statusprüfung — bevor er die gewünschten Ausgabedatenraten und Vollbereiche konfiguriert.
Die Klasse kann optional mit einer externen bmm150.BMM150-Magnetometer-Instanz verknüpft werden, sodass Aufrufer ein BMI270-+-BMM150-Paar über die Methode magnet() als ein einziges 9-Achsen-Gerät behandeln können.
Bemerkung
Der SPI-Modus wird von diesem Treiber nicht unterstützt; die Übergabe eines Nicht-I2C-Busses löst ValueError aus.
Beispiel:
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)¶
Erzeugt eine
BMI270-Instanz und führt die vollständige Initialisierungssequenz zum Laden der Konfiguration aus. LöstOSErroraus, wenn die Chip-ID nicht übereinstimmt oder die Ladesequenz fehlschlägt.busEin konfigurierter
machine.I2C-Bus, an den der Sensor angeschlossen ist.csReserviert für den SPI-Modus. Muss auf
Nonebelassen werden; SPI ist derzeit nicht implementiert und die Übergabe eines Nicht-I2C-Busses löstValueErroraus.address7-Bit-I2C-Adresse des Geräts. Standardwert ist
0x68; einige Boards legen den SDO-Pin auf High, wodurch0x69ausgewählt wird.gyro_odrAusgabedatenrate des Gyroskops in Hz. Muss einer der Werte
0.78,1.5,3.1,6.25,12.5,25,50,100,200,400,800oder1200sein.gyro_scaleVollbereich des Gyroskops in Grad pro Sekunde. Muss einer der Werte
125,250,500,1000oder2000sein.accel_odrAusgabedatenrate des Beschleunigungssensors in Hz. Gleiche Wertemenge wie
gyro_odr.accel_scaleVollbereich des Beschleunigungssensors in g. Muss einer der Werte
2,4,8oder16sein.bmm_magnetOptionale
bmm150.BMM150-Instanz. Wenn angegeben, delegiert die Methodemagnet()an diese; andernfalls gibtmagnet()Nullen zurück.
- reset() None¶
Sendet den BMI270-Soft-Reset-Befehl. Nach dem Aufruf muss das Gerät vor der weiteren Nutzung neu initialisiert werden.
- gyro() tuple[float, float, float]¶
Gibt den Gyroskop-Vektor
(x, y, z)in Grad pro Sekunde zurück, skaliert entsprechendgyro_scale.