平时在使用树莓派的时候都是接上5V的散热风扇,风扇接上就开始工作,刚开始的时候还不觉得,但是时间长了风扇的声音特别的大。作为强迫症的博主来说,简直难以忍受。于是百度查询了相关帖子,使用树莓派的引脚来控制风扇,然后就有了这篇文章。
硬 件:树莓派B+ 软件环境:WiringPi库 材 料:PNP三极管 * 1 树莓派散5V热风扇 * 1 杜邦线 * 2
可以去WiringPi官网(WiringPi官网地址)下载相关源代码编译。先安装所需要的依赖。
#安装所需要的库
sudo apt-get install i2c-tools
sudo apt-get install libi2c-dev
安装WiringPi(我这里使用的是deb包来安装),如果用不了这个包的请使用源代码编译安装
# 下载deb包
wget https://lion.drogon.net/wiringpi-2.50-1.deb
# 安装
sudo dpkg -i wiringpi-2.50-1.deb
查看gpio版本和gpio信息
#查看版本信息
sudo gpio -v
#查看gpio引脚信息
sudo gpio readall
将会得到如下图的结果
首先先来看看树莓派的引脚定义
将三极管和风扇连接起来(原理图如下)
我觉得我有必要再贴上一张三极管的引脚图1(发射极)、2(基级)、3(集电极)
连接起来的效果图如下
通过命令行控制风扇的旋转,在wiringPi中8号引脚(TXD)的编码为15
#设置引脚为输出模式,执行以后风扇就开始旋转了
sudo gpio mode 15 output
#关闭风扇
sudo gpio write 15 1
#开启风扇
sudo gpio write 15 0
如何获取树莓派cpu温度?
# 将获取到的结果除以1000就是当前cup的温度
cat /sys/class/thermal/thermal_zone0/temp
既然可以通过shell控制风扇的开和闭,那么编写一个shell脚本扔到后台,执行脚本代码
#!/bin/bash
sudo gpio mode 15 output
while [[ 1 == 1 ]];do
cputemp=`sudo cat /sys/class/thermal/thermal_zone0/temp`
temp=$[ $cputemp/1000 ]
#温度大于47度开启风扇
if [[ $temp > 47 ]];then
sudo gpio write 15 0
fi
#温度小于39度关闭风扇
if [[ $temp < 39 ]];then
sudo gpio write 15 1
fi
sleep 4
done
设置开机自启和后台运行本脚本,打开文件/etc/rc.local 在倒数第二行添加如下代码
su pi -c "exec nohup /home/pi/fan.sh > /home/pi/fan.log &"