前段时间买了个树莓派4B想拿来学学东西,结果在医院里忙得很,基本没有时间,所以就只搭了个局域网的NAS,速度还相当不错,但是风扇的声音是相当的刺耳,晚上睡觉的时候比较不舒服,但是把风扇关了,树莓派的温度又瞬间就上去了,怕烧坏了,还费电影响效率,所以想着使用PWM+Python实现根据温度自动调节风扇转速,也就是智能温控,参考了其他人的文章,修改了一下。
1、使用FinaShell链接上树莓派,并且安装上supervisor。
sudo apt install supervisor
2、打开配置文件conf.d目录。
cd /etc/supervisor/conf.d
3、新建pwmfs.conf配置文件,如果新建不成功,可以使用切换成root用户。
touch pwmfs.conf
4、新建一个py文件,在文件里加入下面的内容,并通过FinaShell上传到树莓派/home/pi/目录下。
import RPi.GPIO import time MIN_TEMP = 35 MAX_TEMP = 75 RPi.GPIO.setwarnings(False) RPi.GPIO.setmode(RPi.GPIO.BCM) RPi.GPIO.setup(18, RPi.GPIO.OUT) RPi.GPIO.setup(17, RPi.GPIO.OUT) pwm1 = RPi.GPIO.PWM(18, 20) pwm2 = RPi.GPIO.PWM(17, 20) pwm1.start(100) pwm2.start(100) time.sleep(5) #pwm1.stop() #pwm2.stop() pwm1.start(0) pwm2.start(0) duty = 0 duty1 = 0 lastDuty1 = 0 duty2 = 0 lastDuty2 = 0 try: while True: tmpFile = open('/sys/class/thermal/thermal_zone0/temp') temp = int(tmpFile.read()) tmpFile.close() if temp < MIN_TEMP * 1000: #pwm1.stop() #pwm2.stop() pwm1.start(0) pwm2.start(0) elif temp > MAX_TEMP * 1000: pwm1.start(100) pwm2.start(100) else: #if temp > (MIN_TEMP+10) * 1000 : duty2 = (temp - MIN_TEMP * 1000) * 100 / ((MAX_TEMP - MIN_TEMP) * 1000) duty = int(duty2) if duty < 20: duty = 20 pwm1.start(duty) pwm2.start(duty) time.sleep(3) except KeyboardInterrupt: pass
5、使用命令配置pwmfs.conf文件内容,内容如下。
[program:pwmfs] command = python3 /home/pi/pwmfs.py autostart = true #/home/pi/pwmfs.py 为文件路径
6、使用命令启动supervisor服务。
sudo systemctl restart supervisor
参考资料
https://blog.csdn.net/qq_25589859/article/details/113810539
https://www.cnblogs.com/jins-note/p/10229478.html
https://blog.smallxu.com/post-344.html
这个不错。我的树莓派直接风扇有点吵。
@鑫 试一下这个,声音会小很多