lsm6dsox — LSM6DSOX 6-osni IMU

Upravljački program za ST LSM6DSOX iNEMO 6-osnu inercijalnu mjernu jedinicu (3-osni akcelerometar plus 3-osni žiroskop) putem I2C ili SPI. Osim osnovnog IMU izlaza, upravljački program izlaže ugrađene funkcije na čipu: konfigurabilni pedometar (brojač koraka) i Machine Learning Core (MLC), koji se može programirati putem UCF datoteka izvezenih iz ST-ovog Unico-GUI alata.

Primjer:

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)

Klase

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)

Konstruira LSM6DSOX instancu. Tip sabirnice automatski se otkriva: ako bus izlaže readfrom_mem, tretira se kao machine.I2C, u suprotnom se tretira kao machine.SPI i mora se navesti cs. Čip se programski resetira, programiraju se zatraženi ODR i raspon, a MLC UCF datoteka se učitava ako je navedena.

bus

Konfigurirana machine.I2C ili machine.SPI sabirnica.

cs

Chip-select machine.Pin koji se koristi u SPI načinu rada. Obavezan kada je bus SPI instanca, inače se zanemaruje.

address

7-bitna I2C adresa uređaja. Zadano 0x6A; neke ploče vežu SDO pin na visoku razinu, čime se odabire 0x6B.

gyro_odr

Brzina izlaznih podataka žiroskopa u Hz. Mora biti jedna od 0 (isključeno), 1.6, 3.33, 6.66, 12.5, 26, 52, 104, 208, 416 ili 888.

accel_odr

Brzina izlaznih podataka akcelerometra u Hz. Isti skup vrijednosti kao gyro_odr.

gyro_scale

Raspon pune skale žiroskopa u stupnjevima po sekundi. Mora biti jedan od 250, 500, 1000 ili 2000.

accel_scale

Raspon pune skale akcelerometra u g. Mora biti jedan od 2, 4, 8 ili 16.

ucf

Neobavezna putanja do ST Unico-GUI .ucf datoteke s ispisom registara. Ako je navedena, datoteka se parsira i primjenjuje na MLC tijekom konstrukcije putem load_mlc().

reset() None

Izdaje programski reset putem CTRL3_C i blokira dok se ne obriše reset bit. Podiže OSError ako se uređaj ne vrati unutar deset pokušaja.

set_mem_bank(bank: int) None

Prebacuje banku registara FUNC_CFG. Koristi se interno za pristup stranicama registara ugrađenih funkcija i sensor-hub-a; aplikacijski kod ga rijetko treba.

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

Omogućuje ili onemogućuje blok ugrađenih funkcija. Kada je enable True, dvobajtni torka emb_ab zapisuje se u EMB_FUNC_EN_A/EMB_FUNC_EN_B. Kada je False, čitaju se trenutne vrijednosti, brišu se biti omogućavanja MLC/pedometra, a prethodne vrijednosti se vraćaju kako bi se kasnije mogle obnoviti.

load_mlc(ucf: str) None

Primjenjuje MLC UCF program iz datoteke na putanji ucf. Upravljački program prolazi datoteku redak po redak, primjenjuje svaki zapis Ac <reg> <val>, zatim omogućuje BDU, usmjerava MLC događaje na prekidni pin 1 i ponovno uključuje ugrađene funkcije.

mlc_output() bytes | None

Ako su dostupni novi MLC rezultati (bit MLC_STATUS postavljen), vraća sadržaj osam registara MLC0_SRC..MLC7_SRC kao objekt sličan bajtovima. U suprotnom vraća None.

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

Konfigurira ugrađeni pedometar.

enable

Omogućuje ili onemogućuje detekciju koraka na bloku ugrađenih funkcija.

debounce

Vrijednost zaglađivanja koraka zapisana u PEDO_DEB_STEPS_CONF.

int1_enable

Ako je True, usmjerava događaje pedometra na INT1 pin.

int2_enable

Ako je True, usmjerava događaje pedometra na INT2 pin.

pedometer_reset() None

Resetira brojač koraka natrag na nulu.

steps() int

Vraća trenutnu vrijednost 16-bitnog brojača koraka.

gyro() tuple[float, float, float]

Vraća vektor žiroskopa (x, y, z) u stupnjevima po sekundi.

accel() tuple[float, float, float]

Vraća vektor ubrzanja (x, y, z) u jedinicama standardne gravitacije (1 g = 9.81 m/s²).