imu — IMU-Hilfsmodul für das Arduino Nano 33 BLE Sense¶
Bemerkung
Diese Seite dokumentiert das Python-imu-Modul des Arduino Nano 33 BLE Sense (ein kleiner Wrapper um die On-Board-IMU-Treiber). Für das OpenMV-imu-Modul auf C-Ebene, das mit den Kameraboards OPENMV_N6, OPENMV_RT1060 und OPENMV_AE3 ausgeliefert wird, siehe imu — IMU-Sensor.
Dieses Modul ist ein dünner boardspezifischer Wrapper, der die On-Board-Trägheitsmesseinheit des Arduino Nano 33 BLE Sense als einzelnes IMU-Objekt bereitstellt. Beide Hardware-Revisionen des Boards werden transparent behandelt:
Rev 1 verwendet eine einzelne 9-Achsen-IMU LSM9DS1.
Rev 2 kombiniert einen Bosch BMI270 (Beschleunigungsmesser + Gyroskop) mit einem Magnetometer Bosch BMM150.
Der Konstruktor tastet den I2C-Bus nach der BMI270-Adresse (0x68) ab und wählt automatisch den passenden Treiber aus, sodass Benutzercode einmal geschrieben und auf beiden Revisionen ausgeführt werden kann.
Beispiel:
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')¶
Erstellt ein IMU-Objekt, das an einen I2C-Bus gebunden ist.
bus ist eine initialisierte
machine.I2C-Instanz, die mit den On-Board-IMU(s) verbunden ist.
Beim Erstellen wird der Bus gescannt: Antwortet ein Gerät an der Adresse
0x68, wird ein Paar ausBMI270undBMM150instanziiert (Nano 33 BLE Sense Rev 2), andernfalls wird einLSM9DS1instanziiert (Rev 1). Der zugrunde liegende Treiber wird im Attributimugehalten und mit den Standardbereichen und Ausgabedatenraten konfiguriert.- accel() tuple[float, float, float]¶
Gibt die letzte Messung des Beschleunigungsmessers als
(x, y, z)-Tupel in Einheiten von g (Standard-Erdbeschleunigung) zurück.