bmm150 --- BMM150 3-axis magnetometer

Driver untuk sensor geomagnetik 3-sumbu Bosch BMM150 melalui I2C. Saat konstruksi, driver melakukan soft-reset perangkat, mengalihkannya ke mode operasi normal pada ODR yang diminta, dan membaca register trim yang digunakan oleh persamaan kompensasi Bosch untuk mengonversi pembacaan mentah menjadi nilai medan magnet yang terkalibrasi.

Catatan

Mode SPI tidak didukung oleh driver ini; memberikan bus non-I2C akan memunculkan ValueError.

Contoh:

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)

Kelas

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

Buat instans BMM150, soft-reset chip, verifikasi ID chip-nya, konfigurasikan untuk mode normal pada magnet_odr Hz dan baca register trim pabrik.

bus

Bus machine.I2C yang telah dikonfigurasi tempat sensor terpasang.

cs

Dicadangkan untuk mode SPI. Harus dibiarkan sebagai None; SPI saat ini belum diimplementasikan dan memberikan bus non-I2C akan memunculkan ValueError.

address

Alamat I2C 7-bit perangkat. Defaultnya adalah 0x10.

magnet_odr

Laju data keluaran magnetometer dalam Hz. Harus salah satu dari 2, 6, 8, 10, 15, 20, 25 atau 30; nilai lainnya akan memunculkan ValueError.

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

Polling flag siap-data dan kembalikan pembacaan mentah bertanda (x, y, z, hall) sebagai bilangan bulat, dengan bit sub-LSB yang sudah digeser keluar. Memunculkan OSError("Data not ready") jika tidak ada sampel yang tersedia dalam sepuluh percobaan ulang.

magnet() tuple[float, float, float]

Baca sampel baru melalui magnet_raw() dan kembalikan vektor medan magnet yang telah dikompensasi (x, y, z). Kompensasi menggunakan nilai trim yang dibaca saat konstruksi dan cocok dengan driver C referensi yang disediakan oleh Bosch.