라즈베리파이(Raspberry Pi)에는 GPIO (General Purpose Input/Output) 로 사용할 수 있는 핀이 있다. GPIO 핀은 시스템에서 외부 장치와 상호 작용하기 위해 사용되는 핀이다. 라즈베리파이와 같은 임베디드 시스템에서 GPIO 핀은 다양한 입력 및 출력 작업을 수행할 수 있도록 제공된다. 일반적으로 라즈베리파이는 여러 개의 GPIO 핀을 제공하며, 이를 통해 센서, 모터, 스위치, 입출력 신호 전송 등 다양한 장치와 연결할 수 있다. GPIO 핀은 숫자로 식별되고, 핀 번호는 물리적인 위치나 특정 방식에 따라 지정될 수 있다.
python에는 라즈베리파이에서 GPIO (General Purpose Input/Output) 핀을 제어하기 위한 라이브러리가 있다. 이 라이브러리를 사용하면 Python을 통해 Raspberry Pi의 핀을 읽고 쓰는 등의 작업을 수행할 수 있다.
RPi.GPIO 라이브러리는 Raspberry Pi 모델 B+ 및 이후의 모델과 호환된다. 라이브러리를 사용하려면 먼저 Raspberry Pi에 RPi.GPIO를 설치해야 한다. 다음은 RPi.GPIO를 설치하는 명령어이다.
sudo apt-get update
sudo apt-get install python3-rpi.gpio
위 명령어를 통해서 RPi.GPIO를 설치하면 아래와 같이 python 코드에서 GPIO 라이브러리를 import 할 수 있다. 참고로 일반 Windows PC에서는 사용할 수 없다.
import RPi.GPIO as GPIO
다음으로는 핀 모드를 설정해야 한다. 핀 모드는 GPIO.setmode() 함수를 사용해서 핀 번호 지정 방식을 선택할 수 있다. 핀 모드는 두가지를 지정할 수 있는데 GPIO.BOARD는 핀 번호를 라즈베리파이의 보드 번호를 참조해서 사용하고, GPIO.BCM은 핀 번호를 GPIO모듈 번호로 사용한다.
GPIO.setmode(GPIO.BCM) # 또는 GPIO.setmode(GPIO.BOARD)
다음으로 GPIO 핀의 입출력을 설정한다. GPIO.setup() 함수를 사용해서 각 핀을 입력 또는 출력으로 설정할 수 있다.
GPIO.setup(pin_number, GPIO.IN) # 입력 핀으로 설정
GPIO.setup(pin_number, GPIO.OUT) # 출력 핀으로 설정
setup 함수를 호출하면 이제 입력 핀의 상태를 읽거나, 출력 핀에 값을 쓰면 된다. 입력 핀의 상태를 읽는 코드는 다음과 같다. 0 또는 1로 값을 반환한다.
input_signal = GPIO.input(input_pin)
출력 핀에 값을 쓰는 코드는 아래와 같다. 출력도 마찬가지로 0 또는 1로 값을 주면 된다.
GPIO.output(output_pin, 1)
GPIO.output(output_pin, 0)
이렇게해서 실제 라즈베리파이와 연결된 장치에 신호를 주고받을 수 있다. 신호를 주고받는 전체 코드는 다음과 같다.
import time
import RPi.GPIO as GPIO
# 몇초동안 신호를 출력할것인지
output_second = 1
input_pin = 18
output_pin = 23
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(input_pin, GPIO.IN)
GPIO.setup(output_pin, GPIO.OUT)
input_signal = GPIO.input(input_pin) # input_pin의 상태를 읽어옴
if input_signal == 1:
GPIO.output(output_pin, 1) # output_pin에 출력을 내보냄
time.sleep(output_second) # 출력신호가 1로 보내지는 시간
GPIO.output(output_pin, 0)
'Python' 카테고리의 다른 글
PyCharm 단축키 (0) | 2023.06.28 |
---|---|
python 실행파일(.exe) 만드는 방법 : PyInstaller (0) | 2023.06.14 |
Python ChatGPT API 사용법 (0) | 2023.05.30 |
Python logging 모듈 사용법 (0) | 2023.05.27 |
python 한글 파일명 이미지 저장하기 (0) | 2023.05.19 |