GPIO 개요 - 3. GPIO가 사용되는 대표적인 플랫폼

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

GPIO가 사용되는 대표적인 플랫폼

GPIO는 다양한 임베디드 시스템과 마이크로컨트롤러에서 사용되며, 이를 통해 센서, 액추에이터, 디스플레이 등 여러 장치를 제어할 수 있다.
대표적으로 라즈베리파이, 아두이노, ESP32, STM32와 같은 플랫폼에서 GPIO를 활용한 프로젝트를 쉽게 구현할 수 있다.


1. 라즈베리파이 (Raspberry Pi)

라즈베리파이는 **초소형 컴퓨터(SBC, Single Board Computer)**로, 리눅스 운영체제를 실행하며 GPIO 핀을 제공하여 하드웨어 제어가 가능하다.
GPIO 핀을 통해 센서, 모터, LCD, 카메라 모듈 등을 제어할 수 있으며, Python, C, C++ 등의 언어를 사용하여 GPIO를 프로그래밍할 수 있다.

📌 특징

  • 40개의 GPIO 핀 제공 (Raspberry Pi 4 기준)
  • Python, C, C++ 등 다양한 언어를 지원
  • IoT, 스마트홈, 자동화 프로젝트에 적합
  • 다양한 외부 장치(센서, 카메라, 디스플레이 등)와 쉽게 연동 가능

💡 활용 예시

스마트 홈 자동화: GPIO를 이용해 조명을 제어하고, 스마트 스위치와 연결
로봇 제어: 초음파 센서를 사용하여 장애물 감지 및 모터 제어
미니 서버 구축: IoT 센서 데이터를 수집하여 클라우드로 전송
보안 시스템: PIR 센서를 연결하여 움직임 감지 후 경고음 발생

🔧 기본 사용 예제 (C++)

#include <wiringPi.h>

#define LED_PIN 0  // GPIO 17 (BCM 기준)

int main() {
    wiringPiSetup();
    pinMode(LED_PIN, OUTPUT);

    while (1) {
        digitalWrite(LED_PIN, HIGH);  // LED ON
        delay(500);
        digitalWrite(LED_PIN, LOW);   // LED OFF
        delay(500);
    }
    return 0;
}

2. 아두이노 (Arduino)

아두이노는 마이크로컨트롤러 기반의 개발 보드로, GPIO를 통해 디지털/아날로그 입출력을 쉽게 제어할 수 있다.
소형 MCU(Microcontroller Unit)가 내장되어 있어 운영체제가 필요 없으며, 코드를 직접 업로드하여 실행하는 방식으로 동작한다.

📌 특징

  • 디지털 핀 14개, 아날로그 핀 6개 제공 (Arduino Uno 기준)
  • 사용이 간단하여 초보자도 쉽게 배울 수 있음
  • 다양한 센서, 모터, 릴레이와 쉽게 연결 가능
  • C/C++ 기반의 Arduino IDE로 개발

💡 활용 예시

온습도 센서 연결: 실내 온도를 측정하여 디스플레이에 표시
서보 모터 제어: PWM을 사용하여 로봇 팔을 움직임
조명 제어: 포토센서를 사용하여 자동 조명 시스템 구축
스마트 도어락: RFID 카드 인식 후 전자 자물쇠 해제

🔧 기본 사용 예제 (Arduino C)

int ledPin = 13;  // 아두이노 내장 LED

void setup() {
    pinMode(ledPin, OUTPUT);
}

void loop() {
    digitalWrite(ledPin, HIGH);  // LED ON
    delay(500);
    digitalWrite(ledPin, LOW);   // LED OFF
    delay(500);
}

3. 임베디드 시스템 (ESP32, STM32 등)

ESP32와 STM32 같은 임베디드 시스템은 전력 효율이 중요한 산업용 IoT 및 실시간 제어 시스템에서 널리 사용된다.
이러한 보드는 고성능 MCU와 저전력 설계를 기반으로 하며, 무선 통신(Wi-Fi, Bluetooth)과 함께 사용할 수도 있다.

📌 ESP32 (Wi-Fi 기반 IoT 보드)

  • Wi-Fi & Bluetooth 기능 내장 → IoT 프로젝트에 최적화
  • 저전력 모드 지원 → 배터리로 장시간 동작 가능
  • GPIO 34개 제공 → 다양한 센서, 디바이스 연결 가능
  • Arduino IDE, Micropython, C++ 등 다양한 개발 환경 지원

💡 활용 예시
✅ 실시간 온습도 모니터링 및 클라우드 데이터 전송
✅ 원격 조명 및 가전 기기 ON/OFF
✅ 스마트팜 자동 급수 시스템 구축

🔧 ESP32 GPIO 출력 예제 (Arduino IDE 기반)

#define LED_PIN 2  // ESP32 내장 LED

void setup() {
    pinMode(LED_PIN, OUTPUT);
}

void loop() {
    digitalWrite(LED_PIN, HIGH);
    delay(500);
    digitalWrite(LED_PIN, LOW);
    delay(500);
}

📌 STM32 (고성능 산업용 MCU)

  • 고성능 ARM Cortex-M 기반 MCU
  • 실시간 제어 및 RTOS(Real-Time Operating System) 지원
  • 저전력 & 고속 연산 지원 → 로봇, 드론, 산업 자동화에 사용
  • STM32CubeIDE, Keil, PlatformIO 등 다양한 개발 환경 지원

💡 활용 예시
✅ 산업용 모터 및 로봇 제어
✅ 정밀한 센서 데이터 수집 및 분석
✅ 드론 및 자율주행 로봇 개발

🔧 STM32 GPIO 출력 예제 (C, HAL 라이브러리)

HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);  // LED ON
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);  // LED OFF
HAL_Delay(500);

4. 결론

GPIO는 라즈베리파이, 아두이노, ESP32, STM32 등의 다양한 플랫폼에서 사용되며, 각 보드의 특성에 따라 적절한 프로젝트에 활용할 수 있다.

플랫폼 특징 주요 활용

Raspberry Pi 리눅스 기반 소형 컴퓨터, Python/C++ 지원 IoT, 스마트홈, 로봇 제어
Arduino MCU 기반, 쉬운 입출력 제어, C++ 기반 센서, 모터, 간단한 자동화
ESP32 Wi-Fi/Bluetooth 내장, 저전력 IoT 원격제어, 환경 모니터링
STM32 고성능 MCU, 실시간 제어 산업 자동화, 드론, 로봇

각 플랫폼의 특성을 이해하고 적절한 환경을 선택하면, GPIO를 활용한 다양한 프로젝트를 효율적으로 개발할 수 있다. 🚀