capteur-i2c.sh
El reflejo Linux para cualquier sensor I2C: barrer el bus con i2cdetect, confirmar que el chip está y leer unos registros con i2cget. Salida directa en el terminal sin escribir una línea de código de aplicación.
Hardware necesario
Una BeagleBone Black (TI AM3358) con la imagen Debian oficial, alimentada a 5 V por mini-USB, con sus conectores P8/P9 a 3,3 V (¡nunca 5 V en los pines!). 1 sensor I2C (BMP280, MPU6050, SSD1306...) — alimentar a 3,3 V.
Cableado
SDA/SCL a los pines I2C del conector (localizarlos en la doc de la placa), VCC 3,3 V, GND. Activar el bus en el firmware/device tree.
Funcionamiento
i2cdetect -y envía peticiones a todas las direcciones e imprime las respuestas; i2cget lee un registro. El script comprueba la dirección antes de leer. En Debian: sudo apt install gpiod python3-gpiod; los pines P8/P9 tienen nombres del árbol de dispositivos (gpioinfo). Las entradas analógicas AIN0-6 están en P9 (1,8 V máx, vía IIO).
Para ir más lejos
Encadenar con una conversión en Python (py-smbus), o guionizar la lectura periódica en un cron para registrar presión/temperatura.
capteur-i2c.sh
#!/bin/bash
# Detection et lecture d'un capteur I2C (ex. BMP280 en 0x76) avec i2c-tools.
# Installation : sudo apt install i2c-tools
# Activer le bus I2C (raspi-config / device tree overlay / dtb selon la carte).
set -u
BUS="${1:-1}" # numero de bus (sortie de i2cdetect -l)
echo "== Bus I2C disponibles =="
i2cdetect -l || { echo "noyau sans I2C ? activer le bus"; exit 1; }
echo
echo "== Balayage du bus ${BUS} =="
i2cdetect -y "${BUS}" || exit 1
ADRESSE="${2:-0x76}"
if i2cdetect -y "${BUS}" | grep -q "${ADRESSE#0x}"; then
echo
echo "== Lecture de ${ADRESSE} (16 octets) =="
i2cget -f -y "${BUS}" "${ADRESSE}" 0x00 # ID de puce (0x58/0x5D BMP280)
i2cget -y "${BUS}" "${ADRESSE}" 0xfa # LSB pression (registre brut)
i2cget -y "${BUS}" "${ADRESSE}" 0xfb
i2cget -y "${BUS}" "${ADRESSE}" 0xfc
echo "(brut a convertir avec les registres de calibration de la doc)"
else
echo "Aucune puce a ${ADRESSE} : verifier cable/alimentation/adresse"
exit 2
fi