lsm6dsox — LSM6DSOX 6 tengelyes IMU

Illesztőprogram az ST LSM6DSOX iNEMO 6 tengelyes inerciális mérőegységhez (3 tengelyes gyorsulásmérő plusz 3 tengelyes giroszkóp) I2C-n vagy SPI-n keresztül. Az alapvető IMU-kimeneten túl az illesztőprogram a chipbe ágyazott funkciókat is kínálja: egy konfigurálható lépésszámlálót (pedométert) és a Machine Learning Core-t (MLC), amely az ST Unico-GUI eszközéből exportált UCF fájlokkal programozható.

Példa:

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)

Osztályok

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)

Létrehoz egy LSM6DSOX példányt. A busz típusa automatikusan felismerésre kerül: ha a bus rendelkezik readfrom_mem metódussal, akkor machine.I2C buszként kezeli, ellenkező esetben machine.SPI buszként, és a cs lábat meg kell adni. A chip szoftveres újraindításra kerül, a kért ODR és skála beprogramozásra kerül, és egy MLC UCF fájl betöltődik, ha meg van adva.

bus

Egy beállított machine.I2C vagy machine.SPI busz.

cs

SPI módban használt chipkiválasztó machine.Pin. Kötelező, ha a bus egy SPI példány, egyébként figyelmen kívül hagyva.

address

Az eszköz 7 bites I2C-címe. Alapértelmezett értéke 0x6A; egyes lapok magasra kötik az SDO lábat, ami a 0x6B címet választja ki.

gyro_odr

A giroszkóp kimeneti adatsebessége Hz-ben. A következők egyikének kell lennie: 0 (ki), 1.6, 3.33, 6.66, 12.5, 26, 52, 104, 208, 416 vagy 888.

accel_odr

A gyorsulásmérő kimeneti adatsebessége Hz-ben. Ugyanaz az értékkészlet, mint a gyro_odr esetében.

gyro_scale

A giroszkóp teljes mérési tartománya fok/másodpercben. A következők egyikének kell lennie: 250, 500, 1000 vagy 2000.

accel_scale

A gyorsulásmérő teljes mérési tartománya g-ben. A következők egyikének kell lennie: 2, 4, 8 vagy 16.

ucf

Egy ST Unico-GUI .ucf regiszterkiíratási fájl opcionális elérési útja. Ha meg van adva, a fájl feldolgozásra kerül, és a létrehozás során az MLC-re alkalmazódik a load_mlc() révén.

reset() None

Szoftveres újraindítást kezdeményez a CTRL3_C regiszteren keresztül, és blokkol, amíg az újraindítási bit törlődik. OSError kivételt vált ki, ha az eszköz tíz újrapróbálkozáson belül nem tér vissza.

set_mem_bank(bank: int) None

Átkapcsolja a FUNC_CFG regiszterbankot. Belsőleg használatos a beágyazott funkciók és az érzékelőhub regiszteroldalainak eléréséhez; alkalmazáskódban ritkán szükséges.

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

Engedélyezi vagy letiltja a beágyazott funkciók blokkját. Ha az enable értéke True, a két bájtos emb_ab rendezett pár az EMB_FUNC_EN_A/EMB_FUNC_EN_B regiszterekbe kerül. Ha False, az aktuális értékek beolvasódnak, az MLC/pedométer engedélyező bitek törlődnek, és a korábbi értékek visszaadásra kerülnek, hogy később vissza lehessen állítani őket.

load_mlc(ucf: str) None

Egy MLC UCF programot alkalmaz az ucf elérési úton lévő fájlból. Az illesztőprogram soronként végighalad a fájlon, alkalmazza az egyes Ac <reg> <val> írásokat, majd engedélyezi a BDU-t, az MLC eseményeket az 1-es megszakítási lábra irányítja, és visszakapcsolja a beágyazott funkciókat.

mlc_output() bytes | None

Ha új MLC eredmények érhetők el (MLC_STATUS bit beállítva), visszaadja a nyolc MLC0_SRC..MLC7_SRC regiszter tartalmát bájtszerű objektumként. Ellenkező esetben None értéket ad vissza.

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

Konfigurálja a beágyazott lépésszámlálót.

enable

Engedélyezi vagy letiltja a lépésészlelést a beágyazott funkciók blokkján.

debounce

A PEDO_DEB_STEPS_CONF regiszterbe írt lépéspergésmentesítési érték.

int1_enable

Ha True, a lépésszámláló eseményeit az INT1 lábra irányítja.

int2_enable

Ha True, a lépésszámláló eseményeit az INT2 lábra irányítja.

pedometer_reset() None

Visszaállítja a lépésszámlálót nullára.

steps() int

Visszaadja a 16 bites lépésszámláló aktuális értékét.

gyro() tuple[float, float, float]

Visszaadja a giroszkóp (x, y, z) vektorát fok/másodpercben.

accel() tuple[float, float, float]

Visszaadja a gyorsulásvektort (x, y, z) a standard gravitáció egységeiben (1 g = 9,81 m/s²).