🛠 Lire un capteur I2C (température/pression)

Hardkernel ODROID-C2 (Amlogic S905) · intermediaire · Schéma : IMG-odroid-c2-intermediaire-2-odroidc2-i2c-capteur.svg — capteur BME280 relié au bus I2C A du connecteur J2 de l'ODROID-C2

Objetivos

Activar el bus I2C del ODROID-C2 (el controlador i2c_A está presente y se denomina « I2C A SDA/SCK » en el conector J2 del DTS mainline meson-gxbb-odroidc2), detectar un sensor con i2cdetect y luego leer la temperatura y la presión en Python.

Material

Código completo

# 1) activer I2C (armbian-config > overlays > i2c) puis :
sudo i2cdetect -y 1        # le bus I2C A ; lister d'abord : ls /dev/i2c-*
#!/usr/bin/env python3
"""bme280.py — lecture brute registre temperature (python3-smbus)."""
import smbus, time

BUS = smbus.SMBus(1)       # /dev/i2c-1 — ajuster selon i2cdetect
ADDR = 0x76                # 0x77 si PSB lié à VDD

# configuration capteur BMP280/BME280 (mode force)
BUS.write_byte_data(ADDR, 0xF4, 0x2E)
time.sleep(0.1)
msb = BUS.read_byte_data(ADDR, 0xFA)   # press_msb — enchaîne LSB/XLSB
lsb = BUS.read_byte_data(ADDR, 0xFB)
xlsb = BUS.read_byte_data(ADDR, 0xFC)
t_raw = ((msb << 12) | (lsb << 4) | (xlsb >> 4))
temp_c = (t_raw / 100.0) - 50.0        # approximation lineaire simplifiee
print(f"registre brut temperature: {t_raw}  (~{temp_c:.1f} C)")

Verificación esperada

i2cdetect muestra la dirección del sensor (76 o 77) en el bus. El script imprime un valor plausible; para una lectura física exacta, utilizar la biblioteca calibrada (adafruit-bme280 o el driver del kernel /sys/bus/iio/devices) en lugar de la aproximación bruta.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales