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
BMI270dan jalankan urutan inisialisasi pemuatan konfigurasi penuh. MemunculkanOSErrorjika ID chip tidak cocok atau jika urutan pemuatan gagal.busBus
machine.I2Cyang telah dikonfigurasi tempat sensor terpasang.csDicadangkan untuk mode SPI. Harus dibiarkan sebagai
None; SPI saat ini belum diimplementasikan dan memberikan bus non-I2C akan memunculkanValueError.addressAlamat I2C 7-bit perangkat. Defaultnya adalah
0x68; beberapa papan menghubungkan pin SDO ke level tinggi sehingga memilih0x69.gyro_odrLaju data keluaran giroskop dalam Hz. Harus salah satu dari
0.78,1.5,3.1,6.25,12.5,25,50,100,200,400,800atau1200.gyro_scaleRentang skala penuh giroskop dalam derajat per detik. Harus salah satu dari
125,250,500,1000atau2000.accel_odrLaju data keluaran akselerometer dalam Hz. Nilai yang sama dengan
gyro_odr.accel_scaleRentang skala penuh akselerometer dalam satuan g. Harus salah satu dari
2,4,8atau16.bmm_magnetInstans
bmm150.BMM150opsional. Jika diberikan, metodemagnet()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 dengangyro_scale.