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: sebusesponereadfrom_memviene trattato come unmachine.I2C, altrimenti viene trattato come unmachine.SPIecsdeve 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.busUn bus
machine.I2Comachine.SPIconfigurato.csIl
machine.Pindi chip-select usato in modalità SPI. Obbligatorio quandobusè un’istanza SPI, ignorato altrimenti.addressIndirizzo I2C a 7 bit del dispositivo. Il valore predefinito è
0x6A; alcune schede impostano il pin SDO a livello alto, selezionando0x6B.gyro_odrFrequenza 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,416o888.accel_odrFrequenza di output dei dati dell’accelerometro in Hz. Stesso insieme di valori di
gyro_odr.gyro_scaleIntervallo di fondo scala del giroscopio in gradi al secondo. Deve essere uno tra
250,500,1000o2000.accel_scaleIntervallo di fondo scala dell’accelerometro in g. Deve essere uno tra
2,4,8o16.ucfPercorso opzionale a un file di dump dei registri
.ucfdi ST Unico-GUI. Se fornito, il file viene analizzato e applicato all’MLC durante la costruzione tramiteload_mlc().
- reset() None¶
Esegue un reset software tramite
CTRL3_Ce si blocca finché il bit di reset non si azzera. SollevaOSErrorse 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 byteemb_abviene scritta inEMB_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 scritturaAc <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_STATUSimpostato), restituisce il contenuto degli otto registriMLC0_SRC..MLC7_SRCcome oggetto di tipo bytes. Altrimenti restituisceNone.
- pedometer_config(enable: bool = True, debounce: int = 10, int1_enable: bool = False, int2_enable: bool = False) None¶
Configura il pedometro embedded.
enableAbilita o disabilita il rilevamento dei passi sul blocco delle funzioni embedded.
debounceValore di debounce dei passi scritto in
PEDO_DEB_STEPS_CONF.int1_enableSe
True, instrada gli eventi del pedometro al pinINT1.int2_enableSe
True, instrada gli eventi del pedometro al pinINT2.