imu — assistant IMU pour l’Arduino Nano 33 BLE Sense

Note

Cette page documente le module imu Python de l’Arduino Nano 33 BLE Sense (une petite surcouche autour des pilotes IMU embarqués). Pour le module imu de niveau C d’OpenMV fourni sur les cartes caméra OPENMV_N6, OPENMV_RT1060 et OPENMV_AE3, voir imu — capteur imu.

Ce module est une fine surcouche propre à la carte qui expose l’unité de mesure inertielle embarquée de l’Arduino Nano 33 BLE Sense sous la forme d’un unique objet IMU. Les deux révisions matérielles de la carte sont gérées de façon transparente :

  • La Rev 1 utilise un unique IMU 9 axes LSM9DS1.

  • La Rev 2 associe un Bosch BMI270 (accéléromètre + gyroscope) à un magnétomètre Bosch BMM150.

Le constructeur sonde le bus I2C à la recherche de l’adresse du BMI270 (0x68) et sélectionne automatiquement le pilote correspondant, de sorte que le code utilisateur peut être écrit une seule fois et fonctionner sur l’une ou l’autre révision.

Exemple

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

Construit un objet IMU lié à un bus I2C.

  • bus est une instance machine.I2C initialisée et connectée au(x) IMU embarqué(s).

Lors de la construction, le bus est analysé : si un périphérique répond à l’adresse 0x68, une paire BMI270 plus BMM150 est instanciée (Nano 33 BLE Sense Rev 2), sinon un LSM9DS1 est instancié (Rev 1). Le pilote sous-jacent est conservé dans l’attribut imu et configuré avec les plages et les débits de données en sortie par défaut.

accel() tuple[float, float, float]

Renvoie la dernière lecture de l’accéléromètre sous la forme d’un tuple (x, y, z) exprimé en g (gravités standard).

gyro() tuple[float, float, float]

Renvoie la dernière lecture du gyroscope sous la forme d’un tuple (x, y, z) en degrés par seconde.

magnet() tuple[float, float, float]

Renvoie la dernière lecture du magnétomètre sous la forme d’un tuple (x, y, z) en micro-teslas (uT).