🛠 Refroidir le CM5 : ventilateur PWM sur le connecteur JST-SH et tachymétrie
Objectifs
Le CM5 délivre bien plus de performance que le CM4 et chauffe davantage (throttle à 85 °C de boîtier) ; la CM5IO Board fournit un connecteur ventilateur JST-SH 4 broches (5 V, Fan_PWM, tachymétrie, GND) et le firmware pilote la PWM comme sur le Pi 5. Ce tuto : câbler le ventilateur, lire le tachymètre sur Fan_Tacho (GPIO29), et comprendre le piège documenté : Fan_PWM s'arrête à l'extinction, mais un ventilateur alimenté séparément en 5 V peut continuer à tourner si la carte mère ne coupe pas son alimentation.
Matériel
- 1 × CM5 sur CM5IO Board (ou carte porteuse reprenant le connecteur JST-SH, réf. JST BM04B-SRSS-TB côté carte)
- 1 × ventilateur 5 V PWM 4 fils (type Noctua NF-A4x10 PWM ou équivalent)
- Le boîtier IO officiel a un défaut v1 connu : impossible de monter le CM5 Cooler et le ventilateur préinstallé à la fois (corrigé en v2)
sudo apt install -y python3-gpiozero
Code complet
#!/usr/bin/env python3
# rpm-ventilateur.py — lit Fan_Tacho (GPIO29) du connecteur ventilateur CM5IO.
from gpiozero import DigitalInputDevice
from time import sleep
compte = 0
def tick(_):
global compte
compte += 1
tach = DigitalInputDevice(29, pull_up=True, bounce_time=0.0005)
tach.when_activated = tick
sleep(5)
rpm = compte / 5 / 2 * 60 # 5 s, 2 impulsions par tour (typique)
print(f"~ {rpm:.0f} tr/min")
tach.close
# Température et état de throttle pendant la montée en charge
vcgencmd measure_temp && vcgencmd get_throttled
sudo apt install -y stress-ng && stress-ng --cpu 4 --timeout 90 &
sleep 45; python3 rpm-ventilateur.py; vcgencmd measure_temp
Vérification attendue
Le script affiche un régime stable (p. ex. ~2000 tr/min) ; sous stress, la température monte et le firmware accélère le ventilateur (le régime affiché augmente, get_throttled reste à 0x0). À l'extinction (sudo systemctl poweroff), le ventilateur branché sur le connecteur de l'IO Board doit s'arrêter — s'il tourne encore, votre carte porteuse ne coupe pas le 5 V du ventilateur.
Erreurs fréquentes
- Ventilateur qui tourne après extinction : documenté par la datasheet (§2.11) — partager la ligne VBUS_EN ou ajouter un buffer 74LVC1G07 sur la carte mère pour couper le 5 V.
- Boîtier IO v1 + CM5 Cooler : les deux ne rentrent pas ensemble ; retirer le ventilateur préinstallé ou passer au boîtier v2.
- Tachy sans pull-up : le signal open-collecteur d'un ventilateur reste flottant sans
pull_up=True— compteur à zéro garanti. - Inverser PWM et 5 V dans le connecteur JST-SH : vérifier l'ordre des broches côté ventilateur avant d'alimenter.
Autres tutoriels pour cette carte
- Alimenter un CM5 comme il faut : USB-C PD 5 V / 5 A et bouton d'alimentation
- La première RTC des Compute Modules : câbler et vérifier la VBAT du CM5
- Accès distant sans VPN : enregistrer un CM5 dans Raspberry Pi Connect
- GPIO du CM5 côté RP1 : force de conduite, budget 50 mA et broches pièges
- Deux ports USB 3.0 simultanés : le CM5 fait du stockage rapide, pas sur une carte CM4
- Démarrer le CM5 sur un SSD NVMe dans le socket M.2 de la CM5IO
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash