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

ODROID-M1 (Hardkernel) · intermediaire · Schéma : IMG-odroid-m1-intermediaire-2-odroidm1-i2c-capteur.svg — petit capteur I2C à 4 broches relié au bus SDA/SCL du connecteur 40 broches de l'ODROID-M1 avec résistances de pull-up

Objectifs

Activer et utiliser le bus I2C de l'ODROID-M1 pour lire un capteur environnemental. Le device tree mainline rk3568-odroid-m1.dts (compatible « hardkernel,odroid-m1 », « rockchip,rk3568 ») active i2c0 et i2c3 ; le contrôleur est celui du RK3568B2.

Matériel

Code complet

# Activer l'overlay I2C (Armbian) : éditer /boot/armbianEnv.txt
#   overlays=i2c3
sudo reboot

# Inventaire des contrôleurs et détection du capteur
ls /dev/i2c-*
sudo apt-get install -y i2c-tools
sudo i2cdetect -y 3     # le capteur apparaît p. ex. à l'adresse 0x76
#!/usr/bin/env python3
"""Lecture brute d'un registre de capteur via /dev/i2c-N (smbus)."""
import smbus
bus = smbus.SMBus(3)          # /dev/i2c-3
ADDR = 0x76                    # adresse révélée par i2cdetect
who = bus.read_byte_data(ADDR, 0xD0)          # ID puce BME280 : 0x60
print(f"Chip ID : 0x{who:02x}")
msb, lsb, xlsb = (bus.read_byte_data(ADDR, 0xFA + i) for i in range(3))
print("ADC brut température :", (msb << 12) | (lsb << 4) | (xlsb >> 4))

Vérification attendue

i2cdetect affiche l'adresse du capteur ; le script Python lit un ID de puce cohérent (0x60 pour un BME280) et des conversions ADC qui varient quand on réchauffe le capteur au doigt.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels