bmi270 — BMI270 6-osna IMU

Upravljački program za Bosch BMI270 6-osnu inercijsku mjernu jedinicu niske potrošnje (3-osni akcelerometar i 3-osni žiroskop) putem I2C. Upravljački program pri stvaranju izvodi potpunu inicijalizacijsku sekvencu BMI270 — meki reset, onemogućavanje načina uštede energije, učitavanje konfiguracijskog bloba i provjeru statusa — prije postavljanja traženih brzina izlaznih podataka i punih raspona mjerenja.

Klasa se opcionalno može povezati s vanjskom instancom magnetometra bmm150.BMM150 tako da pozivatelji mogu tretirati par BMI270 + BMM150 kao jedan 9-osni uređaj putem metode magnet().

Napomena

Ovaj upravljački program ne podržava SPI način rada; prosljeđivanje sabirnice koja nije I2C izaziva ValueError.

Primjer:

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)

Klase

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)

Stvara instancu BMI270 i pokreće potpunu inicijalizacijsku sekvencu s učitavanjem konfiguracije. Izaziva OSError ako se ID čipa ne podudara ili ako sekvenca učitavanja ne uspije.

bus

Konfigurirana machine.I2C sabirnica na koju je senzor priključen.

cs

Rezervirano za SPI način rada. Mora ostati None; SPI trenutno nije implementiran, a navođenje sabirnice koja nije I2C izaziva ValueError.

address

7-bitna I2C adresa uređaja. Zadana vrijednost je 0x68; neke ploče postavljaju SDO pin na visoku razinu, čime se odabire 0x69.

gyro_odr

Brzina izlaznih podataka žiroskopa u Hz. Mora biti jedna od 0.78, 1.5, 3.1, 6.25, 12.5, 25, 50, 100, 200, 400, 800 ili 1200.

gyro_scale

Puni raspon mjerenja žiroskopa u stupnjevima u sekundi. Mora biti jedan od 125, 250, 500, 1000 ili 2000.

accel_odr

Brzina izlaznih podataka akcelerometra u Hz. Isti skup vrijednosti kao gyro_odr.

accel_scale

Puni raspon mjerenja akcelerometra u g. Mora biti jedan od 2, 4, 8 ili 16.

bmm_magnet

Opcionalna instanca bmm150.BMM150. Kada je navedena, metoda magnet() delegira poziv na nju; u suprotnom magnet() vraća nule.

reset() None

Izdaje BMI270 naredbu za meki reset. Nakon poziva ove naredbe uređaj se mora ponovno inicijalizirati prije daljnje upotrebe.

gyro() tuple[float, float, float]

Vraća vektor žiroskopa (x, y, z) u stupnjevima u sekundi, skaliran prema gyro_scale.

accel() tuple[float, float, float]

Vraća vektor ubrzanja (x, y, z) u jedinicama standardne gravitacije (1 g = 9.81 m/s²), skaliran prema accel_scale.

magnet() tuple[float, float, float]

Ako je pri stvaranju naveden bmm_magnet, vraća najnovije očitanje magnetometra s tog uređaja. U suprotnom vraća (0.0, 0.0, 0.0).