본문 바로가기
컴퓨터/Linux

라즈베리 파이 3 팬 컨트롤하기

by 신규하 2018. 5. 5.

집에 예전에 사둔 라즈베리 파이 3(raspberry pi 3)에 openmediavault 설치해서 nas 용도로 사용하고 있는데, 이 놈의 온도가 올라가면 불안해 보이는거 같아서 팬을 달 수 있는 케이스를 구매 했습니다.
그런데 구매를 해서 제품을 받았는데.. 깜짝 놀란게.. 팬을 연결했더니.. 너무나 시끄러운거 였습니다. 어찌나 존재감이 느껴지던지..
그래서, 이걸 어떻게 필요 할 때만 돌릴수 없을까 검색을 했더니.. 아래와 같은 포스팅이 나왔습니다.

[워크식스] 라즈베리파이로 팬(쿨러) 컨트롤 하기

아~ 간단하네.. 해 볼까.. 하지만.. 가정집에 트랜지스터가 있을리가 없겠죠?
동네에서 어디서 사야 할지도 모르겠고, 제품 가격보다.. 배송비가 더 들겠다는 생각에..
알리익스프레스에서 가장 저렴하게 트랜지스터를 구할 방법을 찾아 봐서..

5MM Light LED Blue Simple Flash Circuit DIY Kit Module Transistor 30K Resistance 22UF Electrolytic Capacitors Dupont Cable Board

이런걸 찾았습니다. 그래.. 800원 정도면.. 괜찮겠다.. 싶어서.. 이걸 구매하고 한달을 기다렸습니다 ^^;;;

조립하기


그냥.. 위에꺼 보고 그대로 조립 했습니다. 


팬 제어하기

팬 제어 소프트웨어는 간편한 python으로 진행 했습니다.
먼저 기본으로 RPi.GPIO가 설치가 되어 있지 않아서 설치를 했습니다.

sudo apt-get install python-rpi.gpio

그리고, 아래와 같이 코드를 작성 했습니다.
저 같은 경우에는 21번 핀에 50도 기준으로 제작을 했습니다.

import os
import RPi.GPIO as GPIO
from time import sleep

pin = 21
maxTmp = 50

def setup():
        GPIO.setmode(GPIO.BCM)
        GPIO.setup(pin, GPIO.OUT)
        GPIO.setwarnings(False)

def getCPUTemperature():
        temp = os.popen("vcgencmd measure_temp").readline()
        return (temp.replace("temp=","").replace("'C\n",""))

def checkTemperature():
        CPU_temp = float(getCPUTemperature())
        if CPU_temp>maxTmp:
                GPIO.output(pin, True)
        else:
                GPIO.output(pin, False)

try:
        setup()
        while True:
                checkTemperature()
                sleep(5)
except KeyboardInterrupt:
        GPIO.cleanup()

서비스 등록하기

아래 같이 fancontrol이라는 서비스를 하나 만들어 주고 팬 프로그램을 실행 하도록 했습니다.

sudo vi /etc/systemd/system/fancontrol.service
그리고, 아래와 같이 입력 합니다. 파이썬 실행 파일은 각자 파일이 있는 위치로 정해 줍니다.

[Unit]
After=multi-user.target

[Service]
ExecStart=/usr/bin/python /opt/fancontrol.py

[Install]
WantedBy=default.target

편집이 끝났으면 서비스를 등록해 줍니다.

sudo systemctl daemon-reload
sudo systemctl enable fancontrol
sudo systemctl start fancontrol

그리고, 잘 실행 되고 있는지 확인 합니다.

sudo systemctl status fancontrol



댓글