速随热动—让树莓派风扇随温度变化而动

admin 2022年9月11日13:49:38评论41 views字数 1599阅读5分19秒阅读模式

树莓派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黑客笔记):速随热动—让树莓派风扇随温度变化而动

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年9月11日13:49:38
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   速随热动—让树莓派风扇随温度变化而动http://cn-sec.com/archives/1291525.html

发表评论

匿名网友 填写信息