🛠 Lire un capteur I2C (température)

Hardkernel ODROID-XU4 (Samsung Exynos5422) · intermediaire · Schéma : IMG-odroid-xu4-intermediaire-2-odroidxu4-capteur-i2c.svg — Capteur de température I2C relié au header 12 broches (bus I2C) de l'ODROID-XU4 avec résistances de pull-up SDA/SCL et alimentation 3,3 V

Objetivos

Activar y utilizar un bus I2C del ODROID-XU4: el conector de 12 pines (junto al conector de 30 pines) se describe en la ficha técnica como proveedor de GPIO, I2S e I2C. Escanearás el bus con i2cdetect y luego leerás un pequeño sensor de temperatura en Python.

Material

Código completo

# 1) Lister les bus puis balayer (adapter le numero, p. ex. i2c-1)
i2cdetect -l
i2cdetect -y 1
#!/usr/bin/env python3
"""temp_i2c.py — lire un TMP102 (adresse 0x48) sur le XU4."""
import smbus, time

BUS, ADDR = 1, 0x48          # bus/adresse confirmes par i2cdetect
bus = smbus.SMBus(BUS)

while True:
    msb, lsb = bus.read_i2c_block_data(ADDR, 0x00, 2)
    raw = (msb << 8) | (lsb & 0xF0)      # 12 bits, LSB = 0,0625 C
    if raw >= 0x800:                      # complement a deux
        raw -= 0x1000
    print(f"Temperature : {raw * 0.0625:.2f} C")
    time.sleep(2)

Verificación esperada

i2cdetect -y <bus> muestra la dirección del sensor (0x48 para un TMP102 por defecto). El script muestra una temperatura coherente con la del ambiente, que sube cuando pellizcas el sensor con el dedo.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales