树莓派4b系列-给树莓派安装个散热器

开始在淘宝上随便买了个带风扇的壳壳,收到才发现风扇会一直转,噪音很大,还很耗电,然后又在淘宝看到了U型热管塔式散热器,感觉有科技感而且据说风扇噪音几乎没有,就入手了,顺便自己加了个基于gpio控制的电路,控制风扇运行。

设计电路

电路我直接参考的树莓派 温度监控 PWM 控制风扇 shell python c 语言 这篇文章,三极管换成了PNP型的s9013,加了个陶瓷电容,焊接了杜邦线的针脚,这样美观一点

板子如图

编写程序

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
#include<stdio.h>
#include <wiringPi.h>
#include <unistd.h>
#define pin 1
int main(){
wiringPiSetup (); //wiringPi库初始化
pinMode(pin,OUTPUT); //设置gpio 1为输出端口
digitalWrite(pin,HIGH); //接通风扇
printf("After initialization, the fan will continue to run for 10s");
sleep(10); //让风扇运行10s
digitalWrite(pin,LOW); //关闭风扇
int temp; //温度变量
FILE *cpuTemp; //温度文件指针
int fanP=0; //记录风扇状态,0为关闭,1为在运行
while(1){
//printf("now %d\n",temp);
cpuTemp=fopen("//sys//class//thermal//thermal_zone0//temp","r");
fscanf(cpuTemp,"%d",&temp);
fclose(cpuTemp);
if(temp>=50000&&fanP==0){
printf("The fan has been started, temperature: %d°C\n",temp);
digitalWrite(pin,HIGH);
fanP=1;
}
if(temp<=40000&&fanP==1){
printf("The fan has been stopped, temperature: %d°C\n",temp);
digitalWrite(pin,LOW);
fanP=0;
}
if(fanP==1) sleep(180); else sleep(3);
}
return 0;
}

现在不能执行编译,得先安装下面的库,命令 gcc fan.c -o fan -l wiringPi

配置GPIO

以下内容引用自wiringPi updated to 2.52 for the Raspberry Pi 4B | Wiring Pi

To upgrade:

1
2
3
cd /tmp
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb

Check with:

1
gpio -v

直接安装wiringpi就可以了(尽量最新版,不然有坑,例如提示机器内存为0),执行编译 gcc fan.c -o fan -l wiringPi 。然后执行./fan应该可以看到风扇运行了。

系统服务

/etc/systemd/system/fan.service目录下加入以下内容。

1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=Fan Service

[Service]
Type=simple
User=<修改为机器上存在的用户>
ExecStart=<编译后的程序路径>
ExecStop=/bin/kill -s QUIT $MAINPID

[Install]
WantedBy=multi-user.target

然后载入变更

1
sudo systemctl daemon-reload

运行风扇服务

1
sudo systemctl start fan

加入开机自启

1
sudo systemctl enable fan

查看风扇运行日志

1
sudo systemctl status fan

散热器效果非常好,风扇不转的情况下现在都很难上45摄氏度,风扇运行时耳朵贴着听都没啥声音。