GPIO 개요 - 2. GPIO의 주요 역할 및 활용 사례

2025. 2. 11. 11:23프로그래밍/시스템

GPIO의 주요 역할 및 활용 사례

GPIO(General Purpose Input/Output)는 다양한 전자 장치와의 신호 송수신을 통해 하드웨어를 제어하는 중요한 역할을 한다.
이제 GPIO의 주요 기능과 실생활에서의 활용 예시를 구체적으로 살펴보자.


1. GPIO의 주요 역할

GPIO 핀은 디지털 입력, 디지털 출력, PWM(펄스 폭 변조), 인터럽트 처리 등의 기능을 수행하며, 이를 통해 다양한 전자 기기를 제어할 수 있다.

① 디지털 입력 (Digital Input)

센서, 버튼, 스위치 등에서 신호를 읽어오는 역할을 한다.
GPIO를 입력(Input) 모드로 설정하면 외부의 디지털 신호(0 또는 1)를 감지할 수 있다.

💡 사용 예시

  • 버튼 입력 감지 → 버튼을 눌렀을 때 특정 동작 실행
  • 적외선 센서 → 장애물을 감지하여 로봇이 회피하는 기능
  • 자석 센서 → 문이 열리거나 닫힐 때 감지
pinMode(2, INPUT);  // GPIO 2번 핀을 입력 모드로 설정
int buttonState = digitalRead(2);  // 버튼의 상태를 읽음 (HIGH 또는 LOW)

② 디지털 출력 (Digital Output)

LED, 모터, 릴레이 등의 전자 장치를 켜거나 끄는 역할을 한다.
GPIO를 출력(Output) 모드로 설정하면 특정 장치에 신호를 보낼 수 있다.

💡 사용 예시

  • LED 점멸 → GPIO를 이용해 LED를 ON/OFF
  • 모터 ON/OFF → GPIO로 모터 드라이버를 제어
  • 릴레이 제어 → 전자기기(예: 가전제품) ON/OFF
pinMode(3, OUTPUT);  // GPIO 3번 핀을 출력 모드로 설정
digitalWrite(3, HIGH);  // LED ON
delay(1000);
digitalWrite(3, LOW);  // LED OFF

③ PWM (Pulse Width Modulation, 펄스 폭 변조)

PWM은 디지털 신호를 아날로그처럼 제어하는 방식으로, LED 밝기 조절, 모터 속도 제어 등에 활용된다.
GPIO 핀에서 일정한 주기로 HIGH(1)와 LOW(0)를 반복하여, 출력 전압을 조절하는 방식이다.

💡 사용 예시

  • LED 밝기 조절 → LED의 밝기를 부드럽게 변화
  • 서보 모터 제어 → PWM 신호로 특정 각도 조절
  • DC 모터 속도 제어 → PWM 값으로 속도 조절
#include <softPwm.h>

softPwmCreate(4, 0, 100); // GPIO 4번 핀을 PWM으로 설정 (0~100)

softPwmWrite(4, 50); // 50% 듀티사이클 (LED 밝기 조절)
delay(1000);
softPwmWrite(4, 100); // 최대 밝기

④ 인터럽트 처리 (Interrupt Handling)

인터럽트는 특정 이벤트가 발생했을 때 즉시 반응하도록 하는 기능으로, 반복적으로 상태를 확인하는 polling 방식보다 효율적이다.
GPIO 입력이 특정 조건(변화 감지 등)에 도달했을 때 자동으로 실행된다.

💡 사용 예시

  • 버튼 클릭 감지 → 버튼이 눌리는 순간만 이벤트 처리
  • 센서 신호 변화 감지 → 도어 센서가 열리면 경보 울리기
  • 모션 센서 감지 → 움직임이 감지되면 자동 조명 켜기
void buttonInterrupt() {
    printf("Button Pressed!\n");
}

int main() {
    wiringPiSetup();
    pinMode(5, INPUT);
    pullUpDnControl(5, PUD_UP); // 풀업 저항 설정
    
    wiringPiISR(5, INT_EDGE_FALLING, &buttonInterrupt); // 버튼이 눌릴 때 인터럽트 발생

    while (1) {
        delay(1000);
    }
    return 0;
}

2. GPIO의 활용 사례

GPIO는 스마트홈, 로봇, 보안 시스템, IoT 기기 등 다양한 곳에서 활용된다.

① 스마트 홈 자동화

  • 집안 조명을 버튼 또는 스마트폰으로 제어
  • 스마트 콘센트 → 원격으로 전자기기 ON/OFF
  • 가스 감지 센서 → 이상 감지 시 경고

② 로봇 제어

  • 초음파 센서를 활용한 장애물 회피 로봇
  • 모터 속도를 조절하여 로봇 이동 방향 제어
  • 로봇 팔 움직임을 PWM을 통해 부드럽게 조정

③ 보안 시스템

  • 움직임 감지 센서(PIR) → 사람 접근 감지 후 경고음 발생
  • 문 열림/닫힘 감지 센서 → 알람 시스템과 연동
  • CCTV와 GPIO를 연동하여 녹화 시스템 구축

④ IoT 기기 (환경 모니터링 등)

  • 온도/습도 센서를 이용한 실내 환경 모니터링
  • 공기질 센서를 활용한 미세먼지 측정기
  • 토양 습도 센서를 이용한 스마트 농업 시스템

3. 결론

GPIO는 단순한 입출력 기능을 넘어서 다양한 하드웨어와 연동하여 스마트한 시스템을 구축하는 데 필수적인 요소이다.
이를 활용하면 스마트홈, 로봇, 보안, IoT 기기 등 다양한 응용 프로젝트를 만들 수 있으며,
C/C++을 이용하여 GPIO를 직접 제어하면 보다 세밀한 제어와 고성능 응용이 가능하다. 🚀