lsm6dsox — LSM6DSOX IMU בעל 6 צירים

מנהל התקן ליחידת המדידה האינרציאלית ST LSM6DSOX iNEMO בעלת 6 הצירים (תאוצה תלת-צירית בתוספת ג’ירוסקופ תלת-צירי) באמצעות 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, אחרת מתעלמים ממנו.

address

כתובת I2C בת 7 סיביות של ההתקן. ברירת המחדל היא 0x6A; חלק מהלוחות מחווטים את פין ה-SDO גבוה מה שבוחר ב-0x6B.

gyro_odr

קצב נתוני הפלט של הג’ירוסקופ ב-Hz. חייב להיות אחד מבין 0 (כבוי), 1.6, 3.33, 6.66, 12.5, 26, 52, 104, 208, 416 או 888.

accel_odr

קצב נתוני הפלט של מד התאוצה ב-Hz. אותה קבוצת ערכים כמו gyro_odr.

gyro_scale

טווח הסקאלה המלאה של הג’ירוסקופ במעלות-לשנייה. חייב להיות אחד מבין 250, 500, 1000 או 2000.

accel_scale

טווח הסקאלה המלאה של מד התאוצה ב-g. חייב להיות אחד מבין 2, 4, 8 או 16.

ucf

נתיב אופציונלי לקובץ register-dump מסוג .ucf של ST Unico-GUI. אם סופק, הקובץ מנותח ומוחל על ה-MLC בעת הבנייה באמצעות load_mlc().

reset() None

מבצעת איפוס תוכנה באמצעות CTRL3_C וחוסמת עד שסיבית האיפוס מתנקה. מעלה OSError אם ההתקן אינו חוזר לפעול תוך עשרה ניסיונות חוזרים.

set_mem_bank(bank: int) None

מחליפה את בנק האוגרים של FUNC_CFG. משמשת באופן פנימי לגישה לעמודי האוגרים של הפונקציה המוטמעת ושל מרכז-החיישנים; לעיתים רחוקות נדרשת על ידי קוד היישום.

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

מאפשרת או מנטרלת את בלוק הפונקציות המוטמעות. כאשר enable הוא True ה-tuple emb_ab בן שני הבתים נכתב אל EMB_FUNC_EN_A/EMB_FUNC_EN_B. כאשר False הערכים הנוכחיים נקראים, סיביות האפשור של ה-MLC/מד-הצעדים מתנקות, והערכים הקודמים מוחזרים כך שניתן לשחזרם מאוחר יותר.

load_mlc(ucf: str) None

מחילה תוכנית UCF של MLC מהקובץ בנתיב 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.

pedometer_reset() None

מאפסת את מונה הצעדים בחזרה לאפס.

steps() int

מחזירה את הערך הנוכחי של מונה הצעדים בן 16 הסיביות.

gyro() tuple[float, float, float]

מחזירה את וקטור הג’ירוסקופ (x, y, z) במעלות לשנייה.

accel() tuple[float, float, float]

מחזירה את וקטור התאוצה (x, y, z) ביחידות של כבידה תקנית (1 g = 9.81 m/s²).