bmi270 — 6-osiowa jednostka IMU BMI270

Sterownik dla niskoenergetycznej, 6-osiowej inercyjnej jednostki pomiarowej Bosch BMI270 (3-osiowy akcelerometr oraz 3-osiowy żyroskop) komunikującej się przez I2C. Podczas tworzenia obiektu sterownik wykonuje pełną sekwencję inicjalizacji BMI270 — miękki reset, wyłączenie trybu oszczędzania energii, przesłanie bloku konfiguracyjnego oraz weryfikację statusu — a następnie konfiguruje żądane częstotliwości danych wyjściowych oraz zakresy pełnej skali.

Klasa może opcjonalnie zostać powiązana z zewnętrzną instancją magnetometru bmm150.BMM150, dzięki czemu wywołujący mogą traktować parę BMI270 + BMM150 jako pojedyncze urządzenie 9-osiowe za pośrednictwem metody magnet().

Informacja

Tryb SPI nie jest obsługiwany przez ten sterownik; przekazanie magistrali innej niż I2C powoduje zgłoszenie ValueError.

Przykład:

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)

Klasy

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)

Tworzy instancję BMI270 i uruchamia pełną sekwencję inicjalizacji z wczytaniem konfiguracji. Zgłasza OSError, jeśli identyfikator układu nie pasuje lub jeśli sekwencja wczytywania zakończy się niepowodzeniem.

bus

Skonfigurowana magistrala machine.I2C, do której podłączony jest sensor.

cs

Zarezerwowane dla trybu SPI. Musi pozostać ustawione na None; SPI nie jest obecnie zaimplementowane, a podanie magistrali innej niż I2C powoduje zgłoszenie ValueError.

address

7-bitowy adres I2C urządzenia. Domyślnie 0x68; niektóre płytki podciągają pin SDO do stanu wysokiego, co wybiera 0x69.

gyro_odr

Częstotliwość danych wyjściowych żyroskopu w Hz. Musi być jedną z wartości 0.78, 1.5, 3.1, 6.25, 12.5, 25, 50, 100, 200, 400, 800 lub 1200.

gyro_scale

Zakres pełnej skali żyroskopu w stopniach na sekundę. Musi być jedną z wartości 125, 250, 500, 1000 lub 2000.

accel_odr

Częstotliwość danych wyjściowych akcelerometru w Hz. Ten sam zestaw wartości co gyro_odr.

accel_scale

Zakres pełnej skali akcelerometru w g. Musi być jedną z wartości 2, 4, 8 lub 16.

bmm_magnet

Opcjonalna instancja bmm150.BMM150. Gdy jest podana, metoda magnet() deleguje do niej wywołanie; w przeciwnym razie magnet() zwraca zera.

reset() None

Wydaje polecenie miękkiego resetu BMI270. Po jego wywołaniu urządzenie musi zostać ponownie zainicjalizowane przed dalszym użyciem.

gyro() tuple[float, float, float]

Zwraca wektor żyroskopu (x, y, z) w stopniach na sekundę, przeskalowany zgodnie z gyro_scale.

accel() tuple[float, float, float]

Zwraca wektor przyspieszenia (x, y, z) w jednostkach standardowego przyspieszenia ziemskiego (1 g = 9.81 m/s²), przeskalowany zgodnie z accel_scale.

magnet() tuple[float, float, float]

Jeśli podczas tworzenia obiektu podano bmm_magnet, zwraca najnowszy odczyt magnetometru z tego urządzenia. W przeciwnym razie zwraca (0.0, 0.0, 0.0).