lsm6dsox — LSM6DSOX 6-assige IMU

Driver voor de ST LSM6DSOX iNEMO 6-assige inertiële meeteenheid (3-assige versnellingsmeter plus 3-assige gyroscoop) via I2C of SPI. Naast de basisuitvoer van de IMU stelt de driver de embedded functies op de chip beschikbaar: een configureerbare stappenteller (pedometer) en de Machine Learning Core (MLC), die kan worden geprogrammeerd via UCF-bestanden die zijn geëxporteerd uit ST’s Unico-GUI-tool.

Voorbeeld:

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)

Construeer een LSM6DSOX-instantie. Het bustype wordt automatisch gedetecteerd: als bus readfrom_mem beschikbaar stelt, wordt het behandeld als een machine.I2C, anders wordt het behandeld als een machine.SPI en moet cs worden opgegeven. De chip wordt soft-reset, de gevraagde ODR en schaal worden geprogrammeerd, en een MLC UCF-bestand wordt geladen indien opgegeven.

bus

Een geconfigureerde machine.I2C- of machine.SPI-bus.

cs

Chip-select machine.Pin die wordt gebruikt in SPI-modus. Vereist wanneer bus een SPI-instantie is, anders genegeerd.

address

7-bits I2C-adres van het apparaat. Standaard 0x6A; sommige boards trekken de SDO-pin hoog, wat 0x6B selecteert.

gyro_odr

Output data rate van de gyroscoop in Hz. Moet een van de volgende zijn: 0 (uit), 1.6, 3.33, 6.66, 12.5, 26, 52, 104, 208, 416 of 888.

accel_odr

Output data rate van de versnellingsmeter in Hz. Dezelfde set waarden als gyro_odr.

gyro_scale

Full-scale bereik van de gyroscoop in graden per seconde. Moet een van de volgende zijn: 250, 500, 1000 of 2000.

accel_scale

Full-scale bereik van de versnellingsmeter in g. Moet een van de volgende zijn: 2, 4, 8 of 16.

ucf

Optioneel pad naar een ST Unico-GUI .ucf-registerdumpbestand. Indien opgegeven wordt het bestand geparseerd en tijdens de constructie toegepast op de MLC via load_mlc().

reset() None

Voer een softwarereset uit via CTRL3_C en blokkeer tot de resetbit wordt gewist. Werpt OSError op als het apparaat niet binnen tien pogingen terugkomt.

set_mem_bank(bank: int) None

Schakel de FUNC_CFG-registerbank. Wordt intern gebruikt om toegang te krijgen tot de registerpagina’s van de embedded functies en de sensor-hub; zelden nodig in toepassingscode.

set_embedded_functions(enable: bool, emb_ab: tuple[int, int] | None = None) tuple[int, int]

Schakel het blok met embedded functies in of uit. Wanneer enable gelijk is aan True wordt de twee-byte emb_ab-tuple geschreven naar EMB_FUNC_EN_A/EMB_FUNC_EN_B. Wanneer False worden de huidige waarden gelezen, de enable-bits voor MLC/pedometer gewist, en de vorige waarden teruggegeven zodat ze later kunnen worden hersteld.

load_mlc(ucf: str) None

Pas een MLC UCF-programma toe vanuit het bestand op het pad ucf. De driver loopt het bestand regel voor regel door, past elke Ac <reg> <val>-schrijfactie toe, schakelt vervolgens BDU in, leidt MLC-gebeurtenissen naar interrupt-pin 1 en zet de embedded functies weer aan.

mlc_output() bytes | None

Als er nieuwe MLC-resultaten beschikbaar zijn (MLC_STATUS-bit gezet), geef de inhoud van de acht MLC0_SRC..MLC7_SRC-registers terug als een bytes-achtig object. Geef anders None terug.

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

Configureer de embedded pedometer.

enable

Schakelt stapdetectie op het blok met embedded functies in of uit.

debounce

Stap-debouncewaarde die wordt geschreven naar PEDO_DEB_STEPS_CONF.

int1_enable

Als True, leid pedometer-gebeurtenissen naar de INT1-pin.

int2_enable

Als True, leid pedometer-gebeurtenissen naar de INT2-pin.

pedometer_reset() None

Zet de stappenteller terug op nul.

steps() int

Geeft de huidige waarde van de 16-bits stappenteller terug.

gyro() tuple[float, float, float]

Geeft de gyroscoopvector (x, y, z) in graden per seconde terug.

accel() tuple[float, float, float]

Geeft de versnellingsvector (x, y, z) terug in eenheden van standaard zwaartekracht (1 g = 9.81 m/s²).