imu — IMU-hjälpmodul för Arduino Nano 33 BLE Sense

Anteckning

Den här sidan dokumenterar Python-modulen imu för Arduino Nano 33 BLE Sense (ett litet omslag kring de inbyggda IMU-drivrutinerna). För OpenMV:s C-nivåmodul imu som levereras med kameramodellerna OPENMV_N6, OPENMV_RT1060 och OPENMV_AE3, se imu — imu-sensor.

Den här modulen är ett tunt kortspecifikt omslag som exponerar den inbyggda tröghetsmätningsenheten (IMU) på Arduino Nano 33 BLE Sense som ett enda IMU-objekt. Båda hårdvarurevisionerna av kortet hanteras transparent:

  • Rev 1 använder en enda LSM9DS1 9-axlig IMU.

  • Rev 2 kombinerar en Bosch BMI270 (accelerometer + gyroskop) med en Bosch BMM150-magnetometer.

Konstruktorn söker på I2C-bussen efter BMI270-adressen (0x68) och väljer den matchande drivrutinen automatiskt, så att användarkod kan skrivas en gång och köras på båda revisionerna.

Exempel:

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

Konstruera ett IMU-objekt bundet till en I2C-buss.

  • bus är en initierad machine.I2C-instans ansluten till de inbyggda IMU-enheterna.

Vid konstruktion skannas bussen: om en enhet svarar på adressen 0x68 instansieras ett par bestående av BMI270 och BMM150 (Nano 33 BLE Sense Rev 2), annars instansieras en LSM9DS1 (Rev 1). Den underliggande drivrutinen behålls i attributet imu och konfigureras med standardomfång och utdatahastigheter.

accel() tuple[float, float, float]

Returnera den senaste accelerometeravläsningen som en (x, y, z)-tupel i enheten g (standardtyngdaccelerationer).

gyro() tuple[float, float, float]

Returnera den senaste gyroskopavläsningen som en (x, y, z)-tupel i grader per sekund.

magnet() tuple[float, float, float]

Returnera den senaste magnetometeravläsningen som en (x, y, z)-tupel i mikrotesla (uT).