🛠 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

Objectifs

Activer et exploiter un bus I2C de l'ODROID-XU4 : le header 12 broches (à côté du header 30 broches) est décrit par la fiche technique comme apportant GPIO, I2S et I2C. Vous balayerez le bus avec i2cdetect puis lirez un petit capteur de température en Python.

Matériel

Code complet

# 1) Lister les bus puis balayer (adapter le numéro, 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)

Vérification attendue

i2cdetect -y <bus> affiche l'adresse du capteur (0x48 pour un TMP102 par défaut). Le script affiche une température cohérente avec la pièce, qui monte quand on pince le capteur du doigt.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels