电磁继电器
电磁继电器通过电流的有无实现开关的控制,继电器工作时,当线圈通电后,线圈产生电磁吸力吸引衔铁带动触点运动,这里用到的电磁继电器包含常开、常闭和公共端共三个触点。
实现思路
每隔几秒获取一次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放置到后台窗口执行。