🛠 Lire un capteur sur le bus I2C

Raspberry Pi Model B Revision 2 (2012) — Fiche carte · 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

Objetivos

Activar el bus I2C del BCM2835, detectar un sensor (ejemplo: BME280 temperatura/presión/humedad) en I2C0 del conector P1, y leer una medición desde Python con smbus.

Material

Código completo

# 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 reponse sur l'adresse %02x" % ADDR)

Verificación esperada

i2cdetect -y 1 muestra la dirección del sensor en la cuadrícula; el script de Python imprime el identificador del chip (0x60 para un BME280). No deben quedar XX en la cuadrícula.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales