imu --- helper IMU untuk Arduino Nano 33 BLE Sense

Catatan

Halaman ini mendokumentasikan modul Python imu pada Arduino Nano 33 BLE Sense (pembungkus tipis di atas driver IMU on-board). Untuk modul imu level-C OpenMV yang dikirimkan pada papan kamera OPENMV_N6, OPENMV_RT1060, dan OPENMV_AE3, lihat imu --- sensor imu.

Modul ini adalah pembungkus tipis yang spesifik papan yang mengekspos unit pengukuran inersia on-board pada Arduino Nano 33 BLE Sense sebagai satu objek IMU. Kedua revisi hardware papan ditangani secara transparan:

  • Rev 1 menggunakan IMU 9-sumbu LSM9DS1 tunggal.

  • Rev 2 menggabungkan Bosch BMI270 (akselerometer + giroskop) dengan magnetometer Bosch BMM150.

Konstruktor memeriksa bus I2C untuk alamat BMI270 (0x68) dan memilih driver yang sesuai secara otomatis, sehingga kode pengguna dapat ditulis sekali dan dijalankan pada kedua revisi.

Contoh:

import time
import imu
from machine import Pin, I2C

bus = I2C(1, scl=Pin("P15"), sda=Pin("P14"))
sensor = imu.IMU(bus)

while True:
    print('Accelerometer: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}'.format(*sensor.accel()))
    print('Gyroscope:     x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}'.format(*sensor.gyro()))
    print('Magnetometer:  x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}'.format(*sensor.magnet()))
    print("")
    time.sleep_ms(100)

class IMU

class imu.IMU(bus: 'machine.I2C')

Buat objek IMU yang terikat pada bus I2C.

  • bus adalah instance machine.I2C yang telah diinisialisasi dan terhubung ke IMU on-board.

Saat konstruksi, bus dipindai: jika perangkat merespons pada alamat 0x68, pasangan BMI270 dan BMM150 diinstansiasi (Nano 33 BLE Sense Rev 2), jika tidak maka LSM9DS1 diinstansiasi (Rev 1). Driver yang mendasarinya disimpan pada atribut imu dan dikonfigurasi dengan rentang dan laju data keluaran default.

accel() tuple[float, float, float]

Kembalikan pembacaan akselerometer terbaru sebagai tuple (x, y, z) dalam satuan g (gravitasi standar).

gyro() tuple[float, float, float]

Kembalikan pembacaan giroskop terbaru sebagai tuple (x, y, z) dalam derajat per detik.

magnet() tuple[float, float, float]

Kembalikan pembacaan magnetometer terbaru sebagai tuple (x, y, z) dalam micro-tesla (uT).