Raspi Kühlersteuerung

Mein Raspi wird ab zu zu warm… um das zu verhindern habe ich einen 5V Lüfter von Noctua erstanden ( https://noctua.at/de/nf-a4x10-5v ). Weiter brauchte ich einen NPN 107B Transistor und einen 650 Ohm Wiederstand.

Ich habe dann mit dem GPIO Pin 21 eine Schaltung gebaut, sodass ich über den Transistor den Lüfter schalten kann. (Berechnung VOrwiederstand Transistor: https://www.mikrocontroller.net/articles/Basiswiderstand ) Das scheint super zu laufen.

Zuerst müssen wir die GPIO Pins aktivieren


#gpio pins für die lüftersteuerung
 echo "21" > /sys/class/gpio/export
 echo "out" > /sys/class/gpio/gpio21/direction
 echo "1" > /sys/class/gpio/gpio21/value

Diese Zeilen habe ich auch der /etc/rc.local angefügt (vor das EXIT ), damit überlegt es wohl auch nen Neustart (yet to prove)

Ich habe das folgende Script geschrieben (/usr/bin/tempdaemon)


#!/bin/bash

while true; do
 # date;
  TC=$(awk '{printf("%.1f\n",$1/1e3)}' /sys/class/thermal/thermal_zone0/temp)
  BIGGER55=$(awk -v a="$TC" -v b="55.0" 'BEGIN{print(a>b)}')
  SMALLER45=$(awk -v a="$TC" -v b="45.0" 'BEGIN{print(a<b)}')

#   echo $TC;
#   echo $BIGGER55;
#   echo $SMALLER45;
  if [  $BIGGER55 == "1" ];  then
#       echo "Mehr als 55, Lüfter an";
        echo "1" > /sys/class/gpio/gpio21/value ;
        sleep 60;
  elif [ $SMALLER45 == "1" ]; then
        #Lüfter aus
#       echo "Lüfter aus";
        echo "0" > /sys/class/gpio/gpio21/value;
 else
#       echo "weder noch, sweetspot?!?";
        sleep 1;
  fi

  sleep 10;
done

Danach habe ich es ausführbar gemacht (sudo chmod +x /usr/bin/tempdaemon)

Anschließend habe ich die Servicedatei dafür geschrieben (sudo nano /etc/systemd/system/tempdaemon.service)


[Unit]
Description=Arnes Lüfterdaemon

[Service]
ExecStart=/usr/bin/tempdaemon
Restart=on-failure

[Install]
WantedBy=multi-user.target

Und dann den Service enabled (damit er nach nem neustart automatisch mitstartet) und ihn einmal von hand gestartet

sudo systemctl enable tempdaemon
sudo systemctl start tempdaemon

Ausserdem habe ich mir zwei aliase in die ~/.bash_alias eingefügt, mit denen ich die aktuelle temperatur und den zustand des lüfters beobachten kann.


alias temp='/opt/vc/bin/vcgencmd measure_temp'
alias lufter='cat /sys/class/gpio/gpio21/value'