bmi270 --- IMU 6 trục BMI270

Driver cho cảm biến đo quán tính 6 trục tiêu thụ điện năng thấp Bosch BMI270 (gia tốc kế 3 trục kết hợp con quay hồi chuyển 3 trục) qua I2C. Driver thực hiện toàn bộ trình tự khởi tạo BMI270 khi khởi tạo --- đặt lại mềm, tắt chế độ tiết kiệm điện, tải blob cấu hình và xác minh trạng thái --- trước khi cấu hình tốc độ dữ liệu đầu ra và dải đo đầy đủ theo yêu cầu.

Lớp có thể liên kết tùy chọn với một thể hiện từ kế ngoài bmm150.BMM150 để người dùng có thể xem cặp BMI270 + BMM150 như một thiết bị 9 trục duy nhất thông qua phương thức magnet().

Ghi chú

Chế độ SPI không được driver này hỗ trợ; truyền bus không phải I2C sẽ báo lỗi ValueError.

Ví dụ:

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)

Các lớp

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)

Khởi tạo một thể hiện BMI270 và chạy toàn bộ trình tự khởi tạo tải cấu hình. Báo lỗi OSError nếu ID chip không khớp hoặc nếu trình tự tải thất bại.

bus

Bus machine.I2C đã được cấu hình mà cảm biến kết nối vào.

cs

Dành riêng cho chế độ SPI. Phải để là None; SPI hiện chưa được triển khai và truyền bus không phải I2C sẽ báo lỗi ValueError.

address

Địa chỉ I2C 7 bit của thiết bị. Mặc định là 0x68; một số bo mạch kéo chân SDO lên cao để chọn 0x69.

gyro_odr

Tốc độ dữ liệu đầu ra của con quay hồi chuyển theo Hz. Phải là một trong các giá trị 0.78, 1.5, 3.1, 6.25, 12.5, 25, 50, 100, 200, 400, 800 hoặc 1200.

gyro_scale

Dải đo đầy đủ của con quay hồi chuyển theo độ/giây. Phải là một trong các giá trị 125, 250, 500, 1000 hoặc 2000.

accel_odr

Tốc độ dữ liệu đầu ra của gia tốc kế theo Hz. Cùng tập giá trị như gyro_odr.

accel_scale

Dải đo đầy đủ của gia tốc kế theo g. Phải là một trong các giá trị 2, 4, 8 hoặc 16.

bmm_magnet

Thể hiện bmm150.BMM150 tùy chọn. Khi được cung cấp, phương thức magnet() sẽ ủy quyền cho nó; nếu không, magnet() trả về các giá trị không.

reset() None

Phát lệnh đặt lại mềm BMI270. Sau khi gọi lệnh này, thiết bị phải được khởi tạo lại trước khi tiếp tục sử dụng.

gyro() tuple[float, float, float]

Trả về vector con quay hồi chuyển (x, y, z) theo độ/giây, được điều chỉnh theo gyro_scale.

accel() tuple[float, float, float]

Trả về vector gia tốc (x, y, z) theo đơn vị trọng lực tiêu chuẩn (1 g = 9,81 m/s²), được điều chỉnh theo accel_scale.

magnet() tuple[float, float, float]

Nếu bmm_magnet được cung cấp khi khởi tạo, trả về kết quả đọc từ kế mới nhất từ thiết bị đó. Nếu không, trả về (0.0, 0.0, 0.0).