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ăOSErrordacă ID-ul cipului nu se potrivește sau dacă secvența de încărcare eșuează.busO magistrală
machine.I2Cconfigurată la care este atașat senzorul.csRezervat pentru modul SPI. Trebuie lăsat ca
None; SPI nu este implementat în prezent, iar furnizarea unei magistrale non-I2C genereazăValueError.addressAdresa 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_odrRata 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,800sau1200.gyro_scaleIntervalul la scară completă al giroscopului în grade pe secundă. Trebuie să fie una dintre valorile
125,250,500,1000sau2000.accel_odrRata de date de ieșire a accelerometrului în Hz. Același set de valori ca
gyro_odr.accel_scaleIntervalul la scară completă al accelerometrului în g. Trebuie să fie una dintre valorile
2,4,8sau16.bmm_magnetInstanță opțională
bmm150.BMM150. Când este furnizată, metodamagnet()deleagă către aceasta; în caz contrarmagnet()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 conformgyro_scale.