집에 예전에 사둔 라즈베리 파이 3(raspberry pi 3)에 openmediavault 설치해서 nas 용도로 사용하고 있는데, 이 놈의 온도가 올라가면 불안해 보이는거 같아서 팬을 달 수 있는 케이스를 구매 했습니다.
그런데 구매를 해서 제품을 받았는데.. 깜짝 놀란게.. 팬을 연결했더니.. 너무나 시끄러운거 였습니다. 어찌나 존재감이 느껴지던지..
그래서, 이걸 어떻게 필요 할 때만 돌릴수 없을까 검색을 했더니.. 아래와 같은 포스팅이 나왔습니다.
아~ 간단하네.. 해 볼까.. 하지만.. 가정집에 트랜지스터가 있을리가 없겠죠?
동네에서 어디서 사야 할지도 모르겠고, 제품 가격보다.. 배송비가 더 들겠다는 생각에..
알리익스프레스에서 가장 저렴하게 트랜지스터를 구할 방법을 찾아 봐서..
이런걸 찾았습니다. 그래.. 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
댓글