树莓派散热方案

前言

虽然树莓派是一个高度集成的单片机电脑,但每当任务稍微繁重的时候它所产生的热量却不容小觑。众所周知,一旦硬件设备热起来,它的性能势必会受到些许影响。

为了解决这个问题,我决定给它加装一个散热风扇,是的没错,一个散热风扇。麻雀虽小五脏俱全,树莓派的各种配件极为丰富。

硬件清单

  • 树莓派

  • 3mm 风扇 or 5mm 风扇

  • 树莓派保护壳(带风扇位)

  • 散热片(可选)

安装

安装十分简单就不再赘述。

风扇自动起停

正所谓:风扇易加,噪音难消。往往树莓派的温度并不是很高,风扇却全速运行,产生比较高分贝的噪音。那么有没有一种方式可以根据树莓派的温度来控制风扇的转速呢?答案是:有的。

准备工作

  • 单路继电器

  • 杜邦线(公对母)若干

  • 一个 python 脚本,用于控制风扇起停

操作

连线示意图

请忽略我丑丑的字,看图,哈哈。

连接完毕后,我们就可以编写 python 脚本来控制风扇了。

直接上源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import sys
import time
try:
import RPi.GPIO as GPIO
except RuntimeError:
print("Error importing RPi.GPIO! This is probably because you need superuser privileges. You can achieve this by using 'sudo' to run your script")

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

def main():
channel = 16
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)

# close air fan first
GPIO.setup(channel, GPIO.OUT, initial=GPIO.HIGH)
is_close = True
while True:
temp = cpu_temp()
if is_close:
if temp > 45.0:
print time.ctime(), temp, 'open air fan'
GPIO.output(channel, GPIO.HIGH)
is_close = False
else:
if temp < 38.0:
print time.ctime(), temp, 'close air fan'
GPIO.output(channel, GPIO.LOW)
is_close = True

time.sleep(2.0)
print time.ctime(), temp

if __name__ == '__main__':
main()

大致原理就是通过树莓派系统文件 /sys/class/thermal/thermal_zone0/temp 读取 CPU 温度,再设定温度阈值并对应 GPIO 针脚的高低电平,从而通过继电器来控制风扇起停。

一切准备就绪,我们就可以运行脚本,来进行测试。不出意外,当树莓派任务“繁重”的时候,风扇也高速运转。

实际测试下来,未加装风扇时,树莓派 CPU 温度 60+ 摄氏度,加装 3mm 风扇,树莓派 CPU 温度在 40 摄氏度左右,5mm 风扇在 30 摄氏度左右。而风扇也像被驯服的野马很少发出那种嘶吼的噪音来。

此外,该脚本在树莓派重启后不自动运行,那么我们可以在 /etc/rc.local 文件中,exit 0 这一行前,加一行 python /the/path/of/autofan.py &。这样每次重启树莓派的时候系统就自动在后台运行该脚本了,做到自动监控,自动起停,哈哈。

感谢您的阅读,本文由 三十七度一 版权所有。如若转载,请注明出处:三十七度一(https://ultrarex.com/p/2b96.html
从 0 初始化一个树莓派