🛠 Lire un capteur I2C (température/humidité) sur le bus 1

Raspberry Pi Model B (Rev 1, 2012) — Fiche carte · intermediaire · Schéma : IMG-model-b-rev1-intermediaire-2-modelb1-i2c-capteur.svg — Capteur I2C sur SDA0 (GPIO0, broche 3) et SCL0 (GPIO1, broche 5), 3,3 V et GND, résistances de pull-up externes 4,7 kΩ, adresses listées dans i2cdetect

Objectifs

Activer le bus I2C du BCM2835 (un seul bus matériel exposé sur P1 : I2C0 sur GPIO0/1), scanner le bus avec i2cdetect et lire un capteur numérique en Python. Les premières révisions n'ont pas de pull-up I2C câblés — sujet discuté sur les forums officiels — on ajoute donc des pull-up externes 4,7 kΩ par sécurité.

Matériel

Code complet

# 1) Activer I2C : sudo raspi-config > Interfacing > I2C
#    ou manuellement dans /boot/config.txt :
#    dtparam=i2c_arm=on
sudo reboot

# 2) Scanner le bus (le capteur doit apparaître, ici 0x77)
sudo i2cdetect -y 1
#!/usr/bin/env python3
"""Lecture brute d'un registre capteur via SMBus (adaptez l'adresse)."""
import smbus

BUS = smbus.SMBus(1)       # bus I2C1 cote linux (peripherique i2c-bcm2708)
ADDR = 0x77                # sortie de i2cdetect -y 1

val = BUS.read_byte_data(ADDR, 0x10)   # exemple de registre
print("registre 0x10 =", hex(val))

Vérification attendue

i2cdetect -y 1 affiche une grille avec l'adresse du capteur (jamais 00, ni les adresses réservées). Le script Python imprime une valeur non nulle qui évolue si vous réchauffez le capteur entre les doigts.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels