🛠 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

Objetivos

Activar y utilizar el bus I2C del ODROID-M1 para leer un sensor ambiental. El device tree mainline rk3568-odroid-m1.dts (compatible « hardkernel,odroid-m1 », « rockchip,rk3568 ») activa i2c0 e i2c3; el controlador es el del RK3568B2.

Material

Código completo

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

Verificación esperada

i2cdetect muestra la dirección del sensor; el script Python lee un ID de chip coherente (0x60 para un BME280) y conversiones ADC que varían cuando se calienta 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