树莓派4B使用PWM+Python实现根据温度自动调节风扇转速

前段时间买了个树莓派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 

Avatar photo

请叫我行长

人送外号行长,一个很爱折腾的医学生,总喜欢鼓捣东西,很喜欢数码产品和折腾服务器,然后一直在找一个志同道合又爱打游戏、爱折腾的御姐。你懂的!

相关推荐

1 条评论

  1. Avatar photo

    这个不错。我的树莓派直接风扇有点吵。

发表评论