lsm6dsox --- وحدة قياس بالقصور الذاتي LSM6DSOX سداسية المحاور¶
مُشغِّل لوحدة القياس بالقصور الذاتي iNEMO سداسية المحاور من ST من طراز LSM6DSOX (مقياس تسارع ثلاثي المحاور مع جيروسكوب ثلاثي المحاور) عبر I2C أو SPI. وبالإضافة إلى خرج وحدة القياس الأساسي، يوفِّر المُشغِّل الدوال المضمَّنة داخل الشريحة: عدّاد خطوات (pedometer) قابل للضبط ونواة التعلّم الآلي (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 والمقياس المطلوبان، ويُحمَّل ملف MLC UCF إن قُدِّم.busإما ناقل
machine.I2Cأوmachine.SPIمُعَدّ.csدبوس اختيار الشريحة
machine.Pinالمُستخدَم في نمط SPI. مطلوب عندما يكونbusنسخة SPI، ويُتجاهَل خلاف ذلك.addressعنوان I2C ذو 7 بتات للجهاز. قيمته الافتراضية
0x6A؛ تربط بعض اللوحات دبوس SDO إلى الجهد العالي مما يحدد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. تُستخدَم داخليًا للوصول إلى صفحات سجلات الدوال المضمَّنة ومحور المستشعرات؛ ونادرًا ما تحتاجها شيفرة التطبيق.
- 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.