imu-data-read.py

AIWorld P1 AI Module for BPI-M2 Ultra and Berry · File : imu-data-read.py · Language : python · Use case : Lire les données brutes de l'accéléromètre/gyroscope ICM20602 via I2C.

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}")

← Back to the board