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를 활용한 다양한 프로젝트를 효율적으로 개발할 수 있다. 🚀
'프로그래밍 > 시스템' 카테고리의 다른 글
GPIO 기본 개념 - 2. 입력(센서, 버튼) vs 출력(LED, 모터) 개념 (0) | 2025.02.11 |
---|---|
GPIO 기본 개념 - 1. 디지털 신호와 아날로그 신호의 차이 (0) | 2025.02.11 |
GPIO 개요 - 2. GPIO의 주요 역할 및 활용 사례 (0) | 2025.02.11 |
GPIO 개요 - 1. GPIO란? (General Purpose Input/Output 개념) (0) | 2025.02.11 |
시리얼 통신 실전 응용 및 마무리 - 3. 무선 시리얼 통신 (블루투스, LoRa) 및 추가 학습 자료 안내 (0) | 2025.02.10 |