i2c_temperature_sensor-9.ino
Script Python que utiliza el módulo smbus2 para consultar un sensor I2C conectado al bus interno del BPI-5202.
El bus I2C es accesible a través de los pines GPIO extendidos en el conector de 20 pines o mediante un módulo de expansión IO. En Loongnix o KylinOS, habilite i2c-dev con 'sudo modprobe i2c-dev'. El script requiere 'python3-smbus2'. Lea la temperatura de un sensor LM75 en la dirección 0x48 en el bus 1 (ajuste según el esquema de su módulo). Ejecute con sudo si es necesario para permisos GPIO.
i2c_temperature_sensor-9.ino
#!/usr/bin/env python3
# i2c_temp_monitor.py
# Exemple de lecture capteur I2C sur BPI-5202 (LoongArch)
# Nécessite : sudo apt install python3-smbus
import time
import struct
from smbus2 import SMBus
# Adresse I2C par défaut du capteur (ex: LM75)
I2C_BUS = 1 # Vérifier avec 'ls /dev/i2c-*' sur BPI-5202
I2C_ADDR = 0x48
try:
bus = SMBus(I2C_BUS)
print(f"Initialisation I2C bus {I2C_BUS} pour BPI-5202...")
while True:
try:
# Lecture du registre de température (LM75)
raw_data = bus.read_word_data(I2C_ADDR, 0x00)
# Conversion brute -> Celsius (format spécifique LM75)
temp_c = (raw_data << 8) & 0xFF00
temp_c = temp_c >> 8 # Simple décalage pour exemple
# Ajustement précis selon datasheet (ici approximation)
if temp_c > 128:
temp_c -= 256
print(f"Température: {temp_c:.2f} C")
except Exception as e:
print(f"Erreur I2C: {e}")
time.sleep(1)
except KeyboardInterrupt:
print("\nArrêt du programme.")
except Exception as e:
print(f"Erreur critique: {e}")
finally:
if 'bus' in locals():
bus.close()