lsm6dsox — IMU de 6 eixos LSM6DSOX

Driver para a unidade de medição inercial de 6 eixos ST LSM6DSOX iNEMO (acelerômetro de 3 eixos mais giroscópio de 3 eixos) via I2C ou SPI. Além da saída básica da IMU, o driver expõe as funções embarcadas no chip: um pedômetro configurável (contador de passos) e o Machine Learning Core (MLC), que pode ser programado por meio de arquivos UCF exportados da ferramenta Unico-GUI da ST.

Exemplo:

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)

Classes

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)

Constrói uma instância de LSM6DSOX. O tipo de barramento é detectado automaticamente: se bus expuser readfrom_mem, ele é tratado como um machine.I2C, caso contrário é tratado como um machine.SPI e cs deve ser fornecido. O chip é submetido a um soft-reset, a ODR e a escala solicitadas são programadas, e um arquivo UCF do MLC é carregado se fornecido.

bus

Um barramento machine.I2C ou machine.SPI configurado.

cs

O machine.Pin de chip-select usado em modo SPI. Obrigatório quando bus é uma instância SPI, ignorado caso contrário.

address

Endereço I2C de 7 bits do dispositivo. O padrão é 0x6A; algumas placas fixam o pino SDO em nível alto, o que seleciona 0x6B.

gyro_odr

Taxa de dados de saída do giroscópio em Hz. Deve ser um de 0 (desligado), 1.6, 3.33, 6.66, 12.5, 26, 52, 104, 208, 416 ou 888.

accel_odr

Taxa de dados de saída do acelerômetro em Hz. Mesmo conjunto de valores de gyro_odr.

gyro_scale

Faixa de fundo de escala do giroscópio em graus por segundo. Deve ser um de 250, 500, 1000 ou 2000.

accel_scale

Faixa de fundo de escala do acelerômetro em g. Deve ser um de 2, 4, 8 ou 16.

ucf

Caminho opcional para um arquivo de despejo de registradores .ucf do ST Unico-GUI. Se fornecido, o arquivo é analisado e aplicado ao MLC durante a construção por meio de load_mlc().

reset() None

Emite um reset por software via CTRL3_C e bloqueia até que o bit de reset seja limpo. Levanta OSError se o dispositivo não retornar dentro de dez tentativas.

set_mem_bank(bank: int) None

Alterna o banco de registradores FUNC_CFG. Usado internamente para acessar as páginas de registradores da função embarcada e do sensor-hub; raramente necessário em código de aplicação.

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

Habilita ou desabilita o bloco de função embarcada. Quando enable é True, a tupla emb_ab de dois bytes é escrita em EMB_FUNC_EN_A/EMB_FUNC_EN_B. Quando False, os valores atuais são lidos, os bits de habilitação do MLC/pedômetro são limpos, e os valores anteriores são retornados para que possam ser restaurados depois.

load_mlc(ucf: str) None

Aplica um programa UCF do MLC a partir do arquivo no caminho ucf. O driver percorre o arquivo linha a linha, aplica cada escrita Ac <reg> <val>, depois habilita o BDU, roteia os eventos do MLC para o pino de interrupção 1 e reativa as funções embarcadas.

mlc_output() bytes | None

Se novos resultados do MLC estiverem disponíveis (bit MLC_STATUS definido), retorna o conteúdo dos oito registradores MLC0_SRC..MLC7_SRC como um objeto do tipo bytes. Caso contrário, retorna None.

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

Configura o pedômetro embarcado.

enable

Habilita ou desabilita a detecção de passos no bloco de função embarcada.

debounce

Valor de debounce de passos escrito em PEDO_DEB_STEPS_CONF.

int1_enable

Se True, roteia os eventos do pedômetro para o pino INT1.

int2_enable

Se True, roteia os eventos do pedômetro para o pino INT2.

pedometer_reset() None

Zera o contador de passos novamente.

steps() int

Retorna o valor atual do contador de passos de 16 bits.

gyro() tuple[float, float, float]

Retorna o vetor do giroscópio (x, y, z) em graus por segundo.

accel() tuple[float, float, float]

Retorna o vetor de aceleração (x, y, z) em unidades de gravidade padrão (1 g = 9,81 m/s²).