🛠 Surveiller température et fréquence CPU sous contrainte
Objetivos
Instrumentar la Orange Pi 3B (4× Cortex-A55 hasta 1,8 GHz, RK3566 en 22 nm): leer las temperaturas de las zonas térmicas, observar la frecuencia real de cada núcleo, activar un umbral de alerta y probar la refrigeración pasiva frente al ventilador en el conector de 2 pines.
Material
- Orange Pi 3B con Armbian, fuente de alimentación de 5 V / 3 A
- Disipador adhesivo y/o ventilador de 5 V en el conector de ventilador de 2 pines
- > NO VERIFICADO: no se publica ningún rango oficial de temperatura de funcionamiento para la Orange Pi 3B (la ficha del RK3566 no es pública); la placa hermana Radxa ROCK 3B anuncia 0–60 °C para uso general / −40–85 °C para uso industrial — tome estas referencias con precaución.
Código completo
# 1. Températures (degrés milli-C) et politiques thermiques
paste <(for z in /sys/class/thermal/thermal_zone*/type; do cat $z; done) \
<(for z in /sys/class/thermal/thermal_zone*/temp; do echo "scale=1;$(cat $z)/1000"|bc; done)
# 2. Fréquence réelle par cœur pendant une charge
sudo apt install stress-ng
(trap 'kill %1' INT; stress-ng --cpu 4 --timeout 60s) &
while sleep 2; do grep -H . /sys/devices/system/cpu/cpufreq/policy*/scaling_cur_freq; done
# 3. Alerte simple toutes les 10 s
while sleep 10; do
t=$(($(cat /sys/class/thermal/thermal_zone0/temp)/1000))
[ $t -gt 75 ] && logger -p user.warning "CPU trop chaud : ${t}°C"
done
# 4. Compteur de passages en limitation thermique (throttle)
grep . /sys/class/thermal/thermal_zone*/policy 2>/dev/null
sudo dmesg | grep -i -e thermal -e throttle
Verificación esperada
Con stress-ng --cpu 4, scaling_cur_freq sube hacia 1,8 GHz y luego se estabiliza; sin disipador, la frecuencia baja y dmesg puede mostrar mensajes térmicos. Con disipador/ventilador, la temperatura alcanza un techo más bajo y la frecuencia se mantiene durante más tiempo.
Errores frecuentes
- Leer
/sys/class/thermal/thermal_zone0/tempsin dividir por 1000: los valores están en miligrados. - Confiar en
cpufreq-infouna sola vez: la frecuencia es instantánea, hay que muestrear bajo carga. - Fuente de alimentación de 5 V / 2 A: los recortes de frecuencia pueden deberse a una subalimentación, no a la temperatura.
- Invertir el ventilador de 2 pines (polaridad) o conectarlo sin masa común.
- Comparar las zonas:
soc-thermal(die) ypmu-thermalno suben a la misma velocidad.
Otros tutoriales para esta placa
- Faire clignoter une LED via le GPIO avec libgpiod
- Lire un bouton poussoir et afficher l'état dans la console
- Premier script Python : bouton + LED avec python3-libgpiod
- Variation d'intensité d'une LED avec un signal PWM
- Interroger un capteur I2C sur les broches 3/5 du connecteur
- Configurer Ethernet gigabit et Wi-Fi puis se connecter en SSH
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash