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ę
BMI270i uruchamia pełną sekwencję inicjalizacji z wczytaniem konfiguracji. ZgłaszaOSError, jeśli identyfikator układu nie pasuje lub jeśli sekwencja wczytywania zakończy się niepowodzeniem.busSkonfigurowana magistrala
machine.I2C, do której podłączony jest sensor.csZarezerwowane dla trybu SPI. Musi pozostać ustawione na
None; SPI nie jest obecnie zaimplementowane, a podanie magistrali innej niż I2C powoduje zgłoszenieValueError.address7-bitowy adres I2C urządzenia. Domyślnie
0x68; niektóre płytki podciągają pin SDO do stanu wysokiego, co wybiera0x69.gyro_odrCzę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,800lub1200.gyro_scaleZakres pełnej skali żyroskopu w stopniach na sekundę. Musi być jedną z wartości
125,250,500,1000lub2000.accel_odrCzęstotliwość danych wyjściowych akcelerometru w Hz. Ten sam zestaw wartości co
gyro_odr.accel_scaleZakres pełnej skali akcelerometru w g. Musi być jedną z wartości
2,4,8lub16.bmm_magnetOpcjonalna instancja
bmm150.BMM150. Gdy jest podana, metodamagnet()deleguje do niej wywołanie; w przeciwnym raziemagnet()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 zgyro_scale.