bno055 --- BNO055 IMU 驅動程式¶
本模組透過 I2C 為 Bosch BNO055 九軸絕對方位感測器提供驅動程式。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是裝置的 7 位元 I2C 位址。預設為0x28。mode是裝置在重置後進入的操作模式。請參閱下方的操作模式常數。預設為NDOF_MODE。axis是 2 位元組的軸向重映射設定值。請參閱下方的軸向放置常數。預設為AXIS_P4。
建構函式會驗證晶片 ID、執行軟性重置、切換至正常電源、套用軸向設定,並使用外部振盪器進入要求的操作模式。若未讀回預期的 ID 暫存器值,則引發
RuntimeError。- operation_mode(mode: int = None) int¶
取得或設定操作模式暫存器。若不提供引數,則以
int傳回目前的模式。若提供mode引數,則將新模式寫入裝置。請參閱下方的操作模式常數。
常數¶
操作模式¶
軸向放置¶
下列 2 位元組值會傳遞給 BNO055.axis() 以重映射裝置座標系統。每個常數都是來自 BNO055 資料手冊(第 3.4 節,Axis remap)的 (AXIS_MAP_CONFIG, AXIS_MAP_SIGN) 暫存器配對,已針對八種標準放置方位之一預先編碼。
請選擇其輸出軸向與晶片在主機 PCB 上實體安裝方式相符的常數:
常數 | 輸出 X | 輸出 Y | 輸出 Z | 位元組 | 安裝方式 |
|---|---|---|---|---|---|
|
|
|
| 正面朝上,自 P1 逆時針旋轉 90° | |
|
|
|
| 正面朝上,資料手冊預設值 | |
|
|
|
| 正面朝上,旋轉 180° | |
|
|
|
| 正面朝上,自 P1 順時針旋轉 90° | |
|
|
|
| 正面朝下,繞 X 軸翻轉(建構函式預設值) | |
|
|
|
| 正面朝下,自 P4 逆時針旋轉 90° | |
|
|
|
| 正面朝下,自 P4 旋轉 180° | |
|
|
|
| 正面朝下,自 P4 順時針旋轉 90° |
Xc/Yc/Zc 表示晶片的固有軸向(如 BNO055 資料手冊上所標示)。「Output」欄為裝置透過 BNO055.euler()、BNO055.gyro() 等方法輸出的軸向。P0 到 P3 是晶片在元件面朝上方位下的四種 90° 旋轉;P4 到 P7 則是將晶片翻轉至背面後的相同四種旋轉。