🛠 Lire un capteur sur le bus I2C

Fiche carte — Raspberry Pi Model B Revision 2 (2012) · intermediaire · Schéma : IMG-model-b-rev2-intermediaire-2-modelb2-i2c-capteur.svg — Bus I2C du Model B Rev 2 : SDA (GPIO0, P1-3) et SCL (GPIO1, P1-5) reliés à un capteur BME280 avec résistances de pull-up

Objectifs

Activer le bus I2C du BCM2835, détecter un capteur (exemple : BME280 température/pression/humidité) sur I2C0 du connecteur P1, et lire une mesure depuis Python avec smbus.

Matériel

Code complet

# 1) Activer I2C: dans /boot/config.txt ajouter la ligne puis redemarrer
sudo nano /boot/config.txt
#   dtparam=i2c_arm=on
sudo reboot
# 2) Scanner le bus (adresse attendue: 76 ou 77 pour un BME280)
sudo i2cdetect -y 1
#!/usr/bin/env python
# lire_temp.py - lecture brute d'un registre via smbus
import smbus

bus = smbus.SMBus(1)                 # i2c-1 (le seul expose sur P1)
ADDR = 0x76                          # adresse trouvee a l'etape i2cdetect
try:
    who = bus.read_byte_data(ADDR, 0xD0)
    print("chip id: 0x%02x" % who)   # 0x60 pour un BME280
except IOError:
    print("Pas de réponse sur l'adresse %02x" % ADDR)

Vérification attendue

i2cdetect -y 1 affiche l'adresse du capteur dans la grille ; le script Python imprime l'identifiant de puce (0x60 pour un BME280). Aucun XX partout ne doit rester dans la grille.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels