lsm6dsox — IMU de 6 eixos LSM6DSOX

Driver para a unidade de medição inercial iNEMO ST LSM6DSOX de 6 eixos (acelerómetro de 3 eixos mais giroscópio de 3 eixos) via I2C ou SPI. Para além da saída básica da IMU, o driver expõe as funções embebidas no chip: um pedómetro configurável (contador de passos) e o Machine Learning Core (MLC), que pode ser programado via ficheiros 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 LSM6DSOX. O tipo de barramento é detetado automaticamente: se bus expõe readfrom_mem, é tratado como machine.I2C; caso contrário, é tratado como machine.SPI e cs deve ser fornecido. O chip é reiniciado por software, o ODR e a escala pedidos são programados, e um ficheiro MLC UCF é carregado se fornecido.

bus

Um barramento machine.I2C ou machine.SPI configurado.

cs

Pino machine.Pin de seleção de chip utilizado em modo SPI. Obrigatório quando bus é uma instância SPI; ignorado caso contrário.

address

Endereço I2C de 7 bits do dispositivo. Por omissão é 0x6A; em algumas placas, o pino SDO está ligado ao nível alto, o que seleciona 0x6B.

gyro_odr

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

accel_odr

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

gyro_scale

Gama de escala completa do giroscópio em graus por segundo. Deve ser um dos seguintes valores: 250, 500, 1000 ou 2000.

accel_scale

Gama de escala completa do acelerómetro em g. Deve ser um dos seguintes valores: 2, 4, 8 ou 16.

ucf

Caminho opcional para um ficheiro .ucf de dump de registos da ferramenta ST Unico-GUI. Se fornecido, o ficheiro é analisado e aplicado ao MLC durante a construção através de load_mlc().

reset() None

Emite um reset por software via CTRL3_C e bloqueia até que o bit de reset se limpe. Lança OSError se o dispositivo não responder dentro de dez tentativas.

set_mem_bank(bank: int) None

Comuta o banco de registos FUNC_CFG. Utilizado internamente para aceder às páginas de registos de funções embebidas e do sensor hub; raramente necessário pelo código de aplicação.

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

Ativa ou desativa o bloco de funções embebidas. Quando enable é True, o par de bytes emb_ab é escrito em EMB_FUNC_EN_A/EMB_FUNC_EN_B. Quando False, os valores atuais são lidos, os bits de ativação MLC/pedómetro são limpos, e os valores anteriores são devolvidos para que possam ser restaurados posteriormente.

load_mlc(ucf: str) None

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

mlc_output() bytes | None

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

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

Configura o pedómetro embebido.

enable

Ativa ou desativa a deteção de passos no bloco de funções embebidas.

debounce

Valor de debounce de passos escrito em PEDO_DEB_STEPS_CONF.

int1_enable

Se True, encaminha eventos do pedómetro para o pino INT1.

int2_enable

Se True, encaminha eventos do pedómetro para o pino INT2.

pedometer_reset() None

Reinicia o contador de passos para zero.

steps() int

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

gyro() tuple[float, float, float]

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

accel() tuple[float, float, float]

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