🛠 Premier script Python : fiche signalétique de la carte et LED
Objectifs
Écrire son premier script Python sur l'Orange Pi 5 Plus : lire la fiche signalétique de la carte (modèle du device-tree, nombre de cœurs, température CPU) depuis /sys et /proc, puis faire clignoter la LED du tuto 1 depuis Python via libgpiod. Le RK3588 expose 8 cœurs (4 Cortex-A76 jusqu'à 2,4 GHz + 4 Cortex-A55 jusqu'à 1,8 GHz) : le script les compte automatiquement.
Matériel
- Orange Pi 5 Plus sous Armbian ou image Orange Pi OS (ARM64 Debian/Ubuntu)
- LED + résistance 330 Ω sur la broche 7 (tuto opi5p-led-gpio)
- Paquets :
sudo apt install -y python3 python3-gpiod
Code complet
#!/usr/bin/env python3
"""Fiche signalétique Orange Pi 5 Plus + clignotement LED (broche 7)."""
import pathlib, platform, time
import gpiod # API v1 (libgpiod 1.x, images Debian 11 / Ubuntu 22.04 / Armbian)
def read(path):
try:
return pathlib.Path(path).read_text.strip("\x00").strip
except OSError:
return "n/a"
print("Modèle :", read("/proc/device-tree/model"))
print("Machine :", platform.machine)
print("Cœurs :", len(list(pathlib.Path("/sys/devices/system/cpu").glob("cpu[0-9]*"))))
for z in sorted(pathlib.Path("/sys/class/thermal").glob("thermal_zone*/temp")):
print("Temp :", z.parent.name, int(z.read_text) / 1000.0, "°C")
chip = gpiod.Chip("gpio1")
line = chip.get_line(30) # broche 7 = GPIO1_D6
line.request(consumer="tuto", type=gpiod.LINE_REQ_DIR_OUT)
for _ in range(3):
line.set_value(1); time.sleep(0.3)
line.set_value(0); time.sleep(0.3)
line.release
print("Terminé.")
Vérification attendue
python3 fiche.py affiche « Xunlong Orange Pi 5 Plus », aarch64, 8 cœurs, une ou plusieurs températures (30 à 50 °C au repos), puis la LED clignote 3 fois. Le device-tree mainline a pour compatible xunlong,orangepi-5-plus.
Erreurs fréquentes
- API libgpiod : l'exemple utilise l'API v1 (
get_line/request) des distributions livrées ; les images récentes en libgpiod 2.x ont une API différente (chip.find_line, requêtes par lignes). - Exécuter sans les droits GPIO : lancer avec
sudosi l'utilisateur n'est pas dans le groupegpio/render. - Oublier
line.release: la ligne reste réclamée et gpioset échoue ensuite en GPIOBUSY. - >
Autres tutoriels pour cette carte
- Allumer une LED via le GPIO 40 broches (libgpiod)
- Lire un bouton poussoir et afficher dans la console
- Variation d'intensité d'une LED avec PWM (sysfs pwm)
- Lire un capteur I2C (BMP280) depuis le bus du connecteur
- Exploiter le double Ethernet 2,5 GbE et sécuriser le SSH
- Booter sur NVMe (M.2 PCIe 3.0 x4) et récupérer une carte brique via MaskROM
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash