🛠 Surveiller température et fréquence sous charge quad-core
Objectifs
Le Pi 2 est le premier Raspberry Pi quad-core : ses 4 Cortex-A7 à 900 MHz chauffent plus que le Pi 1 et throttlent au-delà de 85 °C (ou en cas de sous-tension). Ce tuto t'apprend à mesurer température, fréquence et drapeaux de bridage avec vcgencmd, à charger les quatre cœurs avec un test multiprocessing, et à interpréter le bitmap get_throttled.
Matériel
- Raspberry Pi 2 Model B avec alimentation saine (les baisses de 5 V provoquent aussi du throttling)
- Dissipateur optionnel (la carte tient nue mais chauffe)
- Terminal SSH ou console
Code complet
# Suivi temps reel : temperature + frequency + état de bridage
watch -n 1 'vcgencmd measure_temp; vcgencmd measure_clock arm; vcgencmd get_throttled'
#!/usr/bin/env python3
"""burn.py — teste les 4 cœurs : serial vs parallel (Pi 2 quad-core)."""
import multiprocessing as mp
import time
def burn(n):
x = 0
for i in range(n):
x += i * i
return x
if __name__ == "__main__":
jobs = [20_000_000] * 4
t0 = time.time
for _ in map(burn, jobs): # reference serielle
pass
serial = time.time - t0
t0 = time.time
with mp.Pool(4) as pool: # 4 cœurs, 1 tâche chacun
pool.map(burn, jobs)
parallel = time.time - t0
print(f"serial {serial:.1f}s vs parallel {parallel:.1f}s "
f"(speedup {serial/parallel:.1f}x on {mp.cpu_count} cores)")
Vérification attendue
Au repos : ~40-45 °C, clock à 900000000 Hz, get_throttled = 0x0. En plein burn quad-core : la température grimpe ; si elle atteint 85 °C, measure_clock chute sous 900 MHz et get_throttled affiche 0x2 (bridage thermique). Un 0x1 ou 0x5 signale une sous-tension : change d'alimentation avant de incriminer le refroidissement. Le speedup parallèle doit approcher 3-4×.
Erreurs fréquentes
- Interpréter 0x50005 ou 0x30002 : le bitmap est cumulatif (bits 16+ = historique) ; débloque avec vcgencmd set_throttled=0 si supporté, sinon redémarre.
- Accuser la température alors que la cause est électrique : les transitoires quad-core font chuter une alim 5 V marginales — vérifie d'abord le bit de sous-tension.
- Oublier que le seuil dépend du firmware : 85 °C est le plafond standard de la famille Pi 2.
- Comparer v1.1 et v1.2 : les BCM2837 (A53) des cartes v1.2 vont plus vite par cycle que les BCM2836 (A7) ; les chiffres ne sont pas interchangeables.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
led_blink.pyPythonbutton_led.pyPythonservo_sweep.pyPythondht_temp.pyPythonoled_i2c.pyPythonmcp3008_read.pyPython