修改树莓派的风扇,使风扇能够随温度变化而启停

五迷三道 提交于 2019-11-29 06:30:50

树莓派3b 发热量很大,需要使用风扇散热,为了使风扇既能散热又不浪费电能,我使用一个三极管,一个树莓派自带的gpio接口,一段python脚本,实现了风扇启停的自动控制。

另有我的另一篇记录:树莓派风扇散热自动控制 记录有完成这个工作所参考的资料

硬件部分

三极管使用的是 s8550

是pnp型三极管

发射级接风扇黑线 基级接 gpio 14 集电极接 GDN 风扇红线接+5v

以下是最后的成品

驱动代码部分

软件部分借助了wiringpi 因此想要使gpio工作起来,需要安装wiringpi。

以下是一个网友写的方法,我只摘了方法一 

原文地址http://blog.csdn.net/xukai871105/article/details/17737005 

wiringPi安装wiringPi的安装存在方案A和方案B。

wiringPi使用GIT工具维护个更新代码,但是如果处于一些其他原因不能使用GIT,那么也可以使用方案B下载和安装wiringPi。

方案A——使用GIT工具如果在你的平台上还没有安装GIT工具,可以输入以下命令:

 sudo apt-get install git-core 

如果在这个过程中出现错误,尝试更新软件,

例如输入以下指令: 

sudo apt-get update sudo apt-get upgrade 

紧接着可以通过GIT获得wiringPi的源代码

 git clone git://git.drogon.net/wiringPi 

若需要更新wiringPi。

 cd wiringPi git pull origin 

进入wiringPi目录并安装wiringPi 

cd wiringPi ./build 

build脚本会帮助你编译和安装wiringPi 

>

python代码缩进要求很严格,在这里代码缩进是错误的,所以附上正确代码的截图。

以下是驱动代码 缩进有问题

注意: gpio 14所对应的wiringpi 编码是15


#!/usr/bin/python2
#coding:utf8            #自动风扇控制程序,使用wiringPi的gpio命令来操作GPIO
import commands,time    #控制风扇的GPIO
FAN_GPIO = 15
commands.getoutput('sudo gpio mode '+str(FAN_GPIO)+' OUTPUT')
while True:
 # 获取CPU温度 
     tmpFile = open( '/sys/class/thermal/thermal_zone0/temp' )
     cpu_temp_raw = tmpFile.read() 
     tmpFile.close() 
     cpu_temp = round(float(cpu_temp_raw)/1000, 1) 
     print (cpu_temp) 
     #如果温度大于47`C,就启动风扇 
     if cpu_temp >= 47 :
          commands.getoutput('sudo gpio write '+str(FAN_GPIO)+' 0') 
     #如果温度小于42`C,就关闭风扇 
     if cpu_temp <= 42 : 
          commands.getoutput('sudo gpio write '+str(FAN_GPIO)+' 1') 
     time.sleep(10)

配置部分

我把这个脚本命名为 fan-speed.py

把它存放在/root/x.py 目录下

我希望它能够开机就执行。而不需要人来控制它。

让Python随Linux开机自动运行

准备好要自启的脚本fan-speed.py

用root权限编辑以下文件

sudo vim /ect/rc.local

在exit 0上面编辑启动脚本的命令

/usr/bin/python /root/x.py/fan-speed.py > /root/x.py/fan-speed.log

最后重启Linux,脚本就能自动运行并打印日志了。

风扇也就能够自动控制了。

<对于脚本开机自启动,貌似可以做成一个服务的样子,便于管理。还没试过>

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!