🛠 Surveiller température et fréquence CPU
Objectifs
Instrumenter le Model B Rev 2 : lire température et fréquence du ARM11 à 700 MHz via vcgencmd, comprendre le bridage thermique au-delà de 85 °C (et en cas de sous-tension), et vérifier un overclock de l'ère config.txt.
Matériel
- Raspberry Pi Model B Rev 2 (BCM2835, 512 MB), alimentation stable 5 V
- Dissipateur ou ventilateur pour l'expérience de charge
sudo apt install -y sysstat(optionnel) ; accès root pournproc/charge
Code complet
# Boucle de surveillance: temperature, horloge courante, drapeau de bridage
while true; do
printf "%s " "$(date +%T)"
vcgencmd measure_temp
vcgencmd measure_clock arm
vcgencmd get_throttled
sleep 5
done
# Surcharge CPU (ARMv6 mono-cœur) pour déclencher le bridage:
yes > /dev/null &
# Overclock classique Rev 2 dans /boot/config.txt (avec refroidissement):
# arm_freq=900
# over_voltage=4
# force_turbo=1
/* rev.c - confirmer le modèle avant d'interpretter les mesures.
Build: gcc rev.c -o rev && ./rev */
#include <stdio.h>
#include <string.h>
int main(void) {
char line[256];
FILE *f = fopen("/proc/cpuinfo", "r");
if (!f) { perror("cpuinfo"); return 1; }
while (fgets(line, sizeof line, f))
if (strncmp(line, "Revision", 8) == 0) printf("%s", line);
fclose(f);
return 0;
}
Vérification attendue
measure_temp monte avec la charge puis se stabilise ; measure_clock arm retombe sous 900000000 (ou 700000000) quand la température dépasse 85 °C ; get_throttled affiche un drapeau non nul en cas d'événement, bits 16 et plus signalant une sous-tension.
Erreurs fréquentes
- Lire
get_throttledune seule fois : le drapeau est historique, il faut le comparer dans le temps. - Overclocker sans refroidissement ni alimentation correcte : instabilité SD et bridages permanents.
- Confondre °C et état du drapeau de bridage : la température redescend, le drapeau, lui, reste.
- Oublier que GPU et CPU partagent les 512 MB : un
gpu_mem=élevé affame la surveillance et la charge.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
led_blink.pyPythonbutton_led.pyPythonservo_sweep.pyPythondht_temp.pyPythonoled_i2c.pyPythonmcp3008_read.pyPython