bno055 --- مشغّل وحدة القياس بالقصور الذاتي BNO055¶
توفر هذه الوحدة مشغّلاً لمستشعر التوجه المطلق ذي المحاور التسعة Bosch BNO055 عبر I2C. يدمج BNO055 بيانات مقياس التسارع ومقياس المغناطيسية والجيروسكوب على الشريحة ويُتيح مخرجات الكواتيرنيون وزوايا أويلر والتسارع الخطي والجاذبية إضافةً إلى قنوات المستشعر الخام.
مثال على الاستخدام:
import time
from machine import I2C
import bno055
bus = I2C(1)
imu = bno055.BNO055(bus)
while True:
print(imu.euler())
time.sleep_ms(100)
الأصناف¶
- class bno055.BNO055(bus: machine.I2C, address: int = 0x28, mode: int = NDOF_MODE, axis: bytes = AXIS_P4)¶
إنشاء نسخة من مشغّل BNO055.
busهو كائن ناقلmachine.I2Cمُهيَّأ يُستخدم للتواصل مع المستشعر.addressهو عنوان I2C ذو 7 بتات للجهاز. القيمة الافتراضية0x28.modeهو وضع التشغيل الذي يُوضَع فيه الجهاز بعد إعادة الضبط. انظر ثوابت وضع التشغيل أدناه. القيمة الافتراضيةNDOF_MODE.axisهو قيمة إعادة تخطيط محاور بحجم بايتين. انظر ثوابت وضع المحاور أدناه. القيمة الافتراضيةAXIS_P4.
يتحقق المُنشئ من معرّف الشريحة، ويجري إعادة ضبط ناعمة، ويبدّل إلى الطاقة العادية، ويطبّق إعداد المحاور، ويدخل وضع التشغيل المطلوب باستخدام المذبذب الخارجي. يثير
RuntimeErrorإذا لم تُقرأ قيم سجل المعرّف المتوقعة.- read_registers(register: int, size: int = 1) bytes¶
يقرأ
sizeبايتاً من سجل الجهاز المُعطى ويعيدها ككائنbytes.
- write_registers(register: int, data: bytes) None¶
يكتب بايتات
dataالمُعطاة إلى الجهاز بدءاً منregister.
- operation_mode(mode: int = None) int¶
يقرأ أو يضبط سجل وضع التشغيل. بدون وسيط، يعيد الوضع الحالي كـ
int. مع وسيطmode، يكتب الوضع الجديد إلى الجهاز. انظر ثوابت وضع التشغيل أدناه.
- system_trigger(data: int) None¶
يكتب
dataإلى سجل مشغّل النظام (0x3F). يُستخدم هذا داخلياً لإصدار إعادة ضبط ناعمة (0x20) ولاختيار المذبذب الخارجي (0x80).
- power_mode(mode: int = None) bytes¶
يقرأ أو يضبط سجل وضع الطاقة. بدون وسيط، يعيد محتويات سجل وضع الطاقة الحالية. مع وسيط
mode، يكتب وضع الطاقة الجديد إلى الجهاز.
- page(num: int = None) None¶
يقرأ أو يضبط صفحة السجل. بدون وسيط، يقرأ سجل الصفحة الحالية. مع وسيط
num، يختار الصفحة.
- read_id() bytes¶
يعيد كتلة المعرّف ذات الأربعة بايتات المقروءة من السجل
0x00. القيمة المتوقعة هيb'\xA0\xFB\x32\x0F'.
- axis(placement: bytes = None) bytes¶
يقرأ أو يضبط إعداد إعادة تخطيط المحاور. بدون وسيط، يعيد إعداد المحاور الحالي بحجم بايتين. مع وسيط
placement، يكتب إعداد المحاور المُورَّد بحجم بايتين. استخدم أحد الثوابتAXIS_P0..AXIS_P7أدناه.
- quaternion() list¶
يعيد التوجه المدموج كقائمة من أربعة عناصر
[w, x, y, z]من أعداد عشرية مُحجَّمة إلى نطاق الكواتيرنيون الواحدي.
- accelerometer() list¶
يعيد قراءة مقياس التسارع كقائمة من ثلاثة عناصر
[x, y, z]من أعداد عشرية بوحدة m/s^2.
- magnetometer() list¶
يعيد قراءة مقياس المغناطيسية كقائمة من ثلاثة عناصر
[x, y, z]من أعداد عشرية بوحدة الميكروتسلا.
- gyroscope() list¶
يعيد قراءة الجيروسكوب كقائمة من ثلاثة عناصر
[x, y, z]من أعداد عشرية بالدرجات في الثانية.
الثوابت¶
أوضاع التشغيل¶
- bno055.IMUPLUS_MODE: int¶
وضع دمج وحدة القياس بالقصور الذاتي باستخدام مقياس التسارع + الجيروسكوب (
0x08).
أوضاع المحاور¶
تُمرَّر القيم التالية ذات البايتين إلى BNO055.axis() لإعادة تخطيط نظام إحداثيات الجهاز. كل ثابت هو زوج السجلات (AXIS_MAP_CONFIG, AXIS_MAP_SIGN) من ورقة بيانات BNO055 (القسم 3.4، إعادة تخطيط المحاور)، مُرمَّز مسبقاً لأحد التوجهات القياسية الثمانية للوضع.
اختر الثابت الذي تطابق محاور خرجه طريقة تركيب الشريحة فعلياً على لوحة الدوائر المضيفة:
الثابت |
الخرج X |
الخرج Y |
الخرج Z |
البايتات |
التركيب |
|---|---|---|---|---|---|
|
|
|
|
الوجه لأعلى، 90° عكس عقارب الساعة من P1 |
|
|
|
|
|
الوجه لأعلى، الإعداد الافتراضي لورقة البيانات |
|
|
|
|
|
الوجه لأعلى، مُدار 180° |
|
|
|
|
|
الوجه لأعلى، 90° مع عقارب الساعة من P1 |
|
|
|
|
|
الوجه لأسفل، مقلوب حول X (الإعداد الافتراضي للمُنشئ) |
|
|
|
|
|
الوجه لأسفل، مُدار 90° عكس عقارب الساعة من P4 |
|
|
|
|
|
الوجه لأسفل، مُدار 180° من P4 |
|
|
|
|
|
الوجه لأسفل، مُدار 90° مع عقارب الساعة من P4 |
تشير Xc / Yc / Zc إلى المحاور الجوهرية للشريحة (كما هو مطبوع في ورقة بيانات BNO055). أعمدة "الخرج" هي المحاور التي يسلّمها الجهاز عبر BNO055.euler() وBNO055.gyro() وما إلى ذلك. P0 حتى P3 هي الدورات الأربع بزاوية 90° للشريحة في وضع جانب المكوّنات لأعلى؛ وP4 حتى P7 هي الدورات الأربع نفسها بعد قلب الشريحة على ظهرها.
- bno055.AXIS_P0: bytes¶
الشريحة بوجهها لأعلى، مُدارة 90° عكس عقارب الساعة من
AXIS_P1. محاور الخرج:X = -YcوY = +XcوZ = +Zc.
- bno055.AXIS_P1: bytes¶
الشريحة بوجهها لأعلى في التوجه الافتراضي لورقة بيانات BNO055. لا تُطبَّق إعادة تخطيط:
X = +XcوY = +YcوZ = +Zc.
- bno055.AXIS_P2: bytes¶
الشريحة بوجهها لأعلى، مُدارة 180° من
AXIS_P1. محاور الخرج:X = -XcوY = -YcوZ = +Zc.
- bno055.AXIS_P3: bytes¶
الشريحة بوجهها لأعلى، مُدارة 90° مع عقارب الساعة من
AXIS_P1. محاور الخرج:X = +YcوY = -XcوZ = +Zc.
- bno055.AXIS_P4: bytes¶
الشريحة مقلوبة على ظهرها (جانب المكوّنات لأسفل) بالنسبة إلى
AXIS_P1. محاور الخرج:X = +XcوY = -YcوZ = -Zc. هذا هو الوضع الذي يستخدمه مُنشئBNO055عند عدم تمرير وسيطaxis.
- bno055.AXIS_P5: bytes¶
الشريحة بوجهها لأسفل، مُدارة 90° عكس عقارب الساعة من
AXIS_P4. محاور الخرج:X = +YcوY = +XcوZ = -Zc.