WangXu's Blog

青春里 总有些事情要努力去做 总有些梦想要拼命去追。


  • 首页

  • 归档

  • 分类

  • 标签

  • 关于

python根据树莓派cpu温度控制风扇转动

发表于 2019-06-08   |   分类于 python   |   阅读次数 4,021

电磁继电器

电磁继电器通过电流的有无实现开关的控制,继电器工作时,当线圈通电后,线圈产生电磁吸力吸引衔铁带动触点运动,这里用到的电磁继电器包含常开、常闭和公共端共三个触点。

实现思路

每隔几秒获取一次cpu的温度,当温度大于某一阈值则风扇开始转动,当cpu温度小于某一阈值风扇停止转动。

CPU温度获取

树莓派中cpu的温度保存在/sys/class/thermal/thermal_zone0/temp文件中,直接读取该文件内容转化为数字除以1000即可得到我们需要的温度数值。

代码

# encoding: utf-8
import RPi.GPIO as GPIO
import time


# 获取cpu温度
def cpu_temp():
    f = open("/sys/class/thermal/thermal_zone0/temp", 'r')
    text = f.read()
    f.close()
    return float(text) / 1000


# 针脚编号
channel = 7


# 初始化针脚设置
def clean():
    GPIO.setwarnings(False)
    # BCM就是我们上面所说的07编号方式。
    GPIO.setmode(GPIO.BCM)
    # 设置channel=7的接口的编号方式是输出,默认是低电平。
    GPIO.setup(channel, GPIO.OUT, initial=GPIO.LOW)


# 打开风扇
def open_fun():
    GPIO.output(channel, GPIO.HIGH)


# 关闭风扇
def close_fun():
    GPIO.output(channel, GPIO.LOW)
    GPIO.cleanup()


def main():
    clean()
    is_close = True
    while True:
        temp = cpu_temp()
        if is_close:
            if temp > 30.0:
                open_fun()
                is_close = False
        else:
            if temp < 35.0:
                close_fun()
                is_close = True
        # 输出当前cpu温度
        print(temp)
        # 每5秒执行一次
        time.sleep(5.0)


if __name__ == '__main__':
    main()

执行

可以将代码设为开机自启动,或者后台执行,也可以使用screen或tmux放置到后台窗口执行。

树莓派

发表评论 取消回复

邮箱地址不会被公开。 必填项已用*标注

*
*


hoxis wechat
著作权归作者所有
python通过HC-SR501人体红外传感器判断是否有人
树莓派安装mjpg-streamer开启远程监控
  • 文章目录
  • 站点概览
WangXu

WangXu

青春里 总有些事情要努力去做 总有些梦想要拼命去追。

21 日志
11 分类
17 标签
RSS
weibo github twitter facebook

友情链接

若是凉夜已成梦
© 2019 WangXu
Powered by WordPress | 已运行
Theme By NexT.Mist
| 鲁ICP备16032225号-3 | 鲁ICP备16032225号-2