要使用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服务来运行这个脚本:

  1. 创建一个新的systemd服务文件:

    sudo nano /etc/systemd/system/fancontrol.service
  2. 在编辑器中输入以下内容:

    [Unit]
    Description=Fan Control Service
    
    [Service]
    ExecStart=/usr/bin/python3 /path/to/your/fan_control_script.py
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
  3. 保存并退出编辑器。

  4. 重新加载systemd配置,并启用新服务:

    深色版本

    sudo systemctl daemon-reload
    sudo systemctl enable fancontrol.service
  5. 启动服务:

    sudo systemctl start fancontrol.service

现在,你的树莓派应该能够自动控制风扇,以保持CPU温度在一个合理的范围内。请根据实际情况调整温度阈值和风扇连接的GPIO引脚。