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.