bmi270 — BMI270 יחידת מדידה אינרציאלית 6 צירים

מנהל התקן עבור יחידת המדידה האינרציאלית בעלת צריכת ההספק הנמוכה Bosch BMI270 בעלת 6 הצירים (מד תאוצה 3 צירים בתוספת ג’ירוסקופ 3 צירים) דרך I2C. מנהל ההתקן מבצע את רצף האתחול המלא של BMI270 בעת היצירה — איפוס רך, ביטול מצב חיסכון בהספק, העלאת בלוק התצורה ואימות מצב — לפני הגדרת קצבי נתוני הפלט וטווחי הסקאלה המלאה המבוקשים.

ניתן לקשר את המחלקה באופן אופציונלי למופע מגנטומטר חיצוני bmm150.BMM150, כך שהקוראים יוכלו להתייחס לזוג BMI270 + BMM150 כאל התקן יחיד בעל 9 צירים באמצעות המתודה 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).