imu --- مساعد IMU لـ Arduino Nano 33 BLE Sense

ملاحظة

توثّق هذه الصفحة وحدة imu الخاصة بلغة Python لـ Arduino Nano 33 BLE Sense (وهي غلاف صغير حول مشغّلات IMU المدمجة في اللوحة). أما وحدة imu على مستوى C الخاصة بـ OpenMV والمتوفرة على لوحات الكاميرا OPENMV_N6 و OPENMV_RT1060 و OPENMV_AE3، فراجع imu --- مستشعر imu.

هذه الوحدة هي غلاف رفيع خاص باللوحة يكشف وحدة القياس بالقصور الذاتي المدمجة في Arduino Nano 33 BLE Sense ككائن IMU واحد. تُعالَج كلتا مراجعتي الجهاز بشفافية:

  • Rev 1 تستخدم IMU واحدة من نوع LSM9DS1 بتسعة محاور.

  • Rev 2 تجمع بين Bosch BMI270 (مقياس تسارع + جيروسكوب) ومقياس مغناطيسية Bosch BMM150.

يفحص المُنشئ ناقل I2C بحثاً عن عنوان BMI270 (0x68) ويختار المشغّل المطابق تلقائياً، بحيث يمكن كتابة شيفرة المستخدم مرة واحدة وتشغيلها على أي من المراجعتين.

مثال:

import time
import imu
from machine import Pin, I2C

bus = I2C(1, scl=Pin("P15"), sda=Pin("P14"))
sensor = imu.IMU(bus)

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

class IMU

class imu.IMU(bus: 'machine.I2C')

إنشاء كائن IMU مرتبط بناقل I2C.

  • bus هو نسخة machine.I2C مُهيّأة ومتصلة بوحدة (وحدات) IMU المدمجة في اللوحة.

عند الإنشاء يُفحص الناقل: إذا استجاب جهاز عند العنوان 0x68 يتم إنشاء زوج BMI270 وBMM150 (Nano 33 BLE Sense Rev 2)، وإلا يتم إنشاء LSM9DS1 (Rev 1). يُحتفظ بالمشغّل الأساسي في السمة imu ويُهيّأ بالنطاقات ومعدلات بيانات الخرج الافتراضية.

accel() tuple[float, float, float]

إرجاع أحدث قراءة لمقياس التسارع على شكل صف (x, y, z) بوحدات g (تسارعات الجاذبية القياسية).

gyro() tuple[float, float, float]

إرجاع أحدث قراءة للجيروسكوب على شكل صف (x, y, z) بالدرجات في الثانية.

magnet() tuple[float, float, float]

إرجاع أحدث قراءة لمقياس المغناطيسية على شكل صف (x, y, z) بوحدة الميكروتسلا (uT).