본 페이지에서는 라즈베리파이를 이용해서 파워 릴레이를 제어하는 방법에 대해서 기술하고자 합니다. 라즈베리파이와 릴레이만 있으면 손쉽게 파워를 제어할 수 있습니다.
개요
라즈베리파이는 작고 저렴하지만 활용도가 무궁무진합니다. 직장에서 라즈베리파이와 파워 릴레이를 활용하여 개발중인 제품의 자동화 테스트에 응용하기도 했습니다. GitHub에 소스코드가 Pull Request 되면 Jenkins를 연동하여 자동으로 Firmware를 빌드하고, 빌드된 FW는 다시 라즈베리파이에 전송되어 자동으로 제품에 다운로드 된 후에 기본적인 테스트가 수행되는 구조입니다.
본 페이지에서는 그 중에서도 라즈베리파이의 GPO를 이용하여 제품의 전원을 on/off하는 방법에 대해서 설명드리고자 합니다.
준비물
파워 제어를 위해서는 릴레이가 필요합니다. 또한 전원 케이블을 탈피하기 위한 탈피기가 있으면 좋습니다. 점퍼케이블은 총 3가닥이 필요하고 각각 Vcc, Gnd, Sig로 사용합니다.
준비물 | 수량 | 비고 |
라즈베리파이 | 1 EA | 저는 라즈베리파이 4B를 사용하였습니다. |
릴레이 | 1 EA | 10A 250VAC 10A 30VDC SRD-05VDC-SL-C |
점퍼 케이블 (F to F) | 3 EA | VCC, GND, SIG |
탈피기 | 1 set |
사용한 릴레이는 10A 250VAC까지 허용되는 제품으로 릴레이 동작 전원은 5V인 제품입니다.
회로 구성
핀맵은 아래와 같습니다. 릴레이 VCC에 5V를 연결하고, 릴레이 GND에 라즈베리파이의 GNC를 연결한 후 SIGNAL은 GPIO14로 연결하였습니다.
핀맵을 테이블로 표현하면 아래와 같습니다.
핀번호 | 핀네임 | 사용 목적 | 비고 |
2 | 5V | 릴레이 동작 전원 5V 인가 | |
8 | GPIO14 | 릴레이 On/Off 제어 신호 | |
16 | GND | 릴레이 그라운드 |
위의 핀맵은 하나의 예제입니다. 이미 사용중인 포트와 중복될 경우 다른 적당한 포트로 옮기셔도 됩니다.
※ 라즈베리파이 회로도 링크
2021.01.19 - [Study/라즈베리파이 공부] - 라즈베리파이 회로도 & Data Sheet
소스 코드
VCC와 GND는 제어가 필요없는 전원에 불가하므로, 실제로 제어가 필요한 포트는 GPIO14 밖에 없습니다. 참고로 제가 사용한 릴레이는 Low Active이므로 High 출력시에 Off되고, Low 출력시 On이 되는 구조입니다. 따라서 Python 스크립트로 True를 출력하면 릴레이 스위치가 떨어져 Off가 되고, False를 출력하면 릴레이 스위치가 붙어서 On이 된다는 점에 주의하시기 바랍니다.
Power On을 위한 스크립트
import RPi.GPIO as GPIO
#GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(14, GPIO.OUT)
GPIO.output(14, False) #Low Active
전원을 공급하기 위한 Python 스크립트입니다. 스크립트는 아래 GitHub 주소에서 다운로드하시면 됩니다.
https://raw.githubusercontent.com/boyinblue/raspberry/main/pwr/pwr_on.py
$ sudo apt-get install python3-rpi.gpio
$ sudo python3 pwr_on.py
파이선 실행 이전에 python3-rpi.gpio 패키지를 설치해줍니다. 이미 설치되어 있으면 생략하셔도 무방합니다. 위와 같이 실행하면 '딸깍' 소리와 함께 릴레이가 붙으면서 Target device에 전원이 들어오는 것을 확인할 수 있습니다.
Power Off을 위한 스크립트
import RPi.GPIO as GPIO
#GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(14, GPIO.OUT)
GPIO.output(14, True) #Low Active
이번에는 Power Off를 위한 스크립트입니다. 제가 사용하는 릴레이가 Low Active 형식이므로 High 출력시에 릴레이가 떨어진다는 점에 주의하시기 바랍니다.
이 스크립트 역시도 아래의 GitHub 경로에서 다운로드 받으실 수 있습니다.
https://raw.githubusercontent.com/boyinblue/raspberry/main/pwr/pwr_off.py
파워 제어 응용
이와 같은 기본적인 On/Off 외에도 여러 방법으로 응용이 가능합니다. Target Device를 리셋하기 위해서 Off -> Delay -> On 방식으로 스크립트를 구현해도 좋고, 실행시마다 출력값을 Toggle 시키는 방법도 있겠습니다. 예를들면, 스위치를 누르면 전원이 들어오고, 다시 스위치를 누르면 전원이 꺼지는 방식으로 응용이 가능하겠습니다.
※ GPO 토글시키는 방법
2021.01.24 - [Study/라즈베리파이 공부] - [라즈베리파이] 현재 GPIO 출력값을 읽어와 토글 시키는 방법
GPIO 제어 관련 제가 작성한 글들
2021.01.22 - [Study/라즈베리파이 공부] - [라즈베리파이] GPO 포트로 LED 제어하기
이상입니다.
'Study > 라즈베리파이 공부' 카테고리의 다른 글
[라즈베리파이] Ubuntu 21.10 업그레이드 이후 firefox 웹브라우저 윈도우 위치 이동시 락 걸리는 문제 해결 방법 (0) | 2021.11.09 |
---|---|
[라즈베리파이] Ubuntu 21.10에서 USB-to-Serial 안 잡히는 문제 해결 방법 (/dev/ttyUSB 파일이 생성되지 않음) (0) | 2021.11.02 |
[라즈베리파이] 현재 시간 정보를 자동으로 가져와서 유지하는 방법 (1) | 2021.08.15 |
[라즈베리파이] Jenkins 설치하는 방법 (0) | 2021.04.26 |
라즈베리파이에 FTP 서버 설정 (proftpd inactive 문제 해결 방법) (0) | 2021.04.21 |