imu --- Tiện ích IMU cho Arduino Nano 33 BLE Sense

Ghi chú

Trang này mô tả module Python imu của Arduino Nano 33 BLE Sense (một lớp bọc mỏng xung quanh các driver IMU trên bo mạch). Đối với module imu cấp C của OpenMV được tích hợp sẵn trên các bo mạch camera OPENMV_N6, OPENMV_RT1060 và OPENMV_AE3, xem imu --- cảm biến IMU.

Module này là một lớp bọc mỏng theo board cụ thể, cung cấp đơn vị đo lường quán tính (IMU) trên bo mạch của Arduino Nano 33 BLE Sense dưới dạng một đối tượng IMU duy nhất. Cả hai phiên bản phần cứng của bo mạch đều được xử lý minh bạch:

  • Rev 1 sử dụng một IMU 9 trục LSM9DS1 duy nhất.

  • Rev 2 kết hợp Bosch BMI270 (gia tốc kế + con quay hồi chuyển) với từ kế Bosch BMM150.

Hàm khởi tạo quét bus I2C tìm địa chỉ BMI270 (0x68) và tự động chọn driver phù hợp, do đó mã người dùng có thể được viết một lần và chạy trên cả hai phiên bản.

Ví dụ:

import time
import imu
from machine import Pin, I2C

bus = I2C(1, scl=Pin("P15"), sda=Pin("P14"))
sensor = imu.IMU(bus)

while True:
    print('Accelerometer: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}'.format(*sensor.accel()))
    print('Gyroscope:     x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}'.format(*sensor.gyro()))
    print('Magnetometer:  x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}'.format(*sensor.magnet()))
    print("")
    time.sleep_ms(100)

class IMU

class imu.IMU(bus: 'machine.I2C')

Khởi tạo một đối tượng IMU gắn với một bus I2C.

  • bus là một phiên bản machine.I2C đã được khởi tạo, kết nối với IMU trên bo mạch.

Khi khởi tạo, bus được quét: nếu một thiết bị phản hồi tại địa chỉ 0x68, một cặp BMI270BMM150 sẽ được khởi tạo (Nano 33 BLE Sense Rev 2), ngược lại một LSM9DS1 sẽ được khởi tạo (Rev 1). Driver cơ bản được lưu trong thuộc tính imu và được cấu hình với phạm vi mặc định và tốc độ dữ liệu đầu ra.

accel() tuple[float, float, float]

Trả về giá trị đọc mới nhất từ gia tốc kế dưới dạng tuple (x, y, z) theo đơn vị g (gia tốc trọng trường chuẩn).

gyro() tuple[float, float, float]

Trả về giá trị đọc mới nhất từ con quay hồi chuyển dưới dạng tuple (x, y, z) theo độ trên giây.

magnet() tuple[float, float, float]

Trả về giá trị đọc mới nhất từ từ kế dưới dạng tuple (x, y, z) theo micro-tesla (uT).