很多小伙伴还不了解树莓派是什么东西,这里首先进行一下科普
Raspberry Pi(中文名为“树莓派”,简写为RPi,(或者RasPi / RPI)是为学习计算机编程教育而设计,只有信用卡大小的微型电脑,载有一颗BroadCom的CPU,可以运行各种Linux For ARM,Windows 10 IoT,CPU与现代智能手机相同的ARM架构,运行Android也是完全没有问题。
其功耗低,身材小,板载的插座可以提供3/5V直流供电,具有SPI、I2C、UART串行通信接口,新版本的3B+还提供了PoE的功能,通过操作系统提供的RPi.GPIO库或其他封装库可以使用高阶语言快速实现不同的功能,比如你可以驱动一个LED,或者是驱动一块屏幕,甚至接一个摄像头用opencv打造一个人脸识别智能门锁。
购买树莓派时卖家送了一个壳子和一个极为普通的风扇,接在5V和GND上由输入电源直接供电,导致风扇一直运转,甚至在poweroff之后还在转,这怎么符合我的geek精神,于是决定改装他。
首先,改装需要杜邦线两根(剪断使用),杜邦线插座两个,一个三极管,NPN、PNP都行,如果是3B+以前的版本建议用NPN,或者PNP加个电阻,因为gpio输出的电平可能压降不够控制三极管通断,如果想做PWM也可以,但是需要用一个电容,不然风扇会由于PWM信号的方波导致发出滋滋的声音。
我这里用的是一个PNP,可以成功控制通断,估计是3b+的版本电平输出是5V。
将杜邦线剪短,长度适中
杜邦线插座一根焊到三极管的C极--接风扇正极,一根焊到剪开的杜邦线上接主板GND
三极管的B/E分别焊两根剪短的杜邦线,B接gpio,E接主板5V
下面是我的接线图
另外附上百度百科的照片
用透明胶固定,插到主板上
做好了之后大概是这个样子
然后写一段简单的Python
这里附上我的脚本,小伙伴们可以自己发挥
pi@raspberrypi:~$cat /opt/smartfan.py
#!/usr/bin/env python3
import RPi.GPIO as g
from time import sleep
TEMP=50
g.setmode(g.BCM)
channel = 18
g.setwarnings(False)
g.setup(channel, g.OUT)
g.output(channel, g.HIGH)
is_closed = True
try:
while True:
with open('/sys/class/thermal/thermal_zone0/temp') as f:
temp = int(f.read()) / 1000
if temp >= TEMP and is_closed == True:
g.output(channel, g.LOW)
is_closed = False
sleep(10)
elif temp < TEMP and is_closed == False:
g.output(channel, g.HIGH)
is_closed = True
sleep(1)
except:
g.output(channel, g.HIGH)
print("\nExit Programm Fan is Trun off")
然后用写一个服务让systemd管理
pi@raspberrypi:~$ cat /etc/systemd/system/smartfan.service
[Unit]
Description=smartfan
[Service]
Type=simple
RemainAfterExit=yes
ExecStart=/usr/bin/python3 /opt/smartfan.py
PrivateTmp=true
[Install]
WantedBy=multi-user.target
启动风扇
pi@raspberrypi:~$ systemctl start smartfan
查看状态
pi@raspberrypi:~$ systemctl status smartfan
smartfan.service - smartfan
Loaded: loaded (/etc/systemd/system/smartfan.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2018-05-22 22:47:19 CST; 1h 17min ago
Main PID: 322 (python3)
CGroup: /system.slice/smartfan.service
└─322 /usr/bin/python3 /opt/smartfan.py
May 22 22:47:19 raspberrypi systemd[1]: Started smartfan.
pi@raspberrypi:~$
让他开机自启动
pi@raspberrypi:~$ systemctl enable smartfan
到这里我们的智能风扇就可以根据温度自动开关了。
如果觉得不够智能,可以再找一颗电容,用pwm控制风扇转速,这样就更完美了。