🛠 Capteurs Grove sur le bus I2C 1 et inventaire du bus
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
- Una placa BeaglePlay
- Uno o varios sensores Grove I2C (BME680, SHT3x, OLED 0x3C...)
- Cable Grove de 4 hilos macho/hembra
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
- Confundir el bus Grove (1) y el bus Qwiic (5): un sensor invisible en uno suele estar en el otro.
- Olvidar
-feni2cgetcuando el kernel ya tiene un driver asociado a la dirección. - Dos módulos Grove idénticos en paralelo: misma dirección fija, el segundo nunca aparece; utilizar una variante direccionable.
- Interpretar un
UUen la tabla como un fallo: esto significa simplemente que un driver del kernel ya ocupa el dispositivo. - Conectar un módulo Grove en SPI/UART al conector I2C: el bus no verá nada, verificar el cableado del cable.
Otros tutoriales para esta placa
- 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
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash