i2c_bme680_sensor.py
Exemple de communication I2C native avec un capteur environnemental BME680 connecté aux pins I2C de la carte porteuse.
Matériel : Capteur BME680 connecté aux pins I2C1 (SDA/SCL) de la Xerxes Nano. Logiciel : Python 3, bibliothèque smbus2. Exécution : pip install smbus2 puis python3 i2c_bme680.py. Vérifiez l'adresse I2C avec 'i2cdetect -y 1'.
i2c_bme680_sensor.py
#!/usr/bin/env python3
import smbus2
import time
# Adresse I2C par défaut du BME680 (0x76 ou 0x77)
I2C_BUS = 1
BME680_ADDR = 0x76
# Registre de configuration
CONFIG_REG = 0xF5
CTRL_MEAS_REG = 0xF4
# Initialisation simplifiée (nécessite souvent une lib dédiée comme adafruit-circuitpython-bme680)
# Pour cet exemple, on utilise un accès brut pour la démonstration de l'interface I2C de la carte
def read_byte(bus, reg):
return bus.read_byte_data(BME680_ADDR, reg)
def write_byte(bus, reg, value):
bus.write_byte_data(BME680_ADDR, reg, value)
try:
bus = smbus2.SMBus(I2C_BUS)
# Vérification de la présence du capteur (Chip ID)
chip_id = read_byte(bus, 0xD0)
if chip_id != 0x61:
print(f"Capteur non détecté ou erreur. Chip ID: {hex(chip_id)}")
else:
print("BME680 détecté sur le bus I2C de la Xerxes Nano")
# Note : Pour une lecture complète précise, il est recommandé d'utiliser la bibliothèque
# 'adafruit-circuitpython-bme680' qui gère les calibrations complexes.
# Ce code démontre la connectivité I2C native.
except Exception as e:
print(f"Erreur I2C: {e}")
finally:
if 'bus' in locals():
bus.close()