i2c_bme680_sensor.py

Xerxes Nano Carrier Board for Jetson Orin Nano Super and Turing RK1 Modules · File : i2c_bme680_sensor.py · Language : Python · Use case : Lecture de données environnementales (température, pression, humidité) via un capteur BME680 sur le bus I2C.

Native I2C communication example with a BME680 environmental sensor connected to the carrier board's I2C pins.

Hardware: BME680 sensor connected to Xerxes Nano I2C1 pins (SDA/SCL). Software: Python 3, smbus2 library. Execution: pip install smbus2 then python3 i2c_bme680.py. Verify I2C address with '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()

← Back to the board