树莓派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,脚本就能自动运行并打印日志了。
风扇也就能够自动控制了。
<对于脚本开机自启动,貌似可以做成一个服务的样子,便于管理。还没试过>
来源:CSDN
作者:qq_15947947
链接:https://blog.csdn.net/qq_15947947/article/details/79637718