lsm6dsox — 6-osiowa jednostka IMU LSM6DSOX

Sterownik do 6-osiowej inercyjnej jednostki pomiarowej ST LSM6DSOX iNEMO (3-osiowy akcelerometr plus 3-osiowy żyroskop) przez I2C lub SPI. Oprócz podstawowego wyjścia IMU sterownik udostępnia wbudowane funkcje układu: konfigurowalny pedometr (licznik kroków) oraz Machine Learning Core (MLC), który można programować za pomocą plików UCF wyeksportowanych z narzędzia Unico-GUI firmy ST.

Przykład:

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)

Klasy

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)

Tworzy instancję LSM6DSOX. Typ magistrali jest wykrywany automatycznie: jeśli bus udostępnia readfrom_mem, jest traktowany jako machine.I2C, w przeciwnym razie jest traktowany jako machine.SPI i należy podać cs. Układ jest resetowany programowo, programowane są żądane ODR i skala, a jeśli podano, ładowany jest plik UCF dla MLC.

bus

Skonfigurowana magistrala machine.I2C lub machine.SPI.

cs

Pin wyboru układu machine.Pin używany w trybie SPI. Wymagany, gdy bus jest instancją SPI, w przeciwnym razie ignorowany.

address

7-bitowy adres I2C urządzenia. Domyślnie 0x6A; niektóre płytki podciągają pin SDO do stanu wysokiego, co wybiera 0x6B.

gyro_odr

Częstotliwość danych wyjściowych żyroskopu w Hz. Musi być jedną z wartości: 0 (wyłączony), 1.6, 3.33, 6.66, 12.5, 26, 52, 104, 208, 416 lub 888.

accel_odr

Częstotliwość danych wyjściowych akcelerometru w Hz. Ten sam zestaw wartości co gyro_odr.

gyro_scale

Pełnoskalowy zakres żyroskopu w stopniach na sekundę. Musi być jedną z wartości: 250, 500, 1000 lub 2000.

accel_scale

Pełnoskalowy zakres akcelerometru w g. Musi być jedną z wartości: 2, 4, 8 lub 16.

ucf

Opcjonalna ścieżka do pliku zrzutu rejestrów .ucf z ST Unico-GUI. Jeśli podana, plik jest parsowany i stosowany do MLC podczas konstrukcji za pomocą load_mlc().

reset() None

Wykonuje reset programowy przez CTRL3_C i blokuje do momentu wyzerowania bitu resetu. Zgłasza OSError, jeśli urządzenie nie powróci w ciągu dziesięciu prób.

set_mem_bank(bank: int) None

Przełącza bank rejestrów FUNC_CFG. Używane wewnętrznie do uzyskania dostępu do stron rejestrów wbudowanych funkcji i koncentratora sensorów; rzadko potrzebne w kodzie aplikacji.

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

Włącza lub wyłącza blok wbudowanych funkcji. Gdy enable ma wartość True, dwubajtowa krotka emb_ab jest zapisywana do EMB_FUNC_EN_A/EMB_FUNC_EN_B. Gdy False, bieżące wartości są odczytywane, bity włączające MLC/pedometr są zerowane, a poprzednie wartości są zwracane, aby można je było później przywrócić.

load_mlc(ucf: str) None

Stosuje program UCF dla MLC z pliku w ścieżce ucf. Sterownik przechodzi przez plik wiersz po wierszu, wykonuje każdy zapis Ac <reg> <val>, następnie włącza BDU, kieruje zdarzenia MLC do pinu przerwań 1 i ponownie włącza wbudowane funkcje.

mlc_output() bytes | None

Jeśli dostępne są nowe wyniki MLC (ustawiony bit MLC_STATUS), zwraca zawartość ośmiu rejestrów MLC0_SRC..MLC7_SRC jako obiekt typu bytes. W przeciwnym razie zwraca None.

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

Konfiguruje wbudowany pedometr.

enable

Włącza lub wyłącza wykrywanie kroków w bloku wbudowanych funkcji.

debounce

Wartość eliminacji drgań kroków zapisywana do PEDO_DEB_STEPS_CONF.

int1_enable

Jeśli True, kieruje zdarzenia pedometru do pinu INT1.

int2_enable

Jeśli True, kieruje zdarzenia pedometru do pinu INT2.

pedometer_reset() None

Zeruje licznik kroków z powrotem do zera.

steps() int

Zwraca bieżącą wartość 16-bitowego licznika kroków.

gyro() tuple[float, float, float]

Zwraca wektor żyroskopu (x, y, z) w stopniach na sekundę.

accel() tuple[float, float, float]

Zwraca wektor przyspieszenia (x, y, z) w jednostkach standardowego przyspieszenia ziemskiego (1 g = 9,81 m/s²).