🛠 Premier capteur I2C sur GPIO0/GPIO1
Objetivos
- Activar el bus I2C0 (GPIO0 = SDA pin 3, GPIO1 = SCL pin 5) mediante raspi-config o config.txt.
- Escanear el bus con i2cdetect para encontrar la dirección de un sensor.
- Leer una medición (temperatura/presión) en Python.
Material
- Raspberry Pi Model A + sensor I2C común (BME280, BMP280, MPU6050...). >
- El módulo debe funcionar a nivel de 3,3 V; el bus I2C requiere resistencias de pull-up (a menudo ya presentes en el módulo).
Código completo
# 1) Activer I2C : sudo raspi-config > Interface I2C
# ou à la main dans /boot/config.txt :
echo "dtparam=i2c_arm=on" | sudo tee -a /boot/config.txt
echo "i2c-dev" | sudo tee /etc/modules-load.d/i2c.conf
sudo apt-get install -y i2c-tools python3-smbus && sudo reboot
# 2) Balayer le bus (bus 1)
sudo i2cdetect -y 1
#!/usr/bin/env python3
import smbus, time
bus = smbus.SMBus(1)
ADDR = 0x76 # adresse vue avec i2cdetect
WHO = bus.read_byte_data(ADDR, 0xD0)
print("chip id:", hex(WHO))
while True:
t = bus.read_word_data(ADDR, 0x22) # registre d'exemple
print("brut température:", t, flush=True)
time.sleep(1)
Verificación esperada
i2cdetect -y 1 muestra la dirección del sensor (por ejemplo, 76) en la cuadrícula; el script de Python lee valores que varían cuando se calienta el sensor con el dedo. >
Errores frecuentes
- Olvidar reiniciar después de activar I2C:
/dev/i2c-1inexistente, «Permission denied». - Invertir SDA/SCL: no aparece nada en i2cdetect, dirección fantasma 0x00.
- Alimentar el módulo con 5 V mientras el bus se lee a 3,3 V: riesgo para los pines.
- Dirección incorrecta (0x77 en lugar de 0x76): selector ADDR del módulo no consultado en la hoja de datos.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
led_blink.pyPythonbutton_led.pyPythonservo_sweep.pyPythondht_temp.pyPythonoled_i2c.pyPythonmcp3008_read.pyPython