lsm6dsox — IMU pe 6 axe LSM6DSOX

Driver pentru unitatea de măsurare inerțială pe 6 axe ST LSM6DSOX iNEMO (accelerometru pe 3 axe plus giroscop pe 3 axe) prin I2C sau SPI. Pe lângă ieșirea IMU de bază, driverul expune funcțiile încorporate pe cip: un pedometru configurabil (numărător de pași) și Machine Learning Core (MLC), care poate fi programat prin fișiere UCF exportate din instrumentul Unico-GUI al ST.

Exemplu:

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)

Clase

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)

Construiește o instanță LSM6DSOX. Tipul de magistrală este detectat automat: dacă bus expune readfrom_mem, este tratat ca o machine.I2C, altfel este tratat ca o machine.SPI și trebuie furnizat cs. Cipul este resetat software, ODR-ul și scara solicitate sunt programate, iar un fișier UCF pentru MLC este încărcat dacă este furnizat.

bus

Fie o magistrală machine.I2C, fie o machine.SPI configurată.

cs

Pinul machine.Pin de selecție a cipului (chip-select) utilizat în modul SPI. Necesar când bus este o instanță SPI, ignorat în caz contrar.

address

Adresa I2C pe 7 biți a dispozitivului. Valoarea implicită este 0x6A; unele plăci leagă pinul SDO la nivel ridicat, ceea ce selectează 0x6B.

gyro_odr

Rata de ieșire a datelor giroscopului în Hz. Trebuie să fie una dintre 0 (oprit), 1.6, 3.33, 6.66, 12.5, 26, 52, 104, 208, 416 sau 888.

accel_odr

Rata de ieșire a datelor accelerometrului în Hz. Același set de valori ca gyro_odr.

gyro_scale

Domeniul la scară completă al giroscopului în grade pe secundă. Trebuie să fie una dintre 250, 500, 1000 sau 2000.

accel_scale

Domeniul la scară completă al accelerometrului în g. Trebuie să fie una dintre 2, 4, 8 sau 16.

ucf

Cale opțională către un fișier .ucf de descărcare a registrelor al ST Unico-GUI. Dacă este furnizat, fișierul este analizat și aplicat MLC-ului în timpul construcției prin intermediul load_mlc().

reset() None

Emite o resetare software prin CTRL3_C și blochează până când bitul de resetare se șterge. Ridică OSError dacă dispozitivul nu revine în decurs de zece reîncercări.

set_mem_bank(bank: int) None

Comută banca de registre FUNC_CFG. Utilizată intern pentru a accesa paginile de registre ale funcției încorporate și ale sensor-hub-ului; rareori necesară în codul aplicației.

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

Activează sau dezactivează blocul de funcții încorporate. Când enable este True, tuplul emb_ab de doi octeți este scris în EMB_FUNC_EN_A/EMB_FUNC_EN_B. Când este False, valorile curente sunt citite, biții de activare MLC/pedometru sunt șterși, iar valorile anterioare sunt returnate pentru a putea fi restaurate ulterior.

load_mlc(ucf: str) None

Aplică un program UCF pentru MLC din fișierul aflat la calea ucf. Driverul parcurge fișierul linie cu linie, aplică fiecare scriere Ac <reg> <val>, apoi activează BDU, direcționează evenimentele MLC către pinul de întrerupere 1 și reactivează funcțiile încorporate.

mlc_output() bytes | None

Dacă sunt disponibile noi rezultate MLC (bitul MLC_STATUS setat), returnează conținutul celor opt registre MLC0_SRC..MLC7_SRC ca obiect de tip bytes. Altfel returnează None.

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

Configurează pedometrul încorporat.

enable

Activează sau dezactivează detectarea pașilor pe blocul de funcții încorporate.

debounce

Valoarea de debounce a pașilor scrisă în PEDO_DEB_STEPS_CONF.

int1_enable

Dacă este True, direcționează evenimentele pedometrului către pinul INT1.

int2_enable

Dacă este True, direcționează evenimentele pedometrului către pinul INT2.

pedometer_reset() None

Resetează numărătorul de pași la zero.

steps() int

Returnează valoarea curentă a numărătorului de pași pe 16 biți.

gyro() tuple[float, float, float]

Returnează vectorul giroscopului (x, y, z) în grade pe secundă.

accel() tuple[float, float, float]

Returnează vectorul de accelerație (x, y, z) în unități de gravitație standard (1 g = 9,81 m/s²).