bmm150 — Magnetometru pe 3 axe BMM150

Driver pentru senzorul geomagnetic pe 3 axe Bosch BMM150 prin I2C. La construire, driverul resetează software dispozitivul, îl comută în modul normal de funcționare la ODR-ul solicitat și citește registrele de calibrare (trim) utilizate de ecuațiile de compensare Bosch pentru a converti citirile brute în valori calibrate ale câmpului magnetic.

Notă

Modul SPI nu este acceptat de acest driver; transmiterea unei magistrale non-I2C generează ValueError.

Exemplu:

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)

Clase

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

Construiește o instanță BMM150, resetează software cipul, verifică ID-ul cipului, îl configurează pentru modul normal la magnet_odr Hz și citește registrele de calibrare din fabrică.

bus

O magistrală machine.I2C configurată la care este atașat senzorul.

cs

Rezervat pentru modul SPI. Trebuie lăsat ca None; SPI nu este implementat în prezent, iar furnizarea unei magistrale non-I2C generează ValueError.

address

Adresa I2C pe 7 biți a dispozitivului. Valoarea implicită este 0x10.

magnet_odr

Rata de date de ieșire a magnetometrului în Hz. Trebuie să fie una dintre valorile 2, 6, 8, 10, 15, 20, 25 sau 30; orice altceva generează ValueError.

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

Interoghează indicatorul de date pregătite și returnează citirile brute cu semn (x, y, z, hall) ca numere întregi, cu biții sub-LSB deja deplasați în afară. Generează OSError("Data not ready") dacă nu devine disponibilă nicio mostră în zece încercări.

magnet() tuple[float, float, float]

Citește o mostră nouă prin magnet_raw() și returnează vectorul compensat al câmpului magnetic (x, y, z). Compensarea utilizează valorile de calibrare citite la construire și corespunde driverului C de referință furnizat de Bosch.