bmi270 --- وحدة قياس بالقصور الذاتي IMU سداسية المحاور BMI270

مشغّل لوحدة القياس بالقصور الذاتي سداسية المحاور منخفضة الطاقة Bosch BMI270 (مقياس تسارع ثلاثي المحاور بالإضافة إلى جيروسكوب ثلاثي المحاور) عبر I2C. يقوم المشغّل بتنفيذ تسلسل تهيئة BMI270 الكامل عند الإنشاء --- إعادة ضبط ناعمة، وتعطيل وضع توفير الطاقة، ورفع كتلة بيانات التهيئة، والتحقق من الحالة --- قبل تهيئة معدلات بيانات الإخراج ونطاقات المقياس الكامل المطلوبة.

يمكن ربط الفئة اختيارياً بنسخة مقياس مغناطيسية خارجية bmm150.BMM150 بحيث يمكن للمستدعين التعامل مع زوج BMI270 + BMM150 كجهاز واحد تساعي المحاور من خلال الدالة magnet().

ملاحظة

وضع SPI غير مدعوم في هذا المشغّل؛ تمرير ناقل غير I2C يثير ValueError.

مثال:

import time
from machine import Pin, I2C
from bmi270 import BMI270

imu = BMI270(I2C(1, scl=Pin("P15"), sda=Pin("P14")))

while True:
    print("Accelerometer: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*imu.accel()))
    print("Gyroscope:     x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*imu.gyro()))
    time.sleep_ms(100)

الفئات

class bmi270.BMI270(bus: machine.I2C, cs: machine.Pin | None = None, address: int = 0x68, gyro_odr: float = 100, gyro_scale: int = 2000, accel_odr: float = 100, accel_scale: int = 4, bmm_magnet: BMM150 | None = None)

إنشاء نسخة BMI270 وتشغيل تسلسل تهيئة تحميل التهيئة الكامل. يثير OSError إذا لم يتطابق معرّف الشريحة أو إذا فشل تسلسل التحميل.

bus

ناقل machine.I2C مهيأ يكون المستشعر متصلاً به.

cs

محجوز لوضع SPI. يجب أن يُترك على القيمة None؛ فوضع SPI غير منفّذ حالياً وتمرير ناقل غير I2C يثير ValueError.

address

عنوان I2C ذو 7 بتات للجهاز. القيمة الافتراضية هي 0x68؛ تثبّت بعض اللوحات دبوس SDO على المستوى المرتفع مما يختار 0x69.

gyro_odr

معدل بيانات إخراج الجيروسكوب بوحدة Hz. يجب أن يكون أحد القيم 0.78 أو 1.5 أو 3.1 أو 6.25 أو 12.5 أو 25 أو 50 أو 100 أو 200 أو 400 أو 800 أو 1200.

gyro_scale

نطاق المقياس الكامل للجيروسكوب بالدرجات في الثانية. يجب أن يكون أحد القيم 125 أو 250 أو 500 أو 1000 أو 2000.

accel_odr

معدل بيانات إخراج مقياس التسارع بوحدة Hz. نفس مجموعة قيم gyro_odr.

accel_scale

نطاق المقياس الكامل لمقياس التسارع بوحدة g. يجب أن يكون أحد القيم 2 أو 4 أو 8 أو 16.

bmm_magnet

نسخة اختيارية من bmm150.BMM150. عند توفيرها، تفوّض الدالة magnet() العمل إليها؛ وإلا تُرجع magnet() أصفاراً.

reset() None

إصدار أمر إعادة الضبط الناعمة لـ BMI270. بعد استدعاء هذا يجب إعادة تهيئة الجهاز قبل استخدامه مرة أخرى.

gyro() tuple[float, float, float]

إرجاع متجه الجيروسكوب (x, y, z) بالدرجات في الثانية، مقاساً وفقاً لـ gyro_scale.

accel() tuple[float, float, float]

إرجاع متجه التسارع (x, y, z) بوحدات الجاذبية القياسية (1 g = 9.81 m/s²)، مقاساً وفقاً لـ accel_scale.

magnet() tuple[float, float, float]

إذا تم توفير bmm_magnet عند الإنشاء، يُرجع أحدث قراءة من المقياس المغناطيسي من ذلك الجهاز. وإلا يُرجع (0.0, 0.0, 0.0).