imu — asistente de IMU para la Arduino Nano 33 BLE Sense

Nota

Esta página documenta el módulo imu de Python de la Arduino Nano 33 BLE Sense (un pequeño contenedor alrededor de los controladores de IMU integrados). Para el módulo imu a nivel de C de OpenMV que se incluye en las placas de cámara OPENMV_N6, OPENMV_RT1060 y OPENMV_AE3, consulte imu — sensor imu.

Este módulo es un contenedor ligero específico de la placa que expone la unidad de medición inercial integrada de la Arduino Nano 33 BLE Sense como un único objeto IMU. Ambas revisiones de hardware de la placa se gestionan de forma transparente:

  • La Rev 1 utiliza una única IMU LSM9DS1 de 9 ejes.

  • La Rev 2 combina un Bosch BMI270 (acelerómetro + giroscopio) con un magnetómetro Bosch BMM150.

El constructor sondea el bus I2C en busca de la dirección del BMI270 (0x68) y selecciona automáticamente el controlador correspondiente, de modo que el código de usuario se puede escribir una sola vez y ejecutar en cualquiera de las dos revisiones.

Ejemplo:

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

Construye un objeto IMU vinculado a un bus I2C.

  • bus es una instancia inicializada de machine.I2C conectada a la(s) IMU integrada(s).

Durante la construcción se escanea el bus: si un dispositivo responde en la dirección 0x68 se instancia un par BMI270 más BMM150 (Nano 33 BLE Sense Rev 2), de lo contrario se instancia un LSM9DS1 (Rev 1). El controlador subyacente se mantiene en el atributo imu y se configura con rangos y tasas de datos de salida predeterminados.

accel() tuple[float, float, float]

Devuelve la última lectura del acelerómetro como una tupla (x, y, z) en unidades de g (gravedades estándar).

gyro() tuple[float, float, float]

Devuelve la última lectura del giroscopio como una tupla (x, y, z) en grados por segundo.

magnet() tuple[float, float, float]

Devuelve la última lectura del magnetómetro como una tupla (x, y, z) en microteslas (uT).