i2c_bme680_sensor.py

Carte porteuse Xerxes Nano pour modules Jetson Orin Nano Super et Turing RK1 · Fichier : i2c_bme680_sensor.py · Langage : Python · Usage : Lecture de données environnementales (température, pression, humidité) via un capteur BME680 sur le bus I2C.

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

← Retour à la fiche