🛠 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

Objectifs

Utiliser les connecteurs Grove du BeaglePlay côté I2C : le connecteur Grove est relié au bus I2C 1. On met le bus en service, on dresse l'inventaire des adresses occupées avec i2cdetect, puis on lit un capteur Grove (par exemple BME680 en 0x77 ou BME280 en 0x76) en lecture de registres brute, sans dépendre d'une bibliothèque constructeur.

Matériel

Code complet

# 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)))

Vérification attendue

i2cdetect -l liste au moins les bus 1 (Grove) et 5 (Qwiic). Avec un capteur branché, i2cdetect -y -r 1 affiche son adresse (par ex. 77) ; le script d'inventaire la reprend. i2cget sur le registre d'identification renvoie la valeur attendue par la datasheet (0x61 pour BME680, 0x60 pour BME280).

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels