万博网页版登陆页派论坛

【Alu-case】控制风扇自动运行

unveiling 发表于 2013-9-29 09:46:03 | 显示全部楼层 |阅读模式
本帖最后由 unveiling 于 2013-9-29 09:46 编辑

上一次加了风扇,具体见链接http://www.shumeipai.net/thread-19559-1-1.html

一直开着不够环保啊。于是想利用继电器控制风扇在cpu温度超过50摄氏度后自动运行,低于50摄氏度则停止。
万博网页版登陆页派的GPIO接口提供了这种可能。

所需材料:
  • 4cm风扇一只
  • 3v继电器一只
  • 导线若干
  • 松香
  • 焊锡丝

  • 继电器图片
    20130929_092343.jpg
    继电器接口图
    20130922_110207.jpg

    所需工具:
  • 烙铁
  • 镊子

  • GPIO控制:使用python程序。

    硬件连接:
  • 风扇正极接继电器公共端
  • 继电器长开端接pin4
  • 风扇负极接pin6
  • 继电器控制端一端接pin11
  • 另一端与风扇负极合并
  • 20130929_092511.jpg
    完工图,比较糙。各位看官将就一下。

    Python控制程序:


    1. import RPi.GPIO as GPIO
    2. import time
    3. import os

    4. #创建日志文件,记录温度变化
    5. fanlog=open('/home/pi/fanlog.log','w')

    6. # GPIO setup
    7. GPIO.setmode(GPIO.BOARD) #设置GPIO针脚指定方式
    8. GPIO.setup(11,GPIO.OUT) #设定pin11为信号输出

    9. while True:
    10. #获取cpu温度
    11.     res=os.popen('vcgencmd measure_temp').readline()
    12.     res=res.replace("temp=","").replace("'C\n","")
    13.     res=float(res)
    14.     fanlog.write('%-5.2f\n' %res)
    15.     fanlog.write(time.strftime('%Y/%m/%d %H:%M:%S',time.localtime()))
    16.     fanlog.write("\n")
    17.    
    18.     if res>50:   #如果温度高于50,pin11输出高电平,风扇启动
    19.         GPIO.output(11,True)
    20.     else:    #如果温度低于50,pin11输出低电平,风扇关闭
    21.         GPIO.output(11,False)
    22.    
    23.     time.sleep(300)  #每隔5分钟,即300秒做一个温度检测
    复制代码
    将上面程序保存在/home/pi目录,命名为Fan.py
    在shell中执行:
    1. sudo python Fan.py
    复制代码
    检查fanlog.log查看运行结果:
    fan.jpg


    看见萤火虫 发表于 2013-9-29 21:12:14 | 显示全部楼层
    不用继电器能否直接控制风扇开关?
    unveiling  楼主| 发表于 2013-9-30 13:48:22 | 显示全部楼层
    理论上找个3v的小风扇应该可以。
    fanta 发表于 2013-10-9 12:53:22 | 显示全部楼层
    本帖最后由 fanta 于 2013-10-9 13:12 编辑

    这个比较实用,不懂编程的来学习学习,问个问题,5v继电器行不~~
    unveiling  楼主| 发表于 2013-10-10 13:59:45 | 显示全部楼层
    fanta 发表于 2013-10-9 12:53
    这个比较实用,不懂编程的来学习学习,问个问题,5v继电器行不~~

    5v的不行吧。gpio都是3v。
    rogeryu 发表于 2013-10-12 20:06:48 | 显示全部楼层
    裝那一版的Python 3.x (看起來是裝3.x)
    有裝什麼module 嗎?
    運行老是報錯~~
    rogeryu 发表于 2013-10-12 20:43:07 | 显示全部楼层
    File "Fan.py", line 13, in <module>
        res=os.popen('vcgencmd measure_temp').readline()
    KeyboardInterrupt

    一直出現這個,沒有辦法運行
    rogeryu 发表于 2013-10-13 23:34:35 | 显示全部楼层
    你這是理論還是實作,代碼我改了一點才能工作,零件只有這樣嗎?這樣接上繼電器,當工作時~pin11(GPIO17)送出電壓通過繼電器線圈到GND,會造成短路,跟本無法輸出,若在pin11(GPIO17)到繼電器中間加入二極體,也只有1.6v的電壓,3v的繼電器也跟本無法工作,難到我們的pcb不一樣嗎?還是你的pcb有改了什麼零件,我的pcb是000e版(請參考這裡http://elinux.org/RPi_HardwareHistory),你的是什麼版本,煩請解答~
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    手机版 | Archiver | 万博网页版登陆页派论坛 ( 粤ICP备15075382号-1 )