bmm150 — Magnetometro a 3 assi BMM150

Driver per il sensore geomagnetico a 3 assi Bosch BMM150 tramite I2C. Alla costruzione il driver esegue un soft reset del dispositivo, lo commuta in modalità di funzionamento normale all’ODR richiesto e legge i registri di trim utilizzati dalle equazioni di compensazione Bosch per convertire le letture grezze in valori di campo magnetico calibrati.

Nota

La modalità SPI non è supportata da questo driver; passare un bus non I2C solleva ValueError.

Esempio:

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)

Classi

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

Costruisce un’istanza BMM150, esegue il soft reset del chip, ne verifica l’ID, lo configura in modalità normale a magnet_odr Hz e legge i registri di trim di fabbrica.

bus

Un bus machine.I2C configurato a cui è collegato il sensore.

cs

Riservato per la modalità SPI. Deve essere lasciato a None; la SPI non è attualmente implementata e fornire un bus non I2C solleva ValueError.

address

Indirizzo I2C a 7 bit del dispositivo. Il valore predefinito è 0x10.

magnet_odr

Frequenza di output dei dati del magnetometro in Hz. Deve essere uno tra 2, 6, 8, 10, 15, 20, 25 o 30; qualsiasi altro valore solleva ValueError.

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

Interroga il flag di dati pronti e restituisce le letture grezze con segno (x, y, z, hall) come interi, con i bit sub-LSB già scartati. Solleva OSError("Data not ready") se non diventa disponibile alcun campione entro dieci tentativi.

magnet() tuple[float, float, float]

Legge un nuovo campione tramite magnet_raw() e restituisce il vettore di campo magnetico compensato (x, y, z). La compensazione utilizza i valori di trim letti alla costruzione e corrisponde al driver C di riferimento fornito da Bosch.