bmi270 --- BMI270 6-axis IMU

Driver untuk Bosch BMI270, unit pengukuran inersia 6-sumbu berdaya rendah (akselerometer 3-sumbu ditambah giroskop 3-sumbu) melalui I2C. Driver melakukan urutan inisialisasi penuh BMI270 saat konstruksi --- soft reset, nonaktifkan mode hemat daya, unggah konfigurasi-blob dan verifikasi status --- sebelum mengonfigurasi laju data keluaran dan rentang skala penuh yang diminta.

Kelas ini secara opsional dapat dihubungkan ke instans magnetometer bmm150.BMM150 eksternal sehingga pemanggil dapat memperlakukan pasangan BMI270 + BMM150 sebagai perangkat 9-sumbu tunggal melalui metode magnet().

Catatan

Mode SPI tidak didukung oleh driver ini; memberikan bus non-I2C akan memunculkan ValueError.

Contoh:

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)

Kelas

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)

Buat instans BMI270 dan jalankan urutan inisialisasi pemuatan konfigurasi penuh. Memunculkan OSError jika ID chip tidak cocok atau jika urutan pemuatan gagal.

bus

Bus machine.I2C yang telah dikonfigurasi tempat sensor terpasang.

cs

Dicadangkan untuk mode SPI. Harus dibiarkan sebagai None; SPI saat ini belum diimplementasikan dan memberikan bus non-I2C akan memunculkan ValueError.

address

Alamat I2C 7-bit perangkat. Defaultnya adalah 0x68; beberapa papan menghubungkan pin SDO ke level tinggi sehingga memilih 0x69.

gyro_odr

Laju data keluaran giroskop dalam Hz. Harus salah satu dari 0.78, 1.5, 3.1, 6.25, 12.5, 25, 50, 100, 200, 400, 800 atau 1200.

gyro_scale

Rentang skala penuh giroskop dalam derajat per detik. Harus salah satu dari 125, 250, 500, 1000 atau 2000.

accel_odr

Laju data keluaran akselerometer dalam Hz. Nilai yang sama dengan gyro_odr.

accel_scale

Rentang skala penuh akselerometer dalam satuan g. Harus salah satu dari 2, 4, 8 atau 16.

bmm_magnet

Instans bmm150.BMM150 opsional. Jika diberikan, metode magnet() mendelegasikan ke sana; jika tidak, magnet() mengembalikan nol.

reset() None

Keluarkan perintah soft-reset BMI270. Setelah memanggil ini, perangkat harus diinisialisasi ulang sebelum digunakan lebih lanjut.

gyro() tuple[float, float, float]

Kembalikan vektor giroskop (x, y, z) dalam derajat per detik, diskalakan sesuai dengan gyro_scale.

accel() tuple[float, float, float]

Kembalikan vektor akselerasi (x, y, z) dalam satuan gravitasi standar (1 g = 9,81 m/s²), diskalakan sesuai dengan accel_scale.

magnet() tuple[float, float, float]

Jika bmm_magnet diberikan saat konstruksi, kembalikan pembacaan magnetometer terbaru dari perangkat tersebut. Jika tidak, kembalikan (0.0, 0.0, 0.0).