如何为你宝贵的树莓派定做一个温控风扇
文章参考:树莓派3B PNP三极管 智能温控风扇
需要的材料
杜邦线
需要所有的三种杜邦线——公对公、公对母、母对母。
PNP三极管
推荐TO-92型号的三极管,符合教程的需求。
一个1kΩ的电阻
推荐金属膜电阻,方便耐用。
硬件安装
首先,熟悉一下TO-92的引脚分布图,下图是扁平的那一面。
然后,熟悉一下树莓派的GPIO引脚分布图
首先,用杜邦线把树莓派的5V和风扇的红线接到一起,电就走到风扇正极了,但此时电路还没接地,没有电流通过。
再拿一个杜邦线,把风扇的黑线和三极管的发射级(Emitter)接到一起,这样电就从风扇走到了三极管了。
再拿一根杜邦线,把三极管的集电级(Collector)和树莓派的GND地线(BOARD编码为6、9、14、20、25、30、34、39,随便选一个)接在一起,这样电就流经三极管到达地面了,电通路就完整了。
但是此时风扇不会转,因为PNP三极管默认是断开状态,除非给向它的基极(BASE)输出低电平。
选择一(有钱人OR懒人)
直接把三极管基极连到任意一个GPIO针脚上,完成。
- 优势:省了一小步
- 劣势:三极管寿命会很短
选择二
拿出一根杜邦线,再拿1个1kΩ的电阻,把三极管基极和电阻接起来。
再拿出一根杜邦线,把电阻另一头和某个GPIO针脚连起来,我用的是18号(BCM编号)的GPIO针脚。
恭喜,硬件安装完成。
代码执行
安装python以及pip
在Terminal中输入1
2sudo apt install python
sudo apt install python-pip
RPi.GPIO库
在Terminal中输入1
pip install RPi.GPIO
创建一个Python文件:cool.py,记住文件的位置。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42# -*- coding: utf-8 -*-
from RPi import GPIO
import time
# 超过40度启动
upper_temp = 40
# 低于35度关闭
lower_temp = 35
# 采用BCM引脚编号
GPIO.setmode(GPIO.BCM)
# 关闭警告
GPIO.setwarnings(False)
# 控制三级管的GPIO编号
channel = 18
# 初始GPIO输出高电平, 风扇不转
GPIO.setup(channel, GPIO.OUT, initial = GPIO.HIGH)
# 获取树莓派温度的函数
def get_temp():
with open('/sys/class/thermal/thermal_zone0/temp') as fp:
return int(fp.read()) / 1000
# 进入检测
try:
while True:
# 获取当前温度
temp = get_temp()
print temp
# 如果大于上限, 则给低电平, 闭合三极管
if temp >= upper_temp:
GPIO.output(channel, GPIO.LOW)
elif temp < lower_temp: # 低于下限, 则给高电平, 断开三极管
GPIO.output(channel, GPIO.HIGH)
# 每隔10秒检测1次
time.sleep(10)
except Exception, e:
print(e)
# 重置GPIO状态
GPIO.cleanup()
接下来,在root账户下测试1
2sudo su
python3 cool.py
出现如下图所示即为成功。
设置开机启动
进入Terminal,输入1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18[Unit]
服务描述
Description=smart fan
[Service]
简单服务
Type=simple
运行用户与用户组
User=root
Group=root
进程退出立即重启
Restart=always
执行命令,后面目录自行更改
ExecStart=/usr/bin/python /root/cool.py
[Install]
在系统启动后加载UNIT
WantedBy=multi-user.target
启动服务1
2sudo systemctl enable pi-temp.service
sudo systemctl start pi-temp.service
恭喜,完成配置!