lsm6dsox — LSM6DSOX 6-Achsen-IMU¶
Treiber für die ST LSM6DSOX iNEMO 6-Achsen-Trägheitsmesseinheit (3-Achsen-Beschleunigungssensor plus 3-Achsen-Gyroskop) über I2C oder SPI. Zusätzlich zur grundlegenden IMU-Ausgabe stellt der Treiber die eingebetteten On-Chip-Funktionen bereit: einen konfigurierbaren Schrittzähler (Pedometer) und den Machine Learning Core (MLC), der über UCF-Dateien programmiert werden kann, die aus STs Unico-GUI-Tool exportiert wurden.
Beispiel:
import time
from machine import I2C
from lsm6dsox import LSM6DSOX
# Use the I2C bus the LSM6DSOX is wired to on your board.
lsm = LSM6DSOX(I2C(1))
# SPI alternative (replace cs= with your board's chip-select pin):
# from machine import SPI, Pin
# lsm = LSM6DSOX(SPI(1), cs=Pin("CS"))
while True:
print("Accelerometer: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*lsm.accel()))
print("Gyroscope: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*lsm.gyro()))
time.sleep_ms(100)
Klassen¶
- class lsm6dsox.LSM6DSOX(bus: machine.I2C | machine.SPI, cs: machine.Pin | None = None, address: int = 0x6A, gyro_odr: float = 104, accel_odr: float = 104, gyro_scale: int = 2000, accel_scale: int = 4, ucf: str | None = None)¶
Erstellt eine
LSM6DSOX-Instanz. Der Bustyp wird automatisch erkannt: Wennbusreadfrom_membereitstellt, wird er alsmachine.I2Cbehandelt, andernfalls alsmachine.SPI, undcsmuss angegeben werden. Der Chip wird per Soft-Reset zurückgesetzt, die angeforderte ODR und Skala werden programmiert, und eine MLC-UCF-Datei wird geladen, sofern angegeben.busEntweder ein konfigurierter
machine.I2C- odermachine.SPI-Bus.csChip-Select-
machine.Pin, der im SPI-Modus verwendet wird. Erforderlich, wennbuseine SPI-Instanz ist, andernfalls ignoriert.address7-Bit-I2C-Adresse des Geräts. Standardmäßig
0x6A; einige Boards ziehen den SDO-Pin auf High, was0x6Bauswählt.gyro_odrAusgabedatenrate des Gyroskops in Hz. Muss einer der Werte
0(aus),1.6,3.33,6.66,12.5,26,52,104,208,416oder888sein.accel_odrAusgabedatenrate des Beschleunigungssensors in Hz. Gleiche Wertemenge wie
gyro_odr.gyro_scaleVollausschlagsbereich des Gyroskops in Grad pro Sekunde. Muss einer der Werte
250,500,1000oder2000sein.accel_scaleVollausschlagsbereich des Beschleunigungssensors in g. Muss einer der Werte
2,4,8oder16sein.ucfOptionaler Pfad zu einer ST-Unico-GUI-
.ucf-Register-Dump-Datei. Wenn angegeben, wird die Datei geparst und während der Erstellung überload_mlc()auf den MLC angewendet.
- reset() None¶
Löst einen Software-Reset über
CTRL3_Caus und blockiert, bis das Reset-Bit gelöscht ist. LöstOSErroraus, wenn das Gerät nicht innerhalb von zehn Versuchen zurückkehrt.
- set_mem_bank(bank: int) None¶
Schaltet die FUNC_CFG-Registerbank um. Wird intern verwendet, um auf die Registerseiten der eingebetteten Funktionen und des Sensor-Hubs zuzugreifen; wird von Anwendungscode selten benötigt.
- set_embedded_functions(enable: bool, emb_ab: tuple[int, int] | None = None) tuple[int, int]¶
Aktiviert oder deaktiviert den Block der eingebetteten Funktionen. Wenn
enablegleichTrueist, wird das Zwei-Byte-Tupelemb_abnachEMB_FUNC_EN_A/EMB_FUNC_EN_Bgeschrieben. WennFalse, werden die aktuellen Werte gelesen, die MLC-/Pedometer-Aktivierungsbits gelöscht und die vorherigen Werte zurückgegeben, damit sie später wiederhergestellt werden können.
- load_mlc(ucf: str) None¶
Wendet ein MLC-UCF-Programm aus der Datei am Pfad
ucfan. Der Treiber geht die Datei Zeile für Zeile durch, führt jedenAc <reg> <val>-Schreibvorgang aus, aktiviert dann BDU, leitet MLC-Ereignisse an Interrupt-Pin 1 weiter und schaltet die eingebetteten Funktionen wieder ein.
- mlc_output() bytes | None¶
Wenn neue MLC-Ergebnisse verfügbar sind (
MLC_STATUS-Bit gesetzt), gibt den Inhalt der acht RegisterMLC0_SRC..MLC7_SRCals bytes-ähnliches Objekt zurück. Andernfalls wirdNonezurückgegeben.
- pedometer_config(enable: bool = True, debounce: int = 10, int1_enable: bool = False, int2_enable: bool = False) None¶
Konfiguriert das eingebettete Pedometer.
enableAktiviert oder deaktiviert die Schritterkennung im Block der eingebetteten Funktionen.
debounceSchritt-Entprellungswert, der in
PEDO_DEB_STEPS_CONFgeschrieben wird.int1_enableWenn
True, werden Pedometer-Ereignisse an denINT1-Pin weitergeleitet.int2_enableWenn
True, werden Pedometer-Ereignisse an denINT2-Pin weitergeleitet.