一直以来我都将一块树莓派作为我的服务器来使用,但是夏天到了,散热成了新的难题。既不想让风扇一直转(吵人),又想让CPU温度到达一定程度的时候启动,这确实有些棘手。查阅了相关达人的经验之后,我决定用继电器来解决这个问题。

思路

由于树莓派的控制脚针GPIO的电流并不足以带动风扇,所以使用继电器来间接控制风扇。pin2、pin4直接连接到电源,不受CPU控制,这里的电流足够,而继电器的控制端接pin12,以此来达到间接控制风扇的目的。

raspberry-pi-2-pinout.jpg
raspberry-pi-2-pinout.jpg

经历

电路

说干就干,在淘宝上不到四块钱买了一个继电器,非常便宜,这里注意要买5V电压的。

然后把电路接上,就像这样。此时的控制电路IN接的是Pin12也就是BCM控制方式的18端口。

rasprarypi.png
rasprarypi.png

程序

获取树莓派CPU温度非常简单,最终用Python编写。首先需要安装GPIO控制包。

sudo apt install rpi.gpio
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)

def cpu_temp():
    with open("/sys/class/thermal/thermal_zone0/temp", 'r') as f:
        return float(f.read())/1000

GPIO.setup(18,GPIO.IN)
is_close = True
while True:
    temp = cpu_temp()
    if is_close:
        if temp > 50.0:
            print(f"temp={temp}, open the fan")
            GPIO.setup(18,GPIO.OUT)
            is_close = False
    # 如果已经在开启着
    else:
        if temp < 45.0:
            print(f'temp={temp}, close the fan')
            GPIO.setup(18, GPIO.IN)
            is_close = True
    time.sleep(2)
    print(f"temp={temp},is_close={is_close}")

最后使用Screen在后台运行即可。

成功

我自己改装散热系统(从某个费零件里拆的散热铝片)之后,效果好了不少。

IMG_20210725_111037.jpg
IMG_20210725_111037.jpg