🛠 Lire un capteur BME280 en I2C sur le CM3

Raspberry Pi Compute Module 3 (CM3 / CM3L) · intermediaire · Schéma : capteur BME280 relié au bus I2C1 du CM3 sur carte CMIO3 — SDA sur GPIO2, SCL sur GPIO3, VCC 3,3 V, GND.

Objetivos

Activar y utilizar el bus I2C del CM3 (el BCM2837 expone dos en el SODIMM) para leer un sensor de temperatura/humedad/presión BME280. Aprenderás a activar el bus mediante config.txt, a escanear el bus con i2cdetect y a leer registros en Python con smbus. Atención: el CM3 no tiene ningún ADC interno (hoja de datos RP-008161-DS §2) — cualquier sensor analógico debe pasar por un convertidor externo en I2C o SPI.

Material

Código completo

# 1. Activer I2C : ajouter dans /boot/firmware/config.txt (ou via raspi-config)
#    dtparam=i2c_arm=on
sudo reboot
# 2. Outils et scan du bus
sudo apt install -y i2c-tools python3-smbus
sudo i2cdetect -y 1        # doit afficher 76 (ou 77)
#!/usr/bin/env python3
# bme280.py — lecture brute des registres
import time, smbus

BUS = smbus.SMBus(1)          # /dev/i2c-1 (contrôleur « arm »)
ADDR = 0x76

BUS.write_byte_data(ADDR, 0xF4, 0x2F)   # ctrl_meas : temp+pression, oversampling x16
time.sleep(0.1)
hi, lo = BUS.read_i2c_block_data(ADDR, 0xFA, 2)   # regs 0xFA/0xFB : température 20 bits
print('code brut température :', ((hi << 8) | lo) >> 4)

# En pratique, utiliser la couche haute niveau (paquet pip bmp280 par exemple).

Verificación esperada

sudo i2cdetect -y 1 muestra la dirección 76 (o 77) del sensor. El script imprime un código bruto que cambia cuando se calienta el sensor con el dedo. Con la biblioteca de alto nivel, la temperatura, la presión y la humedad se muestran en unidades físicas.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales