imu-data-read.py
Python script using smbus to query the ICM20602 inertial sensor connected via I2C.
The ICM20602 sensor is on I2C bus 1 (check with i2cdetect -y 1). Enable I2C via Vecoo kernel configuration. This script reads raw data; conversion to g or dps requires reading sensitivity registers. Run with 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}")