香橙派Orange-Pi-Zero-3 塑料外壳 添加 python代码温控CPU小风扇

本文介绍了如何为OrangePiZero3升级硬件,包括更换散热片、安装风扇,以及详细步骤刷机和配置wiringOP-Python以监控CPU温度并自动控制风扇。文章还提及了如何通过Docker利用官方Linux系统扩展功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

orangepi Zero3 最近价格很亲民,所以做项目比较划算。

由于之前的Nanopi NEO3 开发板是塑胶盒子CPU是集成铝合金散热,他们都因为没有风扇降温,导致因为温度飙升80-90度导致经常死机。

一,材料:

1,Zero3(2G)单独主板 + 散热片+32G-TF卡。

2,某宝上面买的塑胶外壳+风扇+内置天线。

3,S8050三极管+100欧姆电阻+热缩管若干。

接线图:

二,刷机, 

根据官网下载/:Orange Pi Zero3

根据说明来刷机:我刷的是:Orangepizero3_1.0.0_debian_bookworm_server_linux6.1.31。

大家可以根据实际情况刷其他系统,ubuntu镜像,debian镜像,都可以的。

三,根据用户手册来安装 wiringOP-Python。

引用 OrangePi_Zero3_H618_用户手册_v1.1.pdf 用户手册内容如下:

3.19. wiringOP-Python 的安装使用方法

wiringOP-Python 是 wiringOP 的 Python 语言版本的库, 用于在 Python 程序中

操作开发板的 GPIO、I2C、SPI 和 UART 等硬件资源。

另外请注意下面所有的命令都是在 root用户下操作的。

3.19.1. wiringOP-Python的安装方法

1) 首先安装依赖包

root@orangepi:~# sudo apt-get update

root@orangepi:~# sudo apt-get -y install git swig python3-dev python3-setuptools

2) 然后使用下面的命令下载 wiringOP-Python 的源码

注意,下面的 git clone--recursive 命令会自动下载 wiringOP 的源码,因为

wiringOP-Python 是依赖 wiringOP 的。请确保下载过程没有因为网络问题而报错。

如果从 GitHub 下载代码有问题,可以直接使用 Linux 镜像中自带的

wiringOP-Python 源码,存放位置为:/usr/src/wiringOP-Python。

root@orangepi:~# git clone --recursive https://github.com/orangepi-xunlong/wiringOP-Python -b next

root@orangepi:~# cd wiringOP-Python

root@orangepi:~/wiringOP-Python# git submodule update --init --remote

3) 然后使用下面的命令编译 wiringOP-Python 并将其安装到开发板的 Linux 系统中

root@orangepi:~# cd wiringOP-Python

root@orangepi:~/wiringOP-Python# python3 generate-bindings.py > bindings.i

root@orangepi:~/wiringOP-Python# sudo python3 setup.py install

4) 然后输入下面的命令,如果有帮助信息输出,说明 wiringOP-Python 安装成功,

按下 q键可以退出帮助信息的界面

root@orangepi:~/wiringOP-Python# python3 -c "import wiringpi; help(wiringpi)"

Help on module wiringpi:

NAME

wiringpi

2) 直接用命令测试的步骤如下所示:

a. 首先设置 GPIO 口为输出模式,其中 pinMode 函数的第一个参数是引脚对

应的 wPi 的序号,第二个参数是 GPIO的模式

root@orangepi:~/wiringOP-Python# python3 -c "import wiringpi; \

from wiringpi import GPIO; wiringpi.wiringPiSetup() ; \

wiringpi.pinMode(2, GPIO.OUTPUT) ; "

b. 然后设置 GPIO 口输出低电平, 设置完后可以使用万用表测量引脚的电压的

数值,如果为 0v,说明设置低电平成功

root@orangepi:~/wiringOP-Python# python3 -c "import wiringpi; \

from wiringpi import GPIO; wiringpi.wiringPiSetup() ;\

wiringpi.digitalWrite(2, GPIO.LOW)"

c. 然后设置 GPIO 口输出高电平, 设置完后可以使用万用表测量引脚的电压的

数值,如果为 3.3v,说明设置高电平成功

root@orangepi:~/wiringOP-Python# python3 -c "import wiringpi; \

from wiringpi import GPIO; wiringpi.wiringPiSetup() ;\

wiringpi.digitalWrite(2, GPIO.HIGH)"

3) 在 python3 的命令行中测试的步骤如下所示:

a. 首先使用 python3 命令进入 python3 的命令行模式

root@orangepi:~# python3

b. 然后导入 wiringpi 的 python 模块

>>> import wiringpi

>>> from wiringpi import GPIO

c. 然后设置 GPIO 口为输出模式,其中 pinMode 函数的第一个参数是引脚对

应的 wPi 的序号,第二个参数是 GPIO的模式

>>> wiringpi.wiringPiSetup()

0

>>> wiringpi.pinMode(2, GPIO.OUTPUT)

d. 然后设置 GPIO 口输出低电平, 设置完后可以使用万用表测量引脚的电压的

数值,如果为 0v,说明设置低电平成功

>>> wiringpi.digitalWrite(2, GPIO.LOW)

e. 然后设置 GPIO 口输出高电平, 设置完后可以使用万用表测量引脚的电压的

数值,如果为 3.3v,说明设置高电平成功

>>> wiringpi.digitalWrite(2, GPIO.HIGH)

测试代码如下。

import wiringpi
from wiringpi import GPIO
wiringpi.wiringPiSetup()
wiringpi.pinMode(17, GPIO.OUTPUT) 
wiringpi.digitalWrite(17, GPIO.LOW)
wiringpi.digitalWrite(17, GPIO.HIGH)
 说明:17对应是GPIO的第四个脚,其他引脚也可以用作GPIO脚,具体可以按照说明来选取。
root@orangepizero3:~# gpio readall  # 来查询脚的情况。

四,我实际的接线位置图片。

五,散热风扇的 python程序运行代码:


# -*- coding:utf-8 -*-

"""
根据Orange-Pi CPU温度开启与关闭风扇
"""

import time, os
import wiringpi
from wiringpi import GPIO
import logging

GPIO_OUT = 17
START_TEMP = 60
CLOSE_TEMP = 45
DELAY_TIME = 5
LOG_PATH = '/var/log/fan_control.log'

logging.basicConfig(level=logging.DEBUG,
                    format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',  # 日志格式
                    datefmt='%Y-%m-%d %H:%M:%S',  # 时间格式
                    filename=LOG_PATH,  # 日志的输出路径
                    filemode='a')  # 追加模式

def get_cpu_temperature():
    """
    获取CPU温度, 读取/sys/class/thermal/thermal_zone0/temp内容, 除1000就是温度
    :return: float
    """
    with open("/sys/class/thermal/thermal_zone0/temp", 'r') as f:
        temperature = float(f.read()) / 1000
    return temperature


def start_fan(temp):
    """
    开启风扇
    :param temp: CPU温度
    :return:
    """
    logging.info('power on fan, temp is %s' % temp)
    # PNP型三极管基极施加低电平时才导通电路, NPN型三极管相反
    wiringpi.digitalWrite(GPIO_OUT, GPIO.HIGH)


def stop_fan(temp):
    """
    关闭风扇
    :param temp: CPU温度
    :return:
    """
    logging.info('power off fan, temp is %s' % temp)
    # 基级施加高电平
    wiringpi.digitalWrite(GPIO_OUT, GPIO.LOW)


def setup_GPIO():
    """
    GPIO初始化
    风扇设置为关闭状态
    :return:
    """
    wiringpi.wiringPiSetup()
    wiringpi.pinMode(GPIO_OUT, GPIO.OUTPUT) 


def control_fan():
    is_closed = True
    try:
        while True:
            temp = get_cpu_temperature()
            logging.debug("temperature: %s" % temp)
            # 温度大于START_TEMP开启风扇, 低于CLOSE_TEMP关闭风扇
            if (temp > START_TEMP and is_closed):
                start_fan(temp)
                is_closed = False
            elif (temp < CLOSE_TEMP and not is_closed):
                stop_fan(temp)
                is_closed = True
            else:
                pass
            time.sleep(DELAY_TIME)
    except Exception as e:
        GPIO.cleanup()
        logging.error(e)

if __name__ == '__main__':
    os.environ["TZ"] = 'Asia/Shanghai'
    time.tzset()
    logging.info('started control fan...')
    setup_GPIO()
    control_fan()
    logging.info('quit started control fan...')

参考链接:

树莓派实现温控风扇_树莓派风扇引脚-CSDN博客

六,添加python脚本和开机自动运行程序。

1,添加python 程序。
root@orangepizero3:~# sudo vim smartfan.py

把上面 散热风扇的 python程序运行代码:复制里面,然后 Esc 退出 :wq 保存。

2, 先运行调试一下。
sudo python -u /root/smartfan.py  &

运行有代码输出确认无误后进行下一步操作。  

2,让Python脚本开机自动启动

假如Python自启动脚本为smartfan.py。那么用root权限编辑以下文件:

sudo vim /etc/rc.local

在exit 0上面添加启动脚本的命令

nohup python -u /root/smartfan.py > /root/smartfan.log 2>&1 &

然后 Esc 退出 :wq 保存。

最后重启Linux,脚本就能自动运行并打印日志了。

七,调试状态:  

1,查看温度。

cat /sys/devices/virtual/thermal/thermal_zone0/temp

2,运行圆周率,CPU压力测试令到CPU迅速升温。

root@orangepizero3:~# echo "scale=50000; 4*a(1)" | bc -l -q

 

3,实时查询日志记录。

root@orangepizero3:~# tail -f /var/log/fan_control.log

4,当超过60度风扇转动,当温度低于45度风扇停止转动。

 5, 运行了几天后用Jupyter Notebook python 做了个图表,CPU温度一直在45度-60度之间稳定波动。

八, 官方的linux系统自带Docker。

九,结束:

加了散热和风扇后可作的用途更多:
Linux 桌面计算机。
Linux 网络服务器。
openwrt的路由盒子。
打印机服务器。
建立自己的博客服务器。
Android TV电视盒子。

香橙派zero 3 塑料外壳 OrangePi Zero3 H618开发板外壳 散热壳

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值