🛠 Lire un capteur I2C (BME680)

Raspberry Pi 3 Model B (model-3b) · intermediaire · Schéma : IMG-model-3b-intermediaire-2-model3b-i2c-capteur.svg — capteur BME680 relié à I2C1 : SDA broche 3, SCL broche 5, 3V3 broche 1, GND broche 9, adresses 0x76/0x77 selon broche SDO

Objectifs

Activer le bus I2C matériel du Raspberry Pi 3 Model B, détecter un capteur environnement BME680 (température, humidité, pression) et lire une mesure brute en Python avec smbus2. Comprendre le rôle des adresses I2C (fixées par la puce : 0x76 ou 0x77 selon la broche SDO), du bus i2c-1 et des résistances de pull-up.

Matériel

Code complet

# 1) Activer I2C (ou via raspi-config : Interface Options > I2C)
sudo raspi-config nonint do_i2c 0
sudo reboot

# 2) Détecter le capteur sur le bus i2c-1
sudo apt install -y i2c-tools
i2cdetect -y 1        # doit afficher 76 ou 77
#!/usr/bin/env python3
"""bme680_brut.py — lecture brute de température sur BME680 (i2c-1).
   Séquence minimale en mode forced ; conversion complète : datasheet Bosch."""
import smbus2, time

BUS, ADDR = 1, 0x77          # vérifier avec i2cdetect -y 1
b = smbus2.SMBus(BUS)

b.write_byte_data(ADDR, 0xE8, 0x2C)  # ctrl_hum : suréchantillonnage x1
b.write_byte_data(ADDR, 0xF4, 0x24)  # config : t_sb=1000 ms, filtre off
b.write_byte_data(ADDR, 0xF2, 0x01)  # ctrl_meas : temp x1, pression off
time.sleep(1.0)

msb, lsb, xlsb = b.read_i2c_block_data(ADDR, 0xFA, 3)
adc_t = (msb << 12) | (lsb << 4) | (xlsb >> 4)   # ADC 20 bits
print(f"ADC brut température : {adc_t}")          # convertir via datasheet

Vérification attendue

i2cdetect -y 1 affiche une case 76 ou 77 (le reste en --). Le script Python affiche une valeur ADC brute cohérente (elle augmente quand on réchauffe le capteur du doigt). Avec i2cdump -y 1 0x77, les registres de calibration (0x88–0xA1) ne sont pas tous à 0x00 — preuve que la puce répond. Pour des valeurs physiques prêtes à l'emploi, utiliser ensuite la bibliothèque bme680 ou adafruit-circuitpython-bme680.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels