Quick

    라즈베리파이5 - GPIO 개념과 활용하기

 

목록으로

안녕하세요, 나도메이커입니다!

최근 대학교 실습실, 공공 연구소, 그리고 사기업의 R&D 부서에서 IoT 및 로봇 공학 프로젝트를 위해 싱글보드컴퓨터(SBC)의 도입이 폭발적으로 증가하고 있습니다. 그중에서도 단연 표준으로 자리 잡은 기기는 라즈베리파이5입니다.

이번 시간에는 지난 시간 말미에 예고해 드린 바와 같이, 외부 하드웨어와 소통하는 라즈베리파이의 심장인 GPIO의 핵심 개념과 파이썬(Python)을 활용한 실무 제어 방법을 상세히 소개하겠습니다.

■ 1. GPIO란 무엇인가? (개념 및 위치)

GPIO(General-Purpose Input/Output)는 명칭 그대로 '다용도 입출력 포트'를 의미합니다. 일반적인 PC와 달리 라즈베리파이와 같은 싱글보드컴퓨터가 외부의 센서, 모터, 디스플레이 등과 직접 데이터를 주고받을 수 있게 해주는 핵심적인 물리적 인터페이스입니다.

보통 집적회로나 전기회로 기판의 디지털 신호 핀으로 사용되며, 크게 통신을 위한 GPIO 핀, 전원 공급 핀, 그리고 Ground(접지)로 구성됩니다.

위 사진에서 보시는 것과 같이 라즈베리파이 보드 상단에 40개의 핀 모양으로 나란히 배치되어 있습니다.

여기서 연구 및 실습 환경 구축 시 반드시 인지해야 할 중요 포인트가 있습니다. 라즈베리파이의 GPIO 핀은 기본적으로 디지털 신호(0과 1)만을 처리할 수 있으며, 아날로그 신호를 직접 받을 수 없습니다.

따라서 조도 센서나 토양 수분 센서처럼 연속적인 아날로그 값을 측정해야 하는 실습 프로젝트의 경우, 반드시 ADC(Analog-to-Digital Converter) 칩을 브릿지로 활용하거나, 아두이노(Arduino) 보드와 시리얼 통신을 연동하여 데이터를 수집해야 합니다.

위 이미지는 GPIO 위치별 세부 기능을 나타내는 핀맵(Pin Map)입니다. 전원과 Ground, 그리고 고유 번호를 가진 GPIO로 알차게 구성되어 있음을 확인할 수 있습니다. 특히 실습 시 외부 전원 모듈 대신, 이 전원 핀을 통해 센서나 작은 액추에이터에 직접 전력을 공급할 수 있어 회로 구성이 매우 직관적입니다. 괄호 안에 표기된 영문자들은 특정 핀들에 부여된 특수 통신 기능들을 의미하며, 이에 대해서는 바로 아래에서 자세히 다루겠습니다.

■ 2. 라즈베리파이5 GPIO 주요 핀 기능 분석

단순한 입출력을 넘어 다양한 산업용, 교육용 프로젝트를 수행하기 위해서는 핀의 특수 기능을 정확히 이해해야 합니다.

  • ▶ 전원 (Power)
    보드에서 외부 부품으로 전기를 공급합니다. 5V와 3.3V 두 가지 전압을 제공하므로, 연결할 센서의 정격 전압을 반드시 확인해야 합니다.
  • ▶ 출력 핀 (Digital Output)
    소프트웨어 제어를 통해 HIGH(켜짐) 신호를 주면 3.3V 전원이 인가되고, LOW(꺼짐) 신호를 주면 0V가 인가됩니다.
    [주의] LED와 같은 다이오드를 실습할 때, 저항 없이 다이렉트로 전원을 인가하면 과전류로 인해 부품과 보드가 영구 손상될 수 있으므로 반드시 적정 저항을 연결해야 합니다.
  • ▶ PWM (Pulse Width Modulation)
    HIGH와 LOW 신호의 펄스 비율(Duty Cycle)을 미세하게 변화시켜, 마치 아날로그 신호처럼 출력의 강약을 조절합니다. (예: LED 밝기 서서히 조절, 서보모터 각도 제어 등). 하드웨어적 제어와 소프트웨어적 제어로 나뉘며, 정밀한 연구 목적일수록 오차가 적은 H/W 기반 PWM 사용을 권장합니다.
  • ▶ SPI (Serial Peripheral Interface)
    MCU와 센서 간의 근거리 고속 통신을 위한 규격입니다. 1개의 Master(라즈베리파이)와 여러 개의 Slave 디바이스로 구성되며, 양방향 통신이 동시에 가능한 전이중(Full-duplex) 방식이므로 데이터 처리 속도가 매우 빠릅니다. (필수 통신선: SCLK, MOSI, MISO, CE)
  • ▶ I2C (Inter-Integrated Circuit)
    단 2개의 통신선(SDA: 데이터 선, SCL: 클럭 동기화 선)만으로 여러 디바이스를 병렬 연결할 수 있어, 실습 회로를 매우 깔끔하고 간단하게 구성할 수 있는 효율적인 방식입니다.
  • ▶ UART (Universal Asynchronous Receiver-Transmitter)
    비동기식 직렬 통신으로, 기기 간의 통신 속도(Baud Rate)를 사전에 맞춰야 합니다. 라즈베리파이5에서는 기본적으로 2개의 UART를 제공하며, 내부 설정 변경을 통해 최대 6개까지 확장하여 다중 디바이스 환경을 구축할 수 있습니다.

■ 3. 파이썬(Python) 기반 GPIO 활용 및 코드 비교

이제 이론을 바탕으로 라즈베리파이 내부에서 GPIO 제어 환경을 세팅하고 코딩하는 방법을 알아보겠습니다. 가장 널리 쓰이는 Python 언어를 활용합니다.

가장 먼저, 라즈베리파이 OS에서 하드웨어 인터페이스를 활성화해야 합니다.

바탕화면 좌측 상단의 라즈베리파이 아이콘 > Preferences > Raspberry Pi Configuration 메뉴로 진입해 주세요.

Interfaces 탭으로 이동한 후, SSH와 VNC를 제외한 통신 관련 포트(SPI, I2C, Serial Port 등)의 토글을 모두 ON 상태로 변경합니다. (SSH와 VNC는 원격 접속용이므로 필요하신 연구원분들만 활성화하시면 됩니다.)

설정이 끝났다면 기본 내장 IDE인 Thonny Python을 열어 코드를 작성합니다. 파이썬에서 하드웨어를 제어하는 대표적인 라이브러리는 RPi.GPIOgpiozero 2가지가 있습니다. 동일한 1초 간격의 LED 깜빡임(Blink) 실습 코드로 두 모듈의 차이를 비교해 보겠습니다.

[방법 1] RPi.GPIO 라이브러리 활용

import RPi.GPIO as GPIO
from time import sleep

LED = 14
GPIO.setmode(GPIO.BCM)
GPIO.setup(LED, GPIO.OUT)

while True:
????GPIO.output(LED, True)
????sleep(1)
????GPIO.output(LED, False)
????sleep(1)

RPi.GPIO는 전통적이고 직관적인 방식입니다. BCM 핀 배열 모드를 선언하고, 14번 핀을 출력(OUT) 핀으로 명시적으로 설정(setup)하는 과정이 필요합니다.

[방법 2] gpiozero 라이브러리 활용 (권장)

from gpiozero import LED
from time import sleep

led = LED(14)

try:
????while True:
????????led.on()
????????sleep(1)
????????led.off()
????????sleep(1)
except KeyboardInterrupt:
????pass

gpiozero 모듈은 핀의 설정 단계를 내부적으로 자동 처리하므로 코드가 훨씬 간결하고 가독성이 뛰어납니다. 대학교 및 기관에서의 실습이나 빠른 프로토타이핑 프로젝트 진행 시 gpiozero 사용을 적극 권장합니다.

이러한 gpiozero 모듈은 LED 외에도 실무에서 다루는 수많은 센서와 모터를 객체지향적으로 손쉽게 제어할 수 있도록 강력한 클래스들을 제공합니다. 아래 표는 프로젝트 설계 시 유용한 gpiozero의 주요 기능 분류입니다.

분류 주요 클래스 (모듈) 설명 및 활용
디지털 출력
(액추에이터)
LED, PWMLED, Buzzer 일반 디지털 제어 및 밝기 조절, 부저 경고음 발생 (.on(), .toggle() 활용)
디지털 입력
(센서)
Button, MotionSensor, DistanceSensor PIR 모션 감지, 초음파 거리 측정 등 (.when_pressed 이벤트 핸들링 가능)
아날로그 제어 MCP3008, MCP3208 LightSensor 등과 연동하여 ADC 통신 브릿지 역할 수행
모터 제어 Motor, Servo, AngularServo DC모터 정역회전, 로봇 구동, 서보모터 정밀 각도 제어

이처럼 싱글보드컴퓨터 라즈베리파이는 GPIO라는 매개체를 통해 단순한 미니 PC를 넘어, 무궁무진한 물리적 하드웨어 연동 및 제어 시스템으로 기능합니다. 연구소와 기업 R&D에서 파이썬과 GPIO의 조합이 필수 역량으로 꼽히는 이유이기도 합니다.

오늘 준비한 정보가 여러분의 실무 프로젝트와 커리큘럼 설계에 큰 도움이 되셨기를 바라며, 다음 시간에도 현장에서 유용한 밀도 높은 기술 정보로 찾아뵙겠습니다.

해당 프로젝트에서 활용된 싱글보드컴퓨터 및 실습 부품은 아래에서 확인 가능합니다. ▼

실습준비물

연관 컨텐츠

결제 및 주문

공지사항 목록