要使用Python来控制树莓派的CPU风扇,你可以利用GPIO(General Purpose Input/Output)接口。下面是一个简单的示例,展示了如何根据CPU温度动态控制风扇的开启和关闭。在这个例子中,我们将使用RPi.GPIO库来控制GPIO引脚。
首先,确保你已经安装了RPi.GPIO库,如果没有,可以通过以下命令安装:
sudo apt-get update
sudo apt-get install python3-rpi.gpio接下来,创建一个Python脚本来读取CPU温度,并基于这个温度控制风扇的启停:
import RPi.GPIO as GPIO
import time
import psutil
# 设置GPIO模式为BCM
GPIO.setmode(GPIO.BCM)
# 定义控制风扇的GPIO引脚
fan_pin = 18 # 假设你使用的是GPIO 18引脚
GPIO.setup(fan_pin, GPIO.OUT)
# 设置温度阈值
high_temp = 60.0
low_temp = 50.0
def read_cpu_temperature():
"""读取CPU温度"""
with open('/sys/class/thermal/thermal_zone0/temp', 'r') as file:
temp = float(file.read()) / 1000.0
return temp
try:
while True:
# 读取CPU温度
cpu_temp = read_cpu_temperature()
# 根据温度控制风扇
if cpu_temp >= high_temp and not GPIO.input(fan_pin):
print(f"CPU temperature is {cpu_temp:.1f}°C, turning on fan.")
GPIO.output(fan_pin, GPIO.HIGH)
elif cpu_temp < low_temp and GPIO.input(fan_pin):
print(f"CPU temperature is {cpu_temp:.1f}°C, turning off fan.")
GPIO.output(fan_pin, GPIO.LOW)
# 每隔一定时间检查一次
time.sleep(60)
finally:
# 清理GPIO
GPIO.cleanup()请注意,上面的代码会无限循环并持续监控CPU温度,因此如果你想要将它作为服务运行,可以将其放入一个守护进程中。例如,你可以创建一个systemd服务来运行这个脚本:
创建一个新的systemd服务文件:
sudo nano /etc/systemd/system/fancontrol.service在编辑器中输入以下内容:
[Unit] Description=Fan Control Service [Service] ExecStart=/usr/bin/python3 /path/to/your/fan_control_script.py Restart=always [Install] WantedBy=multi-user.target保存并退出编辑器。
重新加载systemd配置,并启用新服务:
深色版本
sudo systemctl daemon-reload sudo systemctl enable fancontrol.service启动服务:
sudo systemctl start fancontrol.service
现在,你的树莓派应该能够自动控制风扇,以保持CPU温度在一个合理的范围内。请根据实际情况调整温度阈值和风扇连接的GPIO引脚。
