bmi270 — BMI270 6osá IMU

Ovladač pro nízkopříkonovou 6osou inerciální měřicí jednotku Bosch BMI270 (3osý akcelerometr plus 3osý gyroskop) přes I2C. Ovladač při vytvoření instance provede kompletní inicializační sekvenci BMI270 — softwarový reset, vypnutí úsporného režimu, nahrání konfiguračního bloku a ověření stavu — a teprve poté nastaví požadované výstupní datové rychlosti a rozsahy plné stupnice.

Třídu lze volitelně propojit s externí instancí magnetometru bmm150.BMM150, takže volající mohou s dvojicí BMI270 + BMM150 zacházet jako s jediným 9osým zařízením prostřednictvím metody magnet().

Poznámka

Tento ovladač nepodporuje režim SPI; předání sběrnice, která není I2C, vyvolá ValueError.

Příklad:

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)

Třídy

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)

Vytvoří instanci BMI270 a spustí kompletní inicializační sekvenci s nahráním konfigurace. Vyvolá OSError, pokud ID čipu neodpovídá nebo pokud sekvence nahrávání selže.

bus

Nakonfigurovaná sběrnice machine.I2C, ke které je senzor připojen.

cs

Vyhrazeno pro režim SPI. Musí zůstat jako None; SPI není v současnosti implementováno a předání sběrnice, která není I2C, vyvolá ValueError.

address

7bitová I2C adresa zařízení. Výchozí hodnota je 0x68; některé desky propojují pin SDO na vysokou úroveň, čímž se zvolí 0x69.

gyro_odr

Výstupní datová rychlost gyroskopu v Hz. Musí být jedna z hodnot 0.78, 1.5, 3.1, 6.25, 12.5, 25, 50, 100, 200, 400, 800 nebo 1200.

gyro_scale

Rozsah plné stupnice gyroskopu ve stupních za sekundu. Musí být jedna z hodnot 125, 250, 500, 1000 nebo 2000.

accel_odr

Výstupní datová rychlost akcelerometru v Hz. Stejná sada hodnot jako gyro_odr.

accel_scale

Rozsah plné stupnice akcelerometru v g. Musí být jedna z hodnot 2, 4, 8 nebo 16.

bmm_magnet

Volitelná instance bmm150.BMM150. Pokud je poskytnuta, metoda magnet() na ni deleguje; jinak magnet() vrací nuly.

reset() None

Vyšle příkaz softwarového resetu BMI270. Po jeho zavolání musí být zařízení před dalším použitím znovu inicializováno.

gyro() tuple[float, float, float]

Vrátí vektor gyroskopu (x, y, z) ve stupních za sekundu, škálovaný podle gyro_scale.

accel() tuple[float, float, float]

Vrátí vektor zrychlení (x, y, z) v jednotkách standardní gravitace (1 g = 9.81 m/s²), škálovaný podle accel_scale.

magnet() tuple[float, float, float]

Pokud byl při vytvoření instance poskytnut bmm_magnet, vrátí poslední údaj z tohoto magnetometru. Jinak vrátí (0.0, 0.0, 0.0).