lsm6dsox — IMU de 6 ejes LSM6DSOX

Controlador para la unidad de medición inercial iNEMO de 6 ejes LSM6DSOX de ST (acelerómetro de 3 ejes más giroscopio de 3 ejes) a través de I2C o SPI. Además de la salida básica de la IMU, el controlador expone las funciones embebidas del chip: un podómetro configurable (contador de pasos) y el Machine Learning Core (MLC), que puede programarse mediante archivos UCF exportados desde la herramienta Unico-GUI de ST.

Ejemplo:

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)

Clases

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)

Construye una instancia de LSM6DSOX. El tipo de bus se detecta automáticamente: si bus expone readfrom_mem se trata como un machine.I2C; de lo contrario se trata como un machine.SPI y debe proporcionarse cs. El chip se reinicia por software, se programan la ODR y la escala solicitadas, y se carga un archivo UCF de MLC si se proporciona.

bus

Un bus machine.I2C o machine.SPI configurado.

cs

machine.Pin de selección de chip usado en modo SPI. Es obligatorio cuando bus es una instancia SPI; en caso contrario se ignora.

address

Dirección I2C de 7 bits del dispositivo. Su valor predeterminado es 0x6A; algunas placas fijan el pin SDO en alto, lo que selecciona 0x6B.

gyro_odr

Tasa de datos de salida del giroscopio en Hz. Debe ser uno de 0 (apagado), 1.6, 3.33, 6.66, 12.5, 26, 52, 104, 208, 416 o 888.

accel_odr

Tasa de datos de salida del acelerómetro en Hz. El mismo conjunto de valores que gyro_odr.

gyro_scale

Rango de escala completa del giroscopio en grados por segundo. Debe ser uno de 250, 500, 1000 o 2000.

accel_scale

Rango de escala completa del acelerómetro en g. Debe ser uno de 2, 4, 8 o 16.

ucf

Ruta opcional a un archivo de volcado de registros .ucf de ST Unico-GUI. Si se proporciona, el archivo se analiza y se aplica al MLC durante la construcción por medio de load_mlc().

reset() None

Emite un reinicio por software mediante CTRL3_C y se bloquea hasta que se borra el bit de reinicio. Lanza OSError si el dispositivo no vuelve dentro de diez reintentos.

set_mem_bank(bank: int) None

Cambia el banco del registro FUNC_CFG. Se usa internamente para acceder a las páginas de registros de la función embebida y del sensor-hub; el código de aplicación rara vez lo necesita.

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

Habilita o deshabilita el bloque de funciones embebidas. Cuando enable es True, la tupla de dos bytes emb_ab se escribe en EMB_FUNC_EN_A/EMB_FUNC_EN_B. Cuando es False, se leen los valores actuales, se borran los bits de habilitación del MLC/podómetro y se devuelven los valores anteriores para que puedan restaurarse más tarde.

load_mlc(ucf: str) None

Aplica un programa UCF de MLC desde el archivo en la ruta ucf. El controlador recorre el archivo línea por línea, aplica cada escritura Ac <reg> <val>, luego habilita BDU, enruta los eventos del MLC al pin de interrupción 1 y vuelve a activar las funciones embebidas.

mlc_output() bytes | None

Si hay nuevos resultados del MLC disponibles (bit MLC_STATUS establecido), devuelve el contenido de los ocho registros MLC0_SRC..MLC7_SRC como un objeto similar a bytes. De lo contrario devuelve None.

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

Configura el podómetro embebido.

enable

Habilita o deshabilita la detección de pasos en el bloque de funciones embebidas.

debounce

Valor de antirrebote de pasos escrito en PEDO_DEB_STEPS_CONF.

int1_enable

Si es True, enruta los eventos del podómetro al pin INT1.

int2_enable

Si es True, enruta los eventos del podómetro al pin INT2.

pedometer_reset() None

Reinicia el contador de pasos a cero.

steps() int

Devuelve el valor actual del contador de pasos de 16 bits.

gyro() tuple[float, float, float]

Devuelve el vector del giroscopio (x, y, z) en grados por segundo.

accel() tuple[float, float, float]

Devuelve el vector de aceleración (x, y, z) en unidades de gravedad estándar (1 g = 9.81 m/s²).