0%

如何为你宝贵的树莓派定做一个温控风扇

如何为你宝贵的树莓派定做一个温控风扇

文章参考:树莓派3B PNP三极管 智能温控风扇

需要的材料

杜邦线

需要所有的三种杜邦线——公对公、公对母、母对母。

PNP三极管

推荐TO-92型号的三极管,符合教程的需求。

一个1kΩ的电阻

推荐金属膜电阻,方便耐用。

硬件安装

首先,熟悉一下TO-92的引脚分布图,下图是扁平的那一面。

TO-92

然后,熟悉一下树莓派的GPIO引脚分布图

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
2
sudo 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
2
sudo su
python3 cool.py

出现如下图所示即为成功。

test

设置开机启动

进入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
2
sudo systemctl enable pi-temp.service
sudo systemctl start pi-temp.service

恭喜,完成配置!

最后:点赞,收藏,评论!!