🛠 Capteurs Grove sur le bus I2C 1 et inventaire du bus
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
- Une carte BeaglePlay
- Un ou plusieurs capteurs Grove I2C (BME680, SHT3x, OLED 0x3C...)
- Câble Grove 4 fils mâche/femelle
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
- Confondre bus Grove (1) et bus Qwiic (5) : un capteur invisible sur l'un est souvent sur l'autre.
- Oublier
-fsuri2cgetquand le noyau a déjà un driver accroché à l'adresse. - Deux modules Grove identiques en parallèle : même adresse fixe, le second n'apparaît jamais ; prendre une variante adressable.
- Interpréter un
UUdans la grille comme une panne : cela signifie juste qu'un driver kernel occupe déjà le périphérique. - Câbler un module Grove en SPI/UART sur le connecteur I2C : le bus ne verra rien, vérifier le brochage du câble.
Autres tutoriels pour cette carte
- Flasher l'image Debian sur la microSD puis l'eMMC 16 Go
- LED et bouton USER : triggers kernel et gpio-keys
- OLED Qwiic sur le bus I2C 5 (mcu_i2c0)
- Double Ethernet : GbE RTL8211F et 10BASE-T1L sur RJ11
- Caméra CSI OV5640 via fdtoverlays dans extlinux.conf
- Reflasher le CC1352P7 en BSL depuis le processeur hôte
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash