跳转至GitHub

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

<2018.2.3笔>18.10.26转移自wordpress

 

树莓派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

 1 #!/usr/bin/python2
 2 #coding:utf8
 3 #自动风扇控制程序,使用wiringPi的gpio命令来操作GPIO
 4 import commands,time
 5 #控制风扇的GPIO
 6 FAN_GPIO = 15
 7 commands.getoutput('sudo gpio mode '+str(FAN_GPIO)+' OUTPUT')
 8 while True:
 9         # 获取CPU温度
10         tmpFile = open( '/sys/class/thermal/thermal_zone0/temp' )
11         cpu_temp_raw = tmpFile.read() tmpFile.close()
12         cpu_temp = round(float(cpu_temp_raw)/1000, 1)
13         print (cpu_temp)
14         #如果温度大于47`C,就启动风扇
15         if cpu_temp >= 47 :
16                 commands.getoutput('sudo gpio write '+str(FAN_GPIO)+' 0')
17         #如果温度小于42`C,就关闭风扇
18         if cpu_temp <= 42 :
19                 commands.getoutput('sudo gpio write '+str(FAN_GPIO)+' 1')
20 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,脚本就能自动运行并打印日志了。

风扇也就能够自动控制了。
<对于脚本开机自启动,貌似可以做成一个服务的样子,便于管理。还没试过>

posted @ 2018-02-04 14:39  Kmeyel  阅读(1721)  评论(0编辑  收藏