为了防止树莓派长时间开机温度过高导致过热关机,很多人都加装了散热风扇forit,不过某宝买的风扇插上电源后会跟着开机,如果一直运转的话,是不能根据温度变化自动开闭的。很多时候它做无用功,浪费电力,产生噪音。本文将从一个硬件新手程序员的角度详细介绍如何使用三极管扩展普通树莓派散热风扇实现温控功能。自己做温控风扇之前,也在网上查阅了其他资料,最终选择了三极管方案。在接线方式上,我选择了一根自制的杜邦线连接三极管和风扇。这样做的好处是可以根据自己的需要裁剪线材的长度。而且它很容易放入RaspberryPi的外壳中。全程无焊接,线材、杜邦头、三极管元件等日后不用时可轻松拆卸作他用。准备材料以下材料可在某宝购买。为了省事,杜邦头和杜邦胶壳都是外购套件。一个盒子里有200个公母端子,各种型号的塑料外壳。1、树莓派散热风扇2、尖嘴钳:用于剥线、压线3、线材4、杜邦端子:6个母端子,2个公端子5、杜邦塑料外壳:1P1、2P2、3P各一个(非必须)6、三极管S8550第一步:制作杜邦线杜邦线:电子行业的杜邦线,可以用于实验板的引脚扩展,添加实验项目等,不需要焊接就可以非常牢固的连接到引脚上,并且可快速进行电路测试。杜邦端子:分为公端子和母端子两种。杜邦塑胶外壳:根据可封装端子数,可插入一个端子的为1P,可插入两个端子的为2P,四个端子以上的分为根据排列的单排XP或双排XP。例如,单排4P是将可插端子排成一排,而双排4P则是将可插端子分成两排,每排两个端子。上图:如想了解更多以上介绍,请自行搜索相关资料。这里需要制作4根杜邦线:两根杜邦线两端都是母端子(简称母对母)。一根用来连接三极管的基极到主板的GPIO14脚,一根用来连接三极管的集电极和主板的地脚。剩下两根公对母的杜邦线,其中一个公端子插风扇正极(红线)母端子,另一个母端子插主板正极,另一个公端子插风扇负极(黑线)母端子,另一端插入母端子连接到三极管发射极组。我买的线材是单根铜芯线(外径0.58mm)。后来发现只用一根线做杜邦线是不会卡牢的,容易导致线从杜邦端子上脱落。因此,每根杜邦线都是由两根线制成的。它由一根铜芯线组成,因此这里需要切割8根线。1.剪8根线,每根线长7cm左右。2、剥线,用尖嘴钳露出线两端约1cm的铜芯。3、将线绞在一起(如果你在这里买的线比较粗,请跳过这一步),将两根线并排放置,用尖嘴钳将两端裸露的铜芯绞在一起。因为裸露的铜芯比较细,为了防止接触不良,我把裸露的铜芯折了两下,拧紧了。裸线实际长度约为2.5mm。4、压接,将电线外露的铜芯压入杜邦端子。由于手边没有专门的压线钳,这一步也是用尖嘴钳完成的。成品如图:注意:如果你买的线是1cm左右粗,只需要剪4根线即可。(但如果它太厚,它可能不适合终端)。另外,剥线时,只需要在线的两端露出2-3mm左右即可。)Step3:WiringStep4:在编写驱动和执行驱动脚本之前,需要安装相关依赖yuminstall-ypython-devel,RPi.GPIO模块wgethttps://jaist.dl.sourceforge。...附加的驱动程序代码:#!/usr/bin/python2importsysimporttimetry:importRPi.GPIOasGPIOexceptRuntimeError:print("ErrorimportingRPi.GPIO!Thisisprobablybecauseyouneedsuperuserprivileges.Youcanachievethisbyusing'sudo'运行你的脚本")defcpu_temp():withopen("/sys/class/thermal/thermal_zone0/temp",'r')asf:returnfloat(f.read())/1000defmain():channel=14GPIO.setmode(GPIO.BCM)GPIO.setwarnings(False)#先打开风扇GPIO.setup(channel,GPIO.OUT,initial=GPIO.LOW)is_close=FalsewhileTrue:temp=cpu_temp()ifis_close==True:iftemp>50.0:printtime.ctime(),temp,'openairfan'GPIO.output(channel,GPIO.LOW)is_close=False否则:如果温度<45.0:printtime.ctime(),temp,'closeairfan'GPIO.output(channel,GPIO.HIGH)is_close=Truetime.sleep(15.0)#printtime.ctime(),temp,is_closeif__name__=='__main__':main()注:由于这里使用的三极管是PNP型三极管,基极加低电平时电路导通。如果是NPN三极管则相反。我的启动脚本:nohuppython-u/usr/local/bin/tempctl.py>/usr/local/bin/tempctl.log2>&1&如果需要,可以注册为服务,设置为自动启动,所以我不会在这里重复它。最后结果:
