bmi270 — IMU pe 6 axe BMI270

Driver pentru unitatea de măsurare inerțială pe 6 axe cu consum redus Bosch BMI270 (accelerometru pe 3 axe plus giroscop pe 3 axe) prin I2C. La construire, driverul execută întreaga secvență de inițializare BMI270 — resetare software, dezactivarea modului de economisire a energiei, încărcarea blob-ului de configurare și verificarea stării — înainte de a configura ratele de date de ieșire și intervalele la scară completă solicitate.

Clasa poate fi opțional legată de o instanță externă a magnetometrului bmm150.BMM150, astfel încât apelanții pot trata o pereche BMI270 + BMM150 ca pe un singur dispozitiv pe 9 axe prin metoda magnet().

Notă

Modul SPI nu este acceptat de acest driver; transmiterea unei magistrale non-I2C generează ValueError.

Exemplu:

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)

Clase

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)

Construiește o instanță BMI270 și execută întreaga secvență de inițializare cu încărcarea configurației. Generează OSError dacă ID-ul cipului nu se potrivește sau dacă secvența de încărcare eșuează.

bus

O magistrală machine.I2C configurată la care este atașat senzorul.

cs

Rezervat pentru modul SPI. Trebuie lăsat ca None; SPI nu este implementat în prezent, iar furnizarea unei magistrale non-I2C generează ValueError.

address

Adresa I2C pe 7 biți a dispozitivului. Valoarea implicită este 0x68; unele plăci leagă pinul SDO la nivel ridicat, ceea ce selectează 0x69.

gyro_odr

Rata de date de ieșire a giroscopului în Hz. Trebuie să fie una dintre valorile 0.78, 1.5, 3.1, 6.25, 12.5, 25, 50, 100, 200, 400, 800 sau 1200.

gyro_scale

Intervalul la scară completă al giroscopului în grade pe secundă. Trebuie să fie una dintre valorile 125, 250, 500, 1000 sau 2000.

accel_odr

Rata de date de ieșire a accelerometrului în Hz. Același set de valori ca gyro_odr.

accel_scale

Intervalul la scară completă al accelerometrului în g. Trebuie să fie una dintre valorile 2, 4, 8 sau 16.

bmm_magnet

Instanță opțională bmm150.BMM150. Când este furnizată, metoda magnet() deleagă către aceasta; în caz contrar magnet() returnează zerouri.

reset() None

Emite comanda de resetare software a BMI270. După apelarea acesteia, dispozitivul trebuie reinițializat înainte de utilizarea ulterioară.

gyro() tuple[float, float, float]

Returnează vectorul giroscopului (x, y, z) în grade pe secundă, scalat conform gyro_scale.

accel() tuple[float, float, float]

Returnează vectorul de accelerație (x, y, z) în unități de accelerație gravitațională standard (1 g = 9,81 m/s²), scalat conform accel_scale.

magnet() tuple[float, float, float]

Dacă a fost furnizat un bmm_magnet la construire, returnează cea mai recentă citire a magnetometrului de la acel dispozitiv. În caz contrar returnează (0.0, 0.0, 0.0).