imu — Helper IMU per l’Arduino Nano 33 BLE Sense

Nota

Questa pagina documenta il modulo Python imu dell’Arduino Nano 33 BLE Sense (un piccolo wrapper attorno ai driver IMU integrati). Per il modulo imu di livello C di OpenMV fornito sulle schede camera OPENMV_N6, OPENMV_RT1060 e OPENMV_AE3, vedere imu — sensore imu.

Questo modulo è un sottile wrapper specifico per la scheda che espone l’unità di misura inerziale integrata dell’Arduino Nano 33 BLE Sense come un singolo oggetto IMU. Entrambe le revisioni hardware della scheda sono gestite in modo trasparente:

  • La Rev 1 utilizza un singolo IMU a 9 assi LSM9DS1.

  • La Rev 2 combina un Bosch BMI270 (accelerometro + giroscopio) con un magnetometro Bosch BMM150.

Il costruttore sonda il bus I2C alla ricerca dell’indirizzo del BMI270 (0x68) e seleziona automaticamente il driver corrispondente, in modo che il codice utente possa essere scritto una sola volta ed eseguito su entrambe le revisioni.

Esempio:

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

Costruisce un oggetto IMU associato a un bus I2C.

  • bus è un’istanza machine.I2C inizializzata collegata agli IMU integrati.

Durante la costruzione il bus viene scansionato: se un dispositivo risponde all’indirizzo 0x68 viene istanziata una coppia BMI270 più BMM150 (Nano 33 BLE Sense Rev 2), altrimenti viene istanziato un LSM9DS1 (Rev 1). Il driver sottostante viene mantenuto nell’attributo imu e configurato con intervalli e frequenze dei dati in uscita predefiniti.

accel() tuple[float, float, float]

Restituisce l’ultima lettura dell’accelerometro come tupla (x, y, z) in unità di g (gravità standard).

gyro() tuple[float, float, float]

Restituisce l’ultima lettura del giroscopio come tupla (x, y, z) in gradi al secondo.

magnet() tuple[float, float, float]

Restituisce l’ultima lettura del magnetometro come tupla (x, y, z) in micro-tesla (uT).