树莓派系列(十三):根据 CPU 温度之控制散热风扇

2017-04-28 浏览:5498
树莓派系列(十三):根据 CPU 温度之控制散热风扇
评论:(3)复制地址

夏天快到了,又要给小板子降温了。之前做过一次,用的是外接L298n,后来冬天就撤了,5v驱动风扇噪音大。这两天看着板子温度不断上升,寻摸着再把风扇接上。找找老存货看看有啥能用的。


用到的材料:
1、树莓派
2、小风扇
3、杜邦线若干
4、继电器(5v 高电平触发) / 8050 NPN三极管(1kΩ电阻)


接线:
1、继电器IN接GPIO16
2、继电器VCC接5v
3、继电器GND接GND
4、风扇正极接继电器NO,COM接树莓派3.3v(NO位常开,3.3v噪音小)
5、风扇负极接树莓派GND

或:

1、三极管基极B串联一个1kΩ的电阻接GPIO16
2、风扇正极接树莓派3.3v (3.3v噪音小)
3、风扇负极接三极管集电极C
4、三极管发射极E接树莓派GND


代码:autofan.py

(防止不断启停设置了一个区间温度:大于35℃启动,低于27℃关闭)

import sys
import time
try:
    import RPi.GPIO as GPIO
except RuntimeError:
    print("Error importing RPi.GPIO!  This is probably because you need superuser privileges.  You can achieve this by using '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 = 16
    GPIO.setmode(GPIO.BOARD)
    GPIO.setwarnings(False)
    GPIO.setup(channel, GPIO.OUT)
    temp = cpu_temp()
    if temp >= 35:
    print time.ctime(), temp, "open fan"
    GPIO.output(channel, True)
    time.sleep(30)
    temp = cpu_temp()
        while temp >= 27.0: 
        time.sleep(30)
        temp = cpu_temp()        
    print time.ctime(), temp, "fan closed"
    GPIO.cleanup()
if __name__ == '__main__':
    main()

定时执行:

crontab -e

#autofan.py
*/1 * * * *  flock -xn /tmp/autofan.lock -c '/usr/bin/python /root/autofan.py' >> /home/log/autofan.log 2>&1 &


拓展知识:

利用 linux flock 锁机制

利用 flock(FreeBSD lockf,CentOS下为 flock),在脚本执行前先检测能否获取某个文件锁,以防止脚本运行冲突。


格式:

 flock [-sxun][-w #] fd#
 flock [-sxon][-w #] file [-c] command


选项:

 -s, --shared:    获得一个共享锁 
 -x, --exclusive: 获得一个独占锁 
 -u, --unlock:    移除一个锁,脚本执行完会自动丢弃锁 
 -n, --nonblock:  如果没有立即获得锁,直接失败而不是等待 
 -w, --timeout:   如果没有立即获得锁,等待指定时间 
 -o, --close:     在运行命令前关闭文件的描述符号。用于如果命令产生子进程时会不受锁的管控 
 -c, --command:   在shell中运行一个单独的命令 
 -h, --help       显示帮助 
 -V, --version:   显示版本


锁类型:
    共享锁:多个进程可以使用同一把锁,常被用作读共享锁
    独占锁:同时只允许一个进程使用,又称排他锁,写锁。

这里我们需要同时只允许一个进程使用,所以使用独占锁。


后面可以根据风扇启停和温度的日志,适当调整调整区间温度。


参考博文:

https://testerhome.com/topics/8068

http://blog.csdn.net/phachon/article/details/52106409

评论:(3)复制地址

评论列表:

太仓劳保用品

评论于2017-07-10 09:42:57
谢谢楼主分享,哈哈 - 回复该评论

加气块设备

评论于2017-07-20 09:40:31
感谢分享 - 回复该评论

eps线条厂家

评论于2018-07-09 14:39:48
没想到做个风扇也需要写代码,哈哈 - 回复该评论

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。