imu — Arduino Nano 33 BLE Sense için IMU yardımcısı

Not

Bu sayfa, Arduino Nano 33 BLE Sense’in Python imu modülünü (yerleşik IMU sürücüleri etrafındaki küçük bir sarmalayıcı) belgelendirir. OPENMV_N6, OPENMV_RT1060 ve OPENMV_AE3 kamera kartlarında bulunan OpenMV C düzeyindeki imu modülü için bkz. imu — imu sensörü.

Bu modül, Arduino Nano 33 BLE Sense’in yerleşik atalet ölçüm birimini tek bir IMU nesnesi olarak sunan, karta özgü ince bir sarmalayıcıdır. Kartın her iki donanım revizyonu da saydam biçimde ele alınır:

  • Rev 1 tek bir LSM9DS1 9 eksenli IMU kullanır.

  • Rev 2 bir Bosch BMI270 (ivmeölçer + jiroskop) ile bir Bosch BMM150 manyetometreyi birleştirir.

Yapıcı, BMI270 adresi (0x68) için I2C veri yolunu yoklar ve eşleşen sürücüyü otomatik olarak seçer; böylece kullanıcı kodu bir kez yazılıp her iki revizyonda da çalıştırılabilir.

Örnek:

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

Bir I2C veri yoluna bağlı bir IMU nesnesi oluşturur.

  • bus, yerleşik IMU’lara/IMU’ya bağlı, başlatılmış bir machine.I2C örneğidir.

Oluşturma sırasında veri yolu taranır: 0x68 adresinde bir cihaz yanıt verirse bir BMI270 ve BMM150 çifti örneklenir (Nano 33 BLE Sense Rev 2), aksi takdirde bir LSM9DS1 örneklenir (Rev 1). Temeldeki sürücü imu özniteliğinde tutulur ve varsayılan aralıklar ile çıkış veri hızlarıyla yapılandırılır.

accel() tuple[float, float, float]

En son ivmeölçer okumasını g (standart yerçekimi) birimleri cinsinden bir (x, y, z) demeti olarak döndürür.

gyro() tuple[float, float, float]

En son jiroskop okumasını saniye başına derece cinsinden bir (x, y, z) demeti olarak döndürür.

magnet() tuple[float, float, float]

En son manyetometre okumasını mikro-tesla (uT) cinsinden bir (x, y, z) demeti olarak döndürür.