lsm6dsox — 6-осьовий IMU LSM6DSOX¶
Драйвер для 6-осьового інерціального вимірювального пристрою (IMU) iNEMO ST LSM6DSOX (3-осьовий акселерометр і 3-осьовий гіроскоп) через I2C або SPI. На додаток до базового виводу IMU, драйвер надає доступ до вбудованих функцій мікросхеми: налаштований крокомір (лічильник кроків) і Machine Learning Core (MLC), який можна програмувати через UCF-файли, експортовані з інструменту Unico-GUI від ST.
Приклад:
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)
Класи¶
- 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)¶
Створює екземпляр
LSM6DSOX. Тип шини визначається автоматично: якщоbusмає методreadfrom_mem, він розглядається якmachine.I2C, інакше — якmachine.SPIі потрібно вказатиcs. Виконується програмне скидання мікросхеми, задаються запитані ODR і масштаб, а за наявності завантажується UCF-файл MLC.busНалаштована шина
machine.I2Cабоmachine.SPI.csВивід вибору мікросхеми
machine.Pinу режимі SPI. Обов’язковий, якщоbusє екземпляром SPI; в інших випадках ігнорується.address7-бітна I2C-адреса пристрою. За замовчуванням
0x6A; на деяких платах вивід SDO підтягнутий до VCC, що вибирає0x6B.gyro_odrЧастота виведення даних гіроскопа в Гц. Має бути одним із значень:
0(вимкнено),1.6,3.33,6.66,12.5,26,52,104,208,416або888.accel_odrЧастота виведення даних акселерометра в Гц. Той самий набір значень, що й у
gyro_odr.gyro_scaleДіапазон повної шкали гіроскопа в градусах на секунду. Має бути одним із значень:
250,500,1000або2000.accel_scaleДіапазон повної шкали акселерометра в g. Має бути одним із значень:
2,4,8або16.ucfНеобов’язковий шлях до файлу дампу регістрів
.ucfвід ST Unico-GUI. Якщо вказано, файл аналізується та застосовується до MLC під час ініціалізації черезload_mlc().
- reset() None¶
Виконує програмне скидання через
CTRL3_Cі блокує виконання до очищення біта скидання. ГенеруєOSError, якщо пристрій не відповідає протягом десяти спроб.
- set_mem_bank(bank: int) None¶
Перемикає банк регістрів FUNC_CFG. Використовується внутрішньо для доступу до сторінок вбудованих функцій і регістрів sensor-hub; рідко потрібний у коді програми.
- set_embedded_functions(enable: bool, emb_ab: tuple[int, int] | None = None) tuple[int, int]¶
Вмикає або вимикає блок вбудованих функцій. Якщо
enableдорівнюєTrue, двобайтовий кортежemb_abзаписується доEMB_FUNC_EN_A/EMB_FUNC_EN_B. ЯкщоFalse, зчитуються поточні значення, очищуються біти увімкнення MLC/крокоміра і повертаються попередні значення для подальшого відновлення.
- load_mlc(ucf: str) None¶
Застосовує програму MLC UCF з файлу за шляхом
ucf. Драйвер проходить файл рядок за рядком, виконує кожен записAc <reg> <val>, потім вмикає BDU, направляє події MLC на вивід переривання 1 і знову вмикає вбудовані функції.
- mlc_output() bytes | None¶
Якщо є нові результати MLC (встановлено біт
MLC_STATUS), повертає вміст восьми регістрівMLC0_SRC..MLC7_SRCяк байтоподібний об’єкт. Інакше повертаєNone.
- pedometer_config(enable: bool = True, debounce: int = 10, int1_enable: bool = False, int2_enable: bool = False) None¶
Налаштовує вбудований крокомір.
enableВмикає або вимикає виявлення кроків у блоці вбудованих функцій.
debounceЗначення антидребезгу кроків, що записується до
PEDO_DEB_STEPS_CONF.int1_enableЯкщо
True, направляє події крокоміра на вивідINT1.int2_enableЯкщо
True, направляє події крокоміра на вивідINT2.