i2c_temperature_sensor-9.ino

Ordinateur industriel monocarte BPI-5202 Loongson 2K1000LAi · Fichier : i2c_temperature_sensor-9.ino · Langage : python · Usage : Lire un capteur de température I2C (type LM75/DS18B20 via driver système) et afficher la valeur sur la console série.

Script Python utilisant le module smbus2 pour interroger un capteur I2C connecté au bus interne du BPI-5202.

Le bus I2C est accessible via les broches GPIO étendues du connecteur 20 pins ou via un module d'extension IO. Sous Loongnix ou KylinOS, activez l'i2c-dev avec 'sudo modprobe i2c-dev'. Le script nécessite 'python3-smbus2'. Lisez la température du capteur LM75 à l'adresse 0x48 sur le bus 1 (ajuster selon le schéma électronique de votre module). Exécutez avec sudo si nécessaire pour les permissions 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()

← Retour à la fiche