树莓派4b 一直以来陪着表哥多次装X。取得了卓越的成绩,但是树莓派存在一个问题,就是和电脑一样通电后风扇一直转,能不能搞一个限制。当树莓派温度到达指定温度时,风扇才开始转动呢?
带着上面的疑问,我找了找。发现可以利用温控模块或者三极管来解决此问题。
接线
参考代码
随温度而变化风扇转速
#!/usr/bin/env python
# encoding: utf-8
# 随温度变化,自动控制风扇转速代码
import RPi.GPIO
import time
RPi.GPIO.setwarnings(False)
RPi.GPIO.setmode(RPi.GPIO.BCM)
RPi.GPIO.setup(2, RPi.GPIO.OUT)
pwm = RPi.GPIO.PWM(2,100)
RPi.GPIO.setwarnings(False)
speed = 0
prv_temp = 0
try:
while True:
tmpFile = open( '/sys/class/thermal/thermal_zone0/temp' )
cpu_temp = int(tmpFile.read())
tmpFile.close()
if cpu_temp>=34500 :
if prv_temp<34500 :
#启动时防止风扇卡死先全功率转0.1秒
pwm.start(0)
pwm.ChangeDutyCycle(100)
time.sleep(.1)
speed = min( cpu_temp/125-257 , 100 )
pwm.ChangeDutyCycle(speed)
else :
pwm.stop()
prv_temp = cpu_temp
time.sleep(5)
except KeyboardInterrupt:
pass
pwm.stop()
阈值控制风扇转停
#!/usr/bin/env python
# encoding: utf-8
# From:shumeipai.net
# 设定阀值启动关闭代码
import RPi.GPIO
import time
start = 40
stop = 27
RPi.GPIO.setwarnings(False)
RPi.GPIO.setmode(RPi.GPIO.BCM)
RPi.GPIO.setup(2, RPi.GPIO.OUT)
pwm = RPi.GPIO.PWM(2,100)
fan = False
try:
while True:
with open('/sys/class/thermal/thermal_zone0/temp') as f:
cur = int(f.read()) / 1000
now = time.strftime("%H:%M:%S",time.localtime(time.time()))
if not fan and cur >= start:
pwm.start(100)
fan = True
print("[%s] Fan on @ %s" % (now, cur))
if fan and cur <= stop:
pwm.stop()
fan = False
print("[%s] Fan off @ %s" % (now, cur))
time.sleep(1)
except KeyboardInterrupt:
pwm.stop()
更多文章 关注我们
原文始发于微信公众号(kali黑客笔记):速随热动—让树莓派风扇随温度变化而动
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论