lsm6dsox --- IMU 6-sumbu LSM6DSOX

Driver untuk unit pengukuran inersia iNEMO 6-sumbu ST LSM6DSOX (akselerometer 3-sumbu ditambah giroskop 3-sumbu) melalui I2C atau SPI. Selain keluaran IMU dasar, driver mengekspos fungsi tertanam on-chip: pedometer yang dapat dikonfigurasi (penghitung langkah) dan Machine Learning Core (MLC), yang dapat diprogram melalui file UCF yang diekspor dari alat Unico-GUI ST.

Contoh:

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)

Kelas

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)

Buat instans LSM6DSOX. Tipe bus dideteksi secara otomatis: jika bus mengekspos readfrom_mem, ia diperlakukan sebagai machine.I2C, jika tidak ia diperlakukan sebagai machine.SPI dan cs harus diberikan. Chip di-reset secara lunak, ODR dan skala yang diminta diprogram, dan file UCF MLC dimuat jika disediakan.

bus

Bus machine.I2C atau machine.SPI yang telah dikonfigurasi.

cs

Chip-select machine.Pin yang digunakan dalam mode SPI. Diperlukan ketika bus adalah instans SPI, diabaikan jika tidak.

address

Alamat I2C 7-bit perangkat. Default ke 0x6A; beberapa board menyambungkan pin SDO ke tinggi yang memilih 0x6B.

gyro_odr

Laju data keluaran giroskop dalam Hz. Harus salah satu dari 0 (mati), 1.6, 3.33, 6.66, 12.5, 26, 52, 104, 208, 416 atau 888.

accel_odr

Laju data keluaran akselerometer dalam Hz. Set nilai yang sama seperti gyro_odr.

gyro_scale

Rentang skala penuh giroskop dalam derajat per detik. Harus salah satu dari 250, 500, 1000 atau 2000.

accel_scale

Rentang skala penuh akselerometer dalam g. Harus salah satu dari 2, 4, 8 atau 16.

ucf

Path opsional ke file dump register .ucf Unico-GUI ST. Jika diberikan, file diurai dan diterapkan ke MLC selama konstruksi melalui load_mlc().

reset() None

Lakukan reset perangkat lunak melalui CTRL3_C dan blokir hingga bit reset bersih. Menimbulkan OSError jika perangkat gagal kembali dalam sepuluh percobaan ulang.

set_mem_bank(bank: int) None

Beralih bank register FUNC_CFG. Digunakan secara internal untuk mengakses halaman register fungsi tertanam dan sensor-hub; jarang diperlukan oleh kode aplikasi.

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

Aktifkan atau nonaktifkan blok fungsi tertanam. Ketika enable adalah True, tuple dua-byte emb_ab ditulis ke EMB_FUNC_EN_A/EMB_FUNC_EN_B. Ketika False, nilai saat ini dibaca, bit enable MLC/pedometer dihapus, dan nilai sebelumnya dikembalikan sehingga dapat dipulihkan nanti.

load_mlc(ucf: str) None

Terapkan program UCF MLC dari file di path ucf. Driver membaca file baris per baris, menerapkan setiap penulisan Ac <reg> <val>, kemudian mengaktifkan BDU, merutekan peristiwa MLC ke pin interupsi 1 dan mengaktifkan kembali fungsi tertanam.

mlc_output() bytes | None

Jika hasil MLC baru tersedia (bit MLC_STATUS diset), kembalikan isi delapan register MLC0_SRC..MLC7_SRC sebagai objek mirip bytes. Jika tidak, kembalikan None.

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

Konfigurasikan pedometer tertanam.

enable

Mengaktifkan atau menonaktifkan deteksi langkah pada blok fungsi tertanam.

debounce

Nilai debounce langkah yang ditulis ke PEDO_DEB_STEPS_CONF.

int1_enable

Jika True, rutekan peristiwa pedometer ke pin INT1.

int2_enable

Jika True, rutekan peristiwa pedometer ke pin INT2.

pedometer_reset() None

Reset penghitung langkah kembali ke nol.

steps() int

Kembalikan nilai saat ini dari penghitung langkah 16-bit.

gyro() tuple[float, float, float]

Kembalikan vektor giroskop (x, y, z) dalam derajat per detik.

accel() tuple[float, float, float]

Kembalikan vektor akselerasi (x, y, z) dalam satuan gravitasi standar (1 g = 9,81 m/s²).