imu-data-read.py

Module d'IA AIWorld P1 pour BPI-M2 Ultra et Berry · Fichier : imu-data-read.py · Langage : python · Usage : Lire les données brutes de l'accéléromètre/gyroscope ICM20602 via I2C.

Script Python utilisant smbus pour interroger le capteur inertielle ICM20602 connecté via I2C.

Le capteur ICM20602 est sur le bus I2C 1 (vérifiez avec i2cdetect -y 1). Activez I2C via la configuration du noyau Vecoo. Ce script lit les données brutes ; une conversion en g ou dps nécessite la lecture des registres de sensibilité. Exécutez avec sudo python3 imu_read.py.

imu-data-read.py

import smbus
import time

# Adresse I2C typique de l'ICM20602 (0x68 ou 0x69 selon AD0)
I2C_BUS = 1
ICM_ADDR = 0x68

# Registres de base
WHO_AM_I = 0x75
ACCEL_XOUT_H = 0x3B
GYRO_XOUT_H = 0x43

try:
    bus = smbus.SMBus(I2C_BUS)
except OSError:
    print("Erreur: Impossible d'ouvrir le bus I2C. Vérifiez le module i2c-dev.")
    exit(1)

# Vérification de la présence du capteur
who_am_i = bus.read_byte_data(ICM_ADDR, WHO_AM_I)
print(f"ID Capteur (WHO_AM_I): 0x{who_am_i:02X}")

# Lecture des données d'accélération (X, Y, Z)
# Nécessite souvent une configuration initiale des registres de contrôle
accel_x = bus.read_word_data(ICM_ADDR, ACCEL_XOUT_H) >> 8
accel_y = bus.read_word_data(ICM_ADDR, ACCEL_YOUT_H) >> 8
accel_z = bus.read_word_data(ICM_ADDR, ACCEL_ZOUT_H) >> 8

print(f"Accélération: X={accel_x}, Y={accel_y}, Z={accel_z}")

← Retour à la fiche