Raspberry Pi 根据CPU测试调节风扇
设计方案
选用了三极管方案,在接线方式中选择了自制杜邦线连接三极管和风扇, 这样的好处是线材的长度可以随自己需要裁剪,而且可以轻松塞进树莓派的外壳中。 全程无焊接,以后不用也可方便拆卸线材、杜邦头、三极管元件等用作其他用途。
准备材料
以下材料均可某宝购买,为了省事其中杜邦头和杜邦胶壳是买的套件, 一盒里边有公母端子各200个,以及各种类型的胶壳。
- 树莓派散热风扇
- 尖嘴钳:用来剥线和压线
- 导线
- 杜邦端子:母端子6个,公端子2个
- 杜邦胶壳:1P1个,2P2个,3P一个(非必须)
- 三极管S8550
连接线路
控制程序
安装raspberry-gpio:
https://jaist.dl.sourceforge.net/project/raspberry-gpio-python/RPi.GPIO-0.6.5.tar.gz
安装python-devel:
yum install -y python-devel
驱动代码:
#!/usr/bin/python2 import sys import time try: import RPi.GPIO as GPIO except RuntimeError: print("Error importing RPi.GPIO! Maybe use 'sudo' to run your script") def cpu_temp(): with open("/sys/class/thermal/thermal_zone0/temp", 'r') as f: return float(f.read())/1000 def main(): channel = 14 GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) # open air fan first GPIO.setup(channel, GPIO.OUT, initial=GPIO.LOW) is_close = False while True: temp = cpu_temp() if is_close == True: if temp > 50.0: print time.ctime(), temp, 'open air fan' GPIO.output(channel, GPIO.LOW) is_close = False else: if temp < 45.0: print time.ctime(), temp, 'close air fan' GPIO.output(channel, GPIO.HIGH) is_close = True time.sleep(15.0) #print time.ctime(), temp, is_close if __name__ == '__main__': main()
注意:因为这里使用的三极管为PNP型三极管,基极施加低电平时才导通电路, 如果是用的NPN型三极管则与之相反。
本人的启动脚本:
nohup python -u /usr/local/bin/tempctl.py >/usr/local/bin/tempctl.log 2>&1 &
如有需要可自己注册为服务并设置开机自启,这里不再赘述。