python控制风扇_树莓派 温度监控 PWM 控制风扇 shell python c 语言

硬件需求

树莓派(这里用的3代B);

5V小风扇;

NPN三极管,我用的s8050;

面包板加杜邦线,或者用电烙铁。

硬件接法:

先把电扇直接接到树莓派上测试一下哪根线是+极,然后把风扇+极直接接在树莓派的5V上,-极接在三极管集电极Collector。

(从三极管平的那面看)

三极管发射极Emitter接树莓派GND,基极Base接树莓派Pin12#(GPIO18)(GPIO_GEN1),资料表明只有这个针脚可以启用软件pwm,其他针脚我也没有试过。

软件需求

安装GPIO驱动,这里使用C语言编写的wiringPi,安装步骤看这里。

在按照上面的方法连接好风扇以后,风扇是不会转的,此时可以先手动控制风扇测试一下,在终端中输入以下命令开启风扇

gpio mode 1pwm

gpio pwm1 1023

正常情况下风扇应该会开始全速运转。

可以使用gpio readall命令查看针脚信息,针脚模式应该显示ALT5,见下图。

设置风扇自动调速:

新建一个cpu_fan.sh文件,输入以下内容

#!/bin/sh#sleep 5#设置运行状态文件

RUN=/var/run/cpu-fan.runtouch$RUNchmod 777$RUN

#设置风扇默认运行模式,0为关闭,1为全速,2为自动,运行过程中可以直接修改/var/run/cpu-fan.run文件来生效echo "2" >$RUN

#设置开启风扇的最低温度

set_temp_min=35000#设置关闭风扇温度比最低温度小1度

shutdown_temp=`expr $set_temp_min - 1000`

#设置风扇全速运行的温度

set_temp_max=70000#开机风扇全速运行

#默认的pwm值范围是0~1023gpio mode1pwm

gpio pwm1 1023#初始化参数

fan=0

while true

do#获取cpu温度

tmp=`cat /sys/class/thermal/thermal_zone0/temp`

status=`cat$RUN`

#计算pwm值,从变量set_temp_min设置的温度开始开启风扇,最低转速50%pwm=$((($tmp-$set_temp_min)*512/($set_temp_max-$set_temp_min)+511))

#设置pwm值上限if [ $pwm -gt 1023 ] ;thenpwm=1023

fi#小于设置温度关闭风扇if [ $tmp -le $shutdown_temp ] ;thenpwm=0fan=0

else#第一次超过设置温度全速开启风扇,防止风扇不能启动if [ $tmp -gt $set_temp_min ] && [ $fan -eq 0 ] ;thengpio pwm1 1023fan=1

sleep 5

fi

fi#检查run文件,为0时关闭风扇if [ $status -eq 0 ] ;thenpwm=0fan=0

else#检查run文件,为1时持续开启风扇最高转速if [ $status -eq 1 ] ;thenpwm=1023

fi

figpio pwm1$pwm

#每5秒钟检查一次温度sleep 5#输出日志,不需要的可注释掉echo "`date` temp=$tmp pwm=$pwm status=$status" >> /var/log/cpu-fan/cpu-fan.logdone

配置日志自动管理:

新建/etc/logrotate.d/cpu-fan文件,输入以下内容

/var/log/cpu-fan/cpu-fan.log {suroot

rotate7daily

compress

delaycompress

missingok

notifempty

create666root root

}

由于脚本运行在一般用户下,所以对日志文件的访问会产生权限问题,第一次运行的时候需要将/var/log/cpu-fan/cpu-fan.log文件的组和拥有者改为root,文件权限改为666

mkdir /var/log/cpu-fanchown root:root /var/log/cpu-fanchmod 777 /var/log/cpu-fantouch /var/log/cpu-fan/cpu-fan.logchown root:root /var/log/cpu-fan/cpu-fan.logchmod 666 /var/log/cpu-fan/cpu-fan.log

设置开机自动运行

在/etc/rc.local文件中添加以下内容

su -c /home/xbian/cpu_fan.sh xbian

我这里装的是xbian的系统,所以用户名是xbian,如果用的是官方rasbian系统,用户名就是pi。

这里需要注意的是,如果使用root用户开机运行脚本,会发生bug,脚本不会发生作用。另外还需要关闭lirc服务,否则会导致cpu占用率100%。

如果开机完成后手动运行脚本则没有任何问题,目前尚不知道bug产生的具体原因,上述问题可能都跟gpio驱动有关系。

Python

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值