lsm6dsox — IMU a 6 assi LSM6DSOX

Driver per l’unità di misura inerziale a 6 assi ST LSM6DSOX iNEMO (accelerometro a 3 assi più giroscopio a 3 assi) tramite I2C o SPI. Oltre all’output IMU di base, il driver espone le funzioni embedded integrate nel chip: un pedometro configurabile (contapassi) e il Machine Learning Core (MLC), che può essere programmato tramite file UCF esportati dallo strumento Unico-GUI di ST.

Esempio:

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)

Classi

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)

Costruisce un’istanza LSM6DSOX. Il tipo di bus viene rilevato automaticamente: se bus espone readfrom_mem viene trattato come un machine.I2C, altrimenti viene trattato come un machine.SPI e cs deve essere fornito. Il chip viene reimpostato via software, vengono programmati l’ODR e la scala richiesti e, se fornito, viene caricato un file UCF per l’MLC.

bus

Un bus machine.I2C o machine.SPI configurato.

cs

Il machine.Pin di chip-select usato in modalità SPI. Obbligatorio quando bus è un’istanza SPI, ignorato altrimenti.

address

Indirizzo I2C a 7 bit del dispositivo. Il valore predefinito è 0x6A; alcune schede impostano il pin SDO a livello alto, selezionando 0x6B.

gyro_odr

Frequenza di output dei dati del giroscopio in Hz. Deve essere uno tra 0 (off), 1.6, 3.33, 6.66, 12.5, 26, 52, 104, 208, 416 o 888.

accel_odr

Frequenza di output dei dati dell’accelerometro in Hz. Stesso insieme di valori di gyro_odr.

gyro_scale

Intervallo di fondo scala del giroscopio in gradi al secondo. Deve essere uno tra 250, 500, 1000 o 2000.

accel_scale

Intervallo di fondo scala dell’accelerometro in g. Deve essere uno tra 2, 4, 8 o 16.

ucf

Percorso opzionale a un file di dump dei registri .ucf di ST Unico-GUI. Se fornito, il file viene analizzato e applicato all’MLC durante la costruzione tramite load_mlc().

reset() None

Esegue un reset software tramite CTRL3_C e si blocca finché il bit di reset non si azzera. Solleva OSError se il dispositivo non si riavvia entro dieci tentativi.

set_mem_bank(bank: int) None

Commuta il banco del registro FUNC_CFG. Usato internamente per accedere alle pagine di registro delle funzioni embedded e del sensor-hub; raramente necessario nel codice applicativo.

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

Abilita o disabilita il blocco delle funzioni embedded. Quando enable è True, la tupla a due byte emb_ab viene scritta in EMB_FUNC_EN_A/EMB_FUNC_EN_B. Quando è False, i valori correnti vengono letti, i bit di abilitazione di MLC/pedometro vengono azzerati e i valori precedenti vengono restituiti in modo da poterli ripristinare in seguito.

load_mlc(ucf: str) None

Applica un programma UCF per l’MLC dal file al percorso ucf. Il driver percorre il file riga per riga, applica ogni scrittura Ac <reg> <val>, quindi abilita il BDU, instrada gli eventi MLC al pin di interrupt 1 e riattiva le funzioni embedded.

mlc_output() bytes | None

Se sono disponibili nuovi risultati MLC (bit MLC_STATUS impostato), restituisce il contenuto degli otto registri MLC0_SRC..MLC7_SRC come oggetto di tipo bytes. Altrimenti restituisce None.

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

Configura il pedometro embedded.

enable

Abilita o disabilita il rilevamento dei passi sul blocco delle funzioni embedded.

debounce

Valore di debounce dei passi scritto in PEDO_DEB_STEPS_CONF.

int1_enable

Se True, instrada gli eventi del pedometro al pin INT1.

int2_enable

Se True, instrada gli eventi del pedometro al pin INT2.

pedometer_reset() None

Riazzera il contapassi.

steps() int

Restituisce il valore corrente del contapassi a 16 bit.

gyro() tuple[float, float, float]

Restituisce il vettore del giroscopio (x, y, z) in gradi al secondo.

accel() tuple[float, float, float]

Restituisce il vettore di accelerazione (x, y, z) in unità di gravità standard (1 g = 9.81 m/s²).