' + re_word; if(data.autoList[i].PROD_NAME != ''){ html += ' '+data.autoList[i].PROD_NAME+''; } html += '
' html += '' + comma(Math.floor(data.autoList[i].PROD_PRICES)) + ' 원'; html += '' + re_word + '
'; html += '' + comma(Math.floor(data.resultList[i].prod_priceS)) + ' 원'; html += ''+data.catgStep1List[i].split('@@')[1]+'
'; html += '
안녕하세요, 나도메이커입니다!
최근 대학교 실습실, 공공 연구소, 그리고 사기업의 R&D 부서에서 IoT 및 로봇 공학 프로젝트를 위해 싱글보드컴퓨터(SBC)의 도입이 폭발적으로 증가하고 있습니다. 그중에서도 단연 표준으로 자리 잡은 기기는 라즈베리파이5입니다.
이번 시간에는 지난 시간 말미에 예고해 드린 바와 같이, 외부 하드웨어와 소통하는 라즈베리파이의 심장인 GPIO의 핵심 개념과 파이썬(Python)을 활용한 실무 제어 방법을 상세히 소개하겠습니다.
GPIO(General-Purpose Input/Output)는 명칭 그대로 '다용도 입출력 포트'를 의미합니다. 일반적인 PC와 달리 라즈베리파이와 같은 싱글보드컴퓨터가 외부의 센서, 모터, 디스플레이 등과 직접 데이터를 주고받을 수 있게 해주는 핵심적인 물리적 인터페이스입니다.
보통 집적회로나 전기회로 기판의 디지털 신호 핀으로 사용되며, 크게 통신을 위한 GPIO 핀, 전원 공급 핀, 그리고 Ground(접지)로 구성됩니다.

위 사진에서 보시는 것과 같이 라즈베리파이 보드 상단에 40개의 핀 모양으로 나란히 배치되어 있습니다.
여기서 연구 및 실습 환경 구축 시 반드시 인지해야 할 중요 포인트가 있습니다. 라즈베리파이의 GPIO 핀은 기본적으로 디지털 신호(0과 1)만을 처리할 수 있으며, 아날로그 신호를 직접 받을 수 없습니다.
따라서 조도 센서나 토양 수분 센서처럼 연속적인 아날로그 값을 측정해야 하는 실습 프로젝트의 경우, 반드시 ADC(Analog-to-Digital Converter) 칩을 브릿지로 활용하거나, 아두이노(Arduino) 보드와 시리얼 통신을 연동하여 데이터를 수집해야 합니다.

위 이미지는 GPIO 위치별 세부 기능을 나타내는 핀맵(Pin Map)입니다. 전원과 Ground, 그리고 고유 번호를 가진 GPIO로 알차게 구성되어 있음을 확인할 수 있습니다. 특히 실습 시 외부 전원 모듈 대신, 이 전원 핀을 통해 센서나 작은 액추에이터에 직접 전력을 공급할 수 있어 회로 구성이 매우 직관적입니다. 괄호 안에 표기된 영문자들은 특정 핀들에 부여된 특수 통신 기능들을 의미하며, 이에 대해서는 바로 아래에서 자세히 다루겠습니다.
단순한 입출력을 넘어 다양한 산업용, 교육용 프로젝트를 수행하기 위해서는 핀의 특수 기능을 정확히 이해해야 합니다.
이제 이론을 바탕으로 라즈베리파이 내부에서 GPIO 제어 환경을 세팅하고 코딩하는 방법을 알아보겠습니다. 가장 널리 쓰이는 Python 언어를 활용합니다.
가장 먼저, 라즈베리파이 OS에서 하드웨어 인터페이스를 활성화해야 합니다.

바탕화면 좌측 상단의 라즈베리파이 아이콘 > Preferences > Raspberry Pi Configuration 메뉴로 진입해 주세요.
Interfaces 탭으로 이동한 후, SSH와 VNC를 제외한 통신 관련 포트(SPI, I2C, Serial Port 등)의 토글을 모두 ON 상태로 변경합니다. (SSH와 VNC는 원격 접속용이므로 필요하신 연구원분들만 활성화하시면 됩니다.)
설정이 끝났다면 기본 내장 IDE인 Thonny Python을 열어 코드를 작성합니다. 파이썬에서 하드웨어를 제어하는 대표적인 라이브러리는 RPi.GPIO와 gpiozero 2가지가 있습니다. 동일한 1초 간격의 LED 깜빡임(Blink) 실습 코드로 두 모듈의 차이를 비교해 보겠습니다.
[방법 1] RPi.GPIO 라이브러리 활용
RPi.GPIO는 전통적이고 직관적인 방식입니다. BCM 핀 배열 모드를 선언하고, 14번 핀을 출력(OUT) 핀으로 명시적으로 설정(setup)하는 과정이 필요합니다.
[방법 2] gpiozero 라이브러리 활용 (권장)
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의 조합이 필수 역량으로 꼽히는 이유이기도 합니다.
오늘 준비한 정보가 여러분의 실무 프로젝트와 커리큘럼 설계에 큰 도움이 되셨기를 바라며, 다음 시간에도 현장에서 유용한 밀도 높은 기술 정보로 찾아뵙겠습니다.
해당 프로젝트에서 활용된 싱글보드컴퓨터 및 실습 부품은 아래에서 확인 가능합니다. ▼