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ăbusexpunereadfrom_mem, este tratat ca omachine.I2C, altfel este tratat ca omachine.SPIși trebuie furnizatcs. Cipul este resetat software, ODR-ul și scara solicitate sunt programate, iar un fișier UCF pentru MLC este încărcat dacă este furnizat.busFie o magistrală
machine.I2C, fie omachine.SPIconfigurată.csPinul
machine.Pinde selecție a cipului (chip-select) utilizat în modul SPI. Necesar cândbuseste o instanță SPI, ignorat în caz contrar.addressAdresa 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_odrRata 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,416sau888.accel_odrRata de ieșire a datelor accelerometrului în Hz. Același set de valori ca
gyro_odr.gyro_scaleDomeniul la scară completă al giroscopului în grade pe secundă. Trebuie să fie una dintre
250,500,1000sau2000.accel_scaleDomeniul la scară completă al accelerometrului în g. Trebuie să fie una dintre
2,4,8sau16.ucfCale opțională către un fișier
.ucfde descărcare a registrelor al ST Unico-GUI. Dacă este furnizat, fișierul este analizat și aplicat MLC-ului în timpul construcției prin intermediulload_mlc().
- reset() None¶
Emite o resetare software prin
CTRL3_Cși blochează până când bitul de resetare se șterge. RidicăOSErrordacă 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
enableesteTrue, tuplulemb_abde doi octeți este scris înEMB_FUNC_EN_A/EMB_FUNC_EN_B. Când esteFalse, 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 scriereAc <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_STATUSsetat), returnează conținutul celor opt registreMLC0_SRC..MLC7_SRCca 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.
enableActivează sau dezactivează detectarea pașilor pe blocul de funcții încorporate.
debounceValoarea de debounce a pașilor scrisă în
PEDO_DEB_STEPS_CONF.int1_enableDacă este
True, direcționează evenimentele pedometrului către pinulINT1.int2_enableDacă este
True, direcționează evenimentele pedometrului către pinulINT2.