🛠 Capteurs Grove sur le bus I2C 1 et inventaire du bus

BeaglePlay (TI Sitara AM6254 / AM625) · intermediaire · Schéma : IMG-beagleplay-intermediaire-1-grove-i2cdetect-i2c1.svg — Un capteur Grove I2C branché sur le connecteur Grove du bus I2C 1 du BeaglePlay, avec la grille i2cdetect affichant les adresses détectées

Objetivos

Utilizar los conectores Grove del BeaglePlay por el lado I2C: el conector Grove está conectado al bus I2C 1. Ponemos el bus en servicio, realizamos un inventario de las direcciones ocupadas con i2cdetect, y luego leemos un sensor Grove (por ejemplo, BME680 en 0x77 o BME280 en 0x76) mediante lectura bruta de registros, sin depender de una biblioteca del fabricante.

Material

Código completo

# Vérifier que le bus 1 (Grove) est actif
i2cdetect -l
sudo i2cdetect -y -r 1        # grille des adresses 0x08-0x77

# Lecture brute d'un registre (exemple : ID BME680 attendue 0x61)
sudo i2cget -f -y 1 0x77 0xD0

# Script d'inventaire automatique
for a in $(seq 8 119); do
  if sudo i2cget -f -y 1 $a 0x00 >/dev/null 2>&1; then
    printf "présent : 0x%02x\n" $a
  fi
done
# lecture SMBus simple (pip install smbus2)
import smbus2
bus = smbus2.SMBus(1)
print(hex(bus.read_byte_data(0x77, 0xD0)))

Verificación esperada

i2cdetect -l lista al menos los buses 1 (Grove) y 5 (Qwiic). Con un sensor conectado, i2cdetect -y -r 1 muestra su dirección (por ejemplo, 77); el script de inventario la recupera. i2cget sobre el registro de identificación devuelve el valor esperado según la hoja de datos (0x61 para BME680, 0x60 para BME280).

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales