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: sebusexpuserreadfrom_mem, ele é tratado como ummachine.I2C, caso contrário é tratado como ummachine.SPIecsdeve 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.busUm barramento
machine.I2Coumachine.SPIconfigurado.csO
machine.Pinde chip-select usado em modo SPI. Obrigatório quandobusé uma instância SPI, ignorado caso contrário.addressEndereço I2C de 7 bits do dispositivo. O padrão é
0x6A; algumas placas fixam o pino SDO em nível alto, o que seleciona0x6B.gyro_odrTaxa 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,416ou888.accel_odrTaxa de dados de saída do acelerômetro em Hz. Mesmo conjunto de valores de
gyro_odr.gyro_scaleFaixa de fundo de escala do giroscópio em graus por segundo. Deve ser um de
250,500,1000ou2000.accel_scaleFaixa de fundo de escala do acelerômetro em g. Deve ser um de
2,4,8ou16.ucfCaminho opcional para um arquivo de despejo de registradores
.ucfdo ST Unico-GUI. Se fornecido, o arquivo é analisado e aplicado ao MLC durante a construção por meio deload_mlc().
- reset() None¶
Emite um reset por software via
CTRL3_Ce bloqueia até que o bit de reset seja limpo. LevantaOSErrorse 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 tuplaemb_abde dois bytes é escrita emEMB_FUNC_EN_A/EMB_FUNC_EN_B. QuandoFalse, 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 escritaAc <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_STATUSdefinido), retorna o conteúdo dos oito registradoresMLC0_SRC..MLC7_SRCcomo um objeto do tipo bytes. Caso contrário, retornaNone.
- pedometer_config(enable: bool = True, debounce: int = 10, int1_enable: bool = False, int2_enable: bool = False) None¶
Configura o pedômetro embarcado.
enableHabilita ou desabilita a detecção de passos no bloco de função embarcada.
debounceValor de debounce de passos escrito em
PEDO_DEB_STEPS_CONF.int1_enableSe
True, roteia os eventos do pedômetro para o pinoINT1.int2_enableSe
True, roteia os eventos do pedômetro para o pinoINT2.