surveillance-temperature.sh
El módulo X8 puede calentarse cuando Docker y el Wi-Fi trabajan juntos: este demonio lee el sensor del kernel cada 10 s, registra en CSV y envía una alerta syslog al superar el umbral. A montar como servicio systemd.
Hardware
Un Arduino Portenta X8 (módulo ST STM32MP1: quad Cortex-A7 Linux + doble núcleo Cortex-M4 de tiempo real, 8 GB eMMC, 2 GB LPDDR4, Wi-Fi/BT integrados, opción LTE). Ninguno: sensor térmico interno del SoC.
Cableado
Nada que cablear. Refrigeración: disipador o caja ventilada con carga sostenida.
Funcionamiento
El kernel expone la temperatura en mili-°C en /sys/class/thermal; el script convierte, añade al CSV y usa logger para syslog, consultable con journalctl.
Ejecución
Lado Linux: acceso SSH (USB-C routed o red) sobre la imagen Portenta Linux, scripts bash/Python. Lado tiempo real: Arduino IDE con el core « Arduino Mbed OS Portenta X8 Boards », núcleo M7 de aplicación, grabado vía mboot desde Linux.
Variantes
Disparar la reducción de frecuencia (cpufreq) en vez de alertar, o subir la temperatura al core Arduino para un LED de calentamiento.
surveillance-temperature.sh
#!/bin/bash
# Surveillance thermique du SoC via sysfs, avec seuil et journal.
SEUIL="${SEUIL:-75}"
JOURNAL="/tmp/temp-x8.csv"
[ -f "$JOURNAL" ] || echo "horodatage,temp_c" > "$JOURNAL"
ZONE=$(ls /sys/class/thermal/ | grep ^thermal_zone | head -1)
[ -n "$ZONE" ] || { echo "pas de capteur thermique"; exit 1; }
while true; do
TEMP=$(( $(cat /sys/class/thermal/$ZONE/temp) / 1000 ))
echo "$(date -Is),$TEMP" >> "$JOURNAL"
if [ "$TEMP" -ge "$SEUIL" ]; then
logger "X8: ALERT temperature ${TEMP}C"
echo "ALERTE : ${TEMP}C (seuil ${SEUIL}C)"
else
echo "temp ${TEMP}C ok"
fi
sleep 10
done
# Installer en service systemd (exemple service-systemd)
# pour une surveillance permanente.