树莓派根据温度自动控制风扇的启停

分类: 树莓派折腾笔记 0人评论 3月前发布

前言

风扇对树莓派来说貌似不是必须,官方也没说要使用风扇,但有总比没有好,一般的树莓派盒子都会留个风扇位,就像我淘来的这块树莓派已经预装了一个小风扇。

问题

这是一个5v的小风扇,默认插在以下两个针脚

图片说明

插上电源即转,不管你温度多少度,甚至树莓派关机状态它也转。

白天还好没啥感觉,到了晚上这小风扇的噪音真不可忽视吵的人烦燥,我看了下cpu温度才26度左右,能耗上来说也是浪费,想着能不能自动启停达到一定温度再转呢?

网上已经有不少人有相同的遭遇,解决方案也都有了,我们可以直接搬来参考。

查看针脚图

树莓派的GPIO可以控制电源的输出,所以我们先要了解一下树莓派的针脚图。

可以使用命令: gpio readall

pi@raspberrypi:~ $ gpio readall
Oops - unable to determine board type... model: 17

但是我在用的时候却发现上面错误,查询资料应该是wiringpi的版本太低导致,参考文档:

http://wiringpi.com/wiringpi-updated-to-2-52-for-the-raspberry-pi-4b/

更新:

cd /tmp
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb

更新之后便正常,上面那张即是我树莓派的针脚图。

硬件安装

树莓派GPIO的输出是3.3v,小风扇是5v,看网上方案都说要接三级管增强电压啥的,这玩意虽然不值钱但是我没有啊,走个淘宝还没邮费零头贵。

以我小时候多年拆装玩具的经验,5v的小电器3.3v供电虽说马力不强,但勉强应该能用的起来才对,就先试试。

将小风扇的两个针角改插到以下两个位置:

图片说明

地线不变,俗称的火线改换到GPIO,可以看到上图中Mode已经为OUT了,因为截图时我已经设置完了。

实测不加三级管也可以用,就是风扇转的慢一点,但是也够用了。

软件控制

上面针脚都已经接好,接下来就是写脚本进行控制了。

网上很多都是python控制,其实用shell就可以完成。

以下是控制的shell脚本:

    #!/bin/bash
    echo "$(date "+%Y-%m-%d %H:%M:%S") start fan control"
    sudo gpio mode 1 output
    while [[ 1 == 1 ]];do
        cputemp=`cat /sys/class/thermal/thermal_zone0/temp`
        temp=$[ $cputemp/1000 ]
        time=$(date "+%Y-%m-%d %H:%M:%S")
        #温度大于55度开启风扇
        if [[ $temp > 55 ]];then
            sudo gpio write 1 1
            echo "$time 开启风扇,当前温度:$temp"
        fi
        #温度小于48度关闭风扇
        if [[ $temp < 48 ]];then
            sudo gpio write 1 0
            echo "$time 关闭风扇,当前温度:$temp"
        fi
        sleep 10
    done

最后,在/etc/rc.local文件的 exit 0 之前添加一行,让脚本开机启动:

su pi -c "exec nohup /home/pi/fan.sh > /home/pi/fan.log &"
上一篇:
下一篇:
没有了

你可能感兴趣的文章

0 条评论