bmi270 — Centrale inertielle 6 axes BMI270

Pilote pour la centrale inertielle 6 axes basse consommation Bosch BMI270 (accéléromètre 3 axes et gyroscope 3 axes) via I2C. Le pilote exécute la séquence complète d’initialisation du BMI270 lors de la construction — réinitialisation logicielle, désactivation du mode d’économie d’énergie, téléversement du blob de configuration et vérification de l’état — avant de configurer les débits de données de sortie et les plages pleine échelle demandés.

La classe peut éventuellement être reliée à une instance externe de magnétomètre bmm150.BMM150 afin que les appelants puissent traiter une paire BMI270 + BMM150 comme un seul périphérique 9 axes via la méthode magnet().

Note

Le mode SPI n’est pas pris en charge par ce pilote ; fournir un bus autre qu’I2C lève une erreur ValueError.

Exemple

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)

Classes

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)

Construit une instance BMI270 et exécute la séquence complète d’initialisation avec chargement de la configuration. Lève une erreur OSError si l’identifiant de la puce ne correspond pas ou si la séquence de chargement échoue.

bus

Un bus machine.I2C configuré auquel le capteur est connecté.

cs

Réservé au mode SPI. Doit rester à None ; le SPI n’est pas actuellement implémenté et fournir un bus autre qu’I2C lève une erreur ValueError.

address

Adresse I2C 7 bits du périphérique. Vaut 0x68 par défaut ; certaines cartes câblent la broche SDO à l’état haut, ce qui sélectionne 0x69.

gyro_odr

Débit de données de sortie du gyroscope en Hz. Doit être l’une des valeurs 0.78, 1.5, 3.1, 6.25, 12.5, 25, 50, 100, 200, 400, 800 ou 1200.

gyro_scale

Plage pleine échelle du gyroscope en degrés par seconde. Doit être l’une des valeurs 125, 250, 500, 1000 ou 2000.

accel_odr

Débit de données de sortie de l’accéléromètre en Hz. Mêmes valeurs possibles que pour gyro_odr.

accel_scale

Plage pleine échelle de l’accéléromètre en g. Doit être l’une des valeurs 2, 4, 8 ou 16.

bmm_magnet

Instance bmm150.BMM150 facultative. Lorsqu’elle est fournie, la méthode magnet() la délègue ; sinon, magnet() renvoie des zéros.

reset() None

Émet la commande de réinitialisation logicielle du BMI270. Après cet appel, le périphérique doit être réinitialisé avant toute utilisation ultérieure.

gyro() tuple[float, float, float]

Renvoie le vecteur du gyroscope (x, y, z) en degrés par seconde, mis à l’échelle selon gyro_scale.

accel() tuple[float, float, float]

Renvoie le vecteur d’accélération (x, y, z) en unités de gravité standard (1 g = 9,81 m/s²), mis à l’échelle selon accel_scale.

magnet() tuple[float, float, float]

Si un bmm_magnet a été fourni lors de la construction, renvoie la dernière mesure du magnétomètre de ce périphérique. Sinon, renvoie (0.0, 0.0, 0.0).