bmm150 — Magnétomètre 3 axes BMM150

Pilote pour le capteur géomagnétique 3 axes Bosch BMM150 via I2C. Lors de la construction, le pilote réinitialise le périphérique par logiciel, le bascule en mode de fonctionnement normal au débit ODR demandé et lit les registres de réglage utilisés par les équations de compensation Bosch pour convertir les mesures brutes en valeurs de champ magnétique calibrées.

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 bmm150 import BMM150

imu = BMM150(I2C(1, scl=Pin("P15"), sda=Pin("P14")))

while True:
    print("magnetometer: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*imu.magnet()))
    time.sleep_ms(100)

Classes

class bmm150.BMM150(bus: machine.I2C, cs: machine.Pin | None = None, address: int = 0x10, magnet_odr: int = 30)

Construit une instance BMM150, réinitialise la puce par logiciel, vérifie son identifiant de puce, la configure en mode normal à magnet_odr Hz et lit les registres de réglage d’usine.

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 0x10 par défaut.

magnet_odr

Débit de données de sortie du magnétomètre en Hz. Doit être l’une des valeurs 2, 6, 8, 10, 15, 20, 25 ou 30 ; toute autre valeur lève une erreur ValueError.

magnet_raw() tuple[int, int, int, int]

Interroge l’indicateur de disponibilité des données et renvoie les mesures brutes signées (x, y, z, hall) sous forme d’entiers, les bits inférieurs au LSB ayant déjà été décalés. Lève une erreur OSError("Data not ready") si aucun échantillon ne devient disponible au bout de dix tentatives.

magnet() tuple[float, float, float]

Lit un nouvel échantillon via magnet_raw() et renvoie le vecteur de champ magnétique compensé (x, y, z). La compensation utilise les valeurs de réglage lues lors de la construction et correspond au pilote C de référence fourni par Bosch.