🛠 Surveiller température et fréquence CPU
Objetivos
Instrumentar el Model B Rev 2: leer la temperatura y la frecuencia del ARM11 a 700 MHz mediante vcgencmd, comprender el estrangulamiento térmico por encima de 85 °C (y en caso de subvoltaje), y verificar un overclock de la era de config.txt.
Material
- Raspberry Pi Model B Rev 2 (BCM2835, 512 MB), fuente de alimentación estable de 5 V
- Disipador o ventilador para el experimento de carga
sudo apt install -y sysstat(opcional); acceso root paranproc/carga
Código completo
# 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 declencher 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 modele 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;
}
Verificación esperada
measure_temp sube con la carga y luego se estabiliza; measure_clock arm cae por debajo de 900000000 (o 700000000) cuando la temperatura supera los 85 °C; get_throttled muestra una bandera distinta de cero en caso de evento, siendo los bits 16 y superiores indicadores de subvoltaje.
Errores frecuentes
- Leer
get_throttleduna sola vez: la bandera es histórica, hay que compararla a lo largo del tiempo. - Hacer overclock sin refrigeración ni una fuente de alimentación adecuada: inestabilidad de la tarjeta SD y estrangulamientos permanentes.
- Confundir los °C con el estado de la bandera de estrangulamiento: la temperatura baja, pero la bandera permanece.
- Olvidar que la GPU y la CPU comparten los 512 MB: un valor alto de
gpu_mem=deja sin recursos a la supervisión y a la carga.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
led_blink.pyPythonbutton_led.pyPythonservo_sweep.pyPythondht_temp.pyPythonoled_i2c.pyPythonmcp3008_read.pyPython