🛠 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

Objectifs

Activer le bus I2C de l'ODROID-C2 (le contrôleur i2c_A est présent et nommé « I2C A SDA/SCK » sur le connecteur J2 dans la DTS mainline meson-gxbb-odroidc2), détecter un capteur avec i2cdetect, puis lire température et pression en Python.

Matériel

Code complet

# 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)")

Vérification attendue

i2cdetect affiche l'adresse du capteur (76 ou 77) sur le bus. Le script imprime une valeur plausible ; pour une lecture physique exacte, utiliser la bibliothèque calibrée (adafruit-bme280 ou le driver noyau /sys/bus/iio/devices) plutôt que l'approximation brute.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels