imu — ajutor IMU pentru Arduino Nano 33 BLE Sense

Notă

Această pagină documentează modulul Python imu al plăcii Arduino Nano 33 BLE Sense (un mic înveliș în jurul driverelor IMU integrate). Pentru modulul imu de nivel C al OpenMV care este livrat pe plăcile de cameră OPENMV_N6, OPENMV_RT1060 și OPENMV_AE3, consultați imu — senzor imu.

Acest modul este un înveliș subțire specific plăcii care expune unitatea de măsurare inerțială integrată a plăcii Arduino Nano 33 BLE Sense ca un singur obiect IMU. Ambele revizii hardware ale plăcii sunt gestionate transparent:

  • Rev 1 folosește un singur IMU LSM9DS1 cu 9 axe.

  • Rev 2 combină un Bosch BMI270 (accelerometru + giroscop) cu un magnetometru Bosch BMM150.

Constructorul sondează magistrala I2C pentru adresa BMI270 (0x68) și selectează automat driverul corespunzător, astfel încât codul utilizatorului poate fi scris o singură dată și rulat pe oricare dintre revizii.

Exemplu:

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')

Construiește un obiect IMU legat de o magistrală I2C.

  • bus este o instanță machine.I2C inițializată conectată la IMU-ul (IMU-urile) integrat(e).

La construire, magistrala este scanată: dacă un dispozitiv răspunde la adresa 0x68, este instanțiată o pereche BMI270 plus BMM150 (Nano 33 BLE Sense Rev 2), în caz contrar este instanțiat un LSM9DS1 (Rev 1). Driverul subiacent este păstrat în atributul imu și configurat cu intervale și rate de ieșire a datelor implicite.

accel() tuple[float, float, float]

Returnează cea mai recentă citire a accelerometrului ca un tuplu (x, y, z) în unități de g (accelerații gravitaționale standard).

gyro() tuple[float, float, float]

Returnează cea mai recentă citire a giroscopului ca un tuplu (x, y, z) în grade pe secundă.

magnet() tuple[float, float, float]

Returnează cea mai recentă citire a magnetometrului ca un tuplu (x, y, z) în micro-tesla (uT).