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: Wenn bus readfrom_mem bereitstellt, wird er als machine.I2C behandelt, andernfalls als machine.SPI, und cs muss 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.

bus

Entweder ein konfigurierter machine.I2C- oder machine.SPI-Bus.

cs

Chip-Select-machine.Pin, der im SPI-Modus verwendet wird. Erforderlich, wenn bus eine SPI-Instanz ist, andernfalls ignoriert.

address

7-Bit-I2C-Adresse des Geräts. Standardmäßig 0x6A; einige Boards ziehen den SDO-Pin auf High, was 0x6B auswählt.

gyro_odr

Ausgabedatenrate des Gyroskops in Hz. Muss einer der Werte 0 (aus), 1.6, 3.33, 6.66, 12.5, 26, 52, 104, 208, 416 oder 888 sein.

accel_odr

Ausgabedatenrate des Beschleunigungssensors in Hz. Gleiche Wertemenge wie gyro_odr.

gyro_scale

Vollausschlagsbereich des Gyroskops in Grad pro Sekunde. Muss einer der Werte 250, 500, 1000 oder 2000 sein.

accel_scale

Vollausschlagsbereich des Beschleunigungssensors in g. Muss einer der Werte 2, 4, 8 oder 16 sein.

ucf

Optionaler Pfad zu einer ST-Unico-GUI-.ucf-Register-Dump-Datei. Wenn angegeben, wird die Datei geparst und während der Erstellung über load_mlc() auf den MLC angewendet.

reset() None

Löst einen Software-Reset über CTRL3_C aus und blockiert, bis das Reset-Bit gelöscht ist. Löst OSError aus, 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 enable gleich True ist, wird das Zwei-Byte-Tupel emb_ab nach EMB_FUNC_EN_A/EMB_FUNC_EN_B geschrieben. Wenn False, 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 ucf an. Der Treiber geht die Datei Zeile für Zeile durch, führt jeden Ac <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 Register MLC0_SRC..MLC7_SRC als bytes-ähnliches Objekt zurück. Andernfalls wird None zurückgegeben.

pedometer_config(enable: bool = True, debounce: int = 10, int1_enable: bool = False, int2_enable: bool = False) None

Konfiguriert das eingebettete Pedometer.

enable

Aktiviert oder deaktiviert die Schritterkennung im Block der eingebetteten Funktionen.

debounce

Schritt-Entprellungswert, der in PEDO_DEB_STEPS_CONF geschrieben wird.

int1_enable

Wenn True, werden Pedometer-Ereignisse an den INT1-Pin weitergeleitet.

int2_enable

Wenn True, werden Pedometer-Ereignisse an den INT2-Pin weitergeleitet.

pedometer_reset() None

Setzt den Schrittzähler wieder auf null zurück.

steps() int

Gibt den aktuellen Wert des 16-Bit-Schrittzählers zurück.

gyro() tuple[float, float, float]

Gibt den Gyroskop-Vektor (x, y, z) in Grad pro Sekunde zurück.

accel() tuple[float, float, float]

Gibt den Beschleunigungsvektor (x, y, z) in Einheiten der Standard-Erdbeschleunigung (1 g = 9,81 m/s²) zurück.