bno055 — מנהל התקן BNO055 IMU¶
מודול זה מספק מנהל התקן לחיישן הכיוון המוחלט 9-צירי BNO055 של Bosch דרך 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-bit של ההתקן. ברירת המחדל היא0x28.modeהוא מצב הפעולה שאליו ההתקן מוכנס לאחר איפוס. ראו את קבועי מצב-הפעולה למטה. ברירת המחדל היאNDOF_MODE.axisהוא ערך תצורת מיפוי-צירים בן 2 בתים. ראו את קבועי מיקום-הצירים למטה. ברירת המחדל היאAXIS_P4.
הבנאי מאמת את מזהה השבב, מבצע איפוס רך, עובר להספק רגיל, מחיל את תצורת הצירים, ונכנס למצב הפעולה המבוקש באמצעות המתנד החיצוני. מעלה
RuntimeErrorאם ערכי אוגר המזהה הצפויים אינם נקראים בחזרה.- read_registers(register: int, size: int = 1) bytes¶
קורא
sizeבתים מאוגר ההתקן הנתון ומחזיר אותם כאובייקטbytes.
- operation_mode(mode: int = None) int¶
מקבל או קובע את אוגר מצב הפעולה. ללא ארגומנט, מחזיר את המצב הנוכחי כ-
int. עם ארגומנטmode, כותב את המצב החדש להתקן. ראו את קבועי מצב-הפעולה למטה.
- system_trigger(data: int) None¶
כותב
dataלאוגר ה-trigger של המערכת (0x3F). זה משמש פנימית להנפקת איפוס רך (0x20) ולבחירת המתנד החיצוני (0x80).
- power_mode(mode: int = None) bytes¶
מקבל או קובע את אוגר מצב ההספק. ללא ארגומנט, מחזיר את תוכן אוגר מצב-ההספק הנוכחי. עם ארגומנט
mode, כותב את מצב ההספק החדש להתקן.
- page(num: int = None) None¶
מקבל או קובע את עמוד האוגר. ללא ארגומנט, קורא את אוגר העמוד הנוכחי. עם ארגומנט
num, בוחר את העמוד.
- read_id() bytes¶
מחזיר את בלוק המזהה בן 4 הבתים שנקרא מאוגר
0x00. הערך הצפוי הואb'\xA0\xFB\x32\x0F'.
- axis(placement: bytes = None) bytes¶
מקבל או קובע את תצורת מיפוי הצירים. ללא ארגומנט, מחזיר את תצורת הצירים הנוכחית בת 2 הבתים. עם ארגומנט
placement, כותב את תצורת הצירים בת 2 הבתים שסופקה. השתמשו באחד מהקבועיםAXIS_P0..AXIS_P7שלמטה.
- quaternion() list¶
מחזיר את הכיוון הממוזג כרשימה בת 4 איברים
[w, x, y, z]של מספרים ממשיים מותאמים לטווח הקווטרניון היחידתי.
- accelerometer() list¶
מחזיר את קריאת מד-התאוצה כרשימה בת 3 איברים
[x, y, z]של מספרים ממשיים ב-m/s^2.
- magnetometer() list¶
מחזיר את קריאת המגנטומטר כרשימה בת 3 איברים
[x, y, z]של מספרים ממשיים במיקרו-טסלה.
- gyroscope() list¶
מחזיר את קריאת הגירוסקופ כרשימה בת 3 איברים
[x, y, z]של מספרים ממשיים במעלות לשנייה.
קבועים¶
מצבי פעולה¶
מיקומי צירים¶
הערכים הבאים בני 2 הבתים מועברים אל BNO055.axis() כדי למפות מחדש את מערכת הקואורדינטות של ההתקן. כל קבוע הוא זוג האוגרים (AXIS_MAP_CONFIG, AXIS_MAP_SIGN) מגיליון הנתונים של BNO055 (סעיף 3.4, Axis remap), מקודד מראש עבור אחד משמונת כיווני המיקום הסטנדרטיים.
בחרו את הקבוע שצירי הפלט שלו תואמים לאופן שבו השבב מותקן פיזית על ה-PCB המארח:
קבוע |
פלט X |
פלט Y |
פלט Z |
בתים |
התקנה |
|---|---|---|---|---|---|
|
|
|
|
פנים-למעלה, 90° נגד כיוון השעון מ-P1 |
|
|
|
|
|
פנים-למעלה, ברירת המחדל של גיליון הנתונים |
|
|
|
|
|
פנים-למעלה, מסובב 180° |
|
|
|
|
|
פנים-למעלה, 90° עם כיוון השעון מ-P1 |
|
|
|
|
|
פנים-למטה, הפוך סביב X (ברירת המחדל של הבנאי) |
|
|
|
|
|
פנים-למטה, מסובב 90° נגד כיוון השעון מ-P4 |
|
|
|
|
|
פנים-למטה, מסובב 180° מ-P4 |
|
|
|
|
|
פנים-למטה, מסובב 90° עם כיוון השעון מ-P4 |
Xc / Yc / Zc מציינים את הצירים האינטרינזיים של השבב (כפי שמודפסים בגיליון הנתונים של BNO055). עמודות ה-”Output“ הן הצירים שההתקן מספק דרך 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_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.