1장 ESP32 개요와 주요 특징, GPIO 사용법 완벽 정리
다시 보는 ESP32ESP32의 핵심 개념 정리
ESP32는 Espressif Systems에서 개발한 저전력·저비용 Wi-Fi/Bluetooth 통합 마이크로컨트롤러(SoC)로, 듀얼 코어 프로세서와 다양한 주변 장치를 내장해 IoT, 센서, 원격 제어 등에 널리 사용됩니다. Wi-Fi(스테이션/액세스 포인트 모드), Bluetooth Classic/BLE, 풍부한 GPIO, 아날로그/디지털 인터페이스를 제공하며, 가격이 저렴하고 개발 생태계가 잘 구축되어 있어 메이커와 개발자에게 인기 있는 플랫폼입니다.

ESP32의 주요 특징 요약
ESP32는 약 6달러 수준의 비교적 저렴한 가격으로 제공되며, 절전 모드를 포함한 다양한 저전력 동작 모드를 통해 배터리 기반 프로젝트에 적합합니다. Wi-Fi 기능을 통해 기존 네트워크에 접속하거나 자체 AP를 구성할 수 있고, 여러 기기가 상호 통신하는 IoT/홈 오토메이션 시스템 구축에 사용됩니다. Bluetooth Classic과 BLE를 모두 지원하여 센서 태그, 휴대 기기 연동 등 다양한 무선 애플리케이션에 활용됩니다.
마이크로컨트롤러 내부에는 듀얼 코어 Xtensa 32비트 LX6 프로세서(코어 0, 코어 1)가 포함되어 병렬 처리와 실시간 제어에 유리합니다. 또한 정전식 터치, ADC, DAC, UART, SPI, I2C, PWM, I2S 등 다양한 인터페이스를 제공해 각종 센서/액추에이터 연결이 용이합니다. Arduino 스타일의 C/C++ 개발과 MicroPython 펌웨어를 모두 지원하여 개발 언어 선택의 폭도 넓습니다.
ESP32 생태계와 역사 간단 정리
ESP32는 "Wi-Fi를 지원하는 메이커 친화적 개발 보드"의 통칭처럼 쓰일 정도로 널리 보급된 플랫폼입니다. 설계는 중국의 패블리스 반도체 회사인 Espressif Systems가 담당하며, 이 회사는 무선 통신과 저전력 기술 기반의 AIoT 솔루션에 집중하고 있습니다.
Espressif의 Wi-Fi SoC 계열은 2013년 ESP8089(태블릿·셋톱 박스용 Wi-Fi SoC)에서 시작되었고, 2014년에 출시된 ESP8266이 메이커 커뮤니티의 큰 관심을 받으면서 대중화되었습니다. ESP32는 ESP8266의 후속으로, 듀얼 코어, BLE 지원, 더 풍부한 GPIO와 주변 장치 등 대폭 확장된 기능을 제공하는 차세대 플랫폼입니다.
ESP32 제품군 구조: SoC, 모듈, DevKit
ESP32 제품군은 크게 SoC, Module, DevKit 세 가지 단계로 구분할 수 있습니다.1
SoC(System on a Chip): ESP32 칩 자체를 의미합니다. 하나의 칩 내부에 CPU, RAM/ROM, 각종 컨트롤러가 통합되어 있으며, 실제 제품에 쓰려면 전원, 안테나, 주변 회로를 추가 구성해야 합니다.
Module(모듈): ESP32 SoC에 플래시 메모리, 안테나(또는 안테나 패턴), 최소한의 주변 회로를 통합하여 바로 PCB에 솔더링해 쓸 수 있도록 만든 형태입니다. 제품 개발 시 모듈을 기판에 납땜해 완성품에 탑재합니다.
DevKit(개발 보드): 모듈에 USB-시리얼 인터페이스, 전원 회로, LED, 버튼, 핀헤더(GPIO 확장) 등을 추가해, 메이커·학생·스타트업이 브레드보드와 점퍼선만으로 쉽게 실험·프로토타입을 만들 수 있게 한 보드입니다.
일반적인 학습·취미·프로토타입 개발에서는 DevKit을 구매하는 것이 가장 현실적인 선택입니다. ESP32-S3-WROOM, ESP32 DevKitC, ESP-WROOM-32 등 다양한 모듈/보드가 있으나, 기본적인 예제와 코드는 대부분 호환됩니다.
ESP32-S3 및 ESP32-DevKitC 개요
ESP32-S3는 ESP32 계열의 변형 칩으로, 45개의 핀과 확장된 주변 장치를 제공하며, 기존 ESP-WROOM-32 기반 보드와는 핀아웃이 다릅니다. 이를 탑재한 ESP32-S3-DevKitC 보드는 브레드보드 호환 헤더를 통해 대부분의 I/O를 쉽게 접근할 수 있어, 센서나 모터, 통신 모듈 등을 곧바로 연결해 실험할 수 있습니다.
일반적인 ESP32-DevKitC 보드는 ESP32-WROOM-32 계열 모듈이 납땜되어 있으며, USB-UART 브리지 칩을 통해 PC와 최대 약 3Mbps 속도로 직렬 통신을 합니다. Micro USB 포트는 전원 공급과 펌웨어 업로드, 시리얼 모니터링 모두에 사용됩니다. 보드에는 리셋용 EN 버튼, 부트 모드 진입을 위한 BOOT(Download) 버튼, 전원 상태를 알려주는 5V LED 등이 포함되어 있습니다. 사용자는 노출된 GPIO 핀을 통해 PWM, ADC, DAC, I2C, SPI, I2S 등의 기능을 자유롭게 사용할 수 있습니다.
ESP32-S3의 주변 장치 구성
ESP32-S3 칩은 다양한 주변 장치를 내장해 별도 IC 없이도 복합 기능 구현이 가능합니다. 대표적인 구성은 다음과 같습니다.
20채널 아날로그-디지털 컨버터(ADC)
4개 SPI 인터페이스
3개 UART 인터페이스
2개 I2C 인터페이스
8개 PWM 출력 채널
2개 I2S 인터페이스
14개 정전용량(정전식 터치) 감지 GPIO
이 구성 덕분에 센서 입력, 모터/LED 제어, 오디오 입출력, 터치 버튼 구현 등 다양한 기능을 단일 칩으로 처리할 수 있습니다. 프로젝트 설계 시 필요한 인터페이스 수를 미리 파악하고, 해당 기능을 지원하는 GPIO를 매핑하는 것이 중요합니다.
ESP32 GPIO의 개념과 역할
GPIO(General Purpose Input/Output)는 마이크로컨트롤러가 외부 세계와 데이터를 주고받는 범용 핀입니다. ESP32에서는 각 GPIO를 입력 또는 출력으로 소프트웨어적으로 설정할 수 있으며, 일부 핀은 인터럽트 소스로 사용하거나, Deep sleep 상태에서 기기를 깨우는 웨이크업 이벤트 입력으로도 활용됩니다.
ESP32 칩 전체에는 최대 48개의 핀이 존재하지만, 모든 개발 보드에서 이 모든 핀이 헤더로 노출되는 것은 아닙니다. 또한 일부 핀은 내부적으로 플래시 메모리, PSRAM 등과 연결되어 있어 일반적인 GPIO로 사용하면 안 되거나, 제한이 따릅니다. 보드별 핀맵을 반드시 확인한 뒤 핀을 배치해야 합니다.2
사용을 피하거나 주의해야 할 ESP32 GPIO
ESP32 설계에는 "사용자에게 자유롭게 제공되는 핀"과 "특수 목적 핀"이 혼합되어 있기 때문에, 다음과 같은 제약을 이해하고 사용하는 것이 중요합니다.2
플래시 메모리 연결 핀: GPIO6~11은 내장 플래시 메모리에 연결되어 있어 일반 GPIO로 사용하면 보드가 부팅되지 않거나 오동작할 수 있습니다.
UART0 통신 핀: GPIO1(TX0), GPIO3(RX0)는 USB-UART를 통한 펌웨어 업로드와 시리얼 로그에 사용됩니다. 이 핀에 다른 회로를 연결하면 프로그램 업로드/시리얼 모니터링이 불안정해질 수 있으므로, 특별한 이유가 없다면 다른 UART 핀을 사용하는 것이 좋습니다.
입력 전용 핀: GPIO36(VP), GPIO39(VN), GPIO34, GPIO35는 입력 전용으로, 출력 설정이 불가하며 내부 풀업/풀다운 저항도 사용할 수 없습니다. 외부 저항을 설계에서 직접 추가해야 합니다.
PSRAM 사용 보드의 제한: ESP32-WROVER 모듈처럼 PSRAM을 사용하는 보드에서는 GPIO16, GPIO17이 내부적으로 PSRAM 연결에 사용되므로 일반 GPIO로 쓸 수 없습니다.
이 외의 대부분 GPIO는 큰 제약 없이 사용 가능하지만, 보드/모듈 데이터시트를 반드시 참고해야 합니다.
부팅 관련 핀(스트래핑 핀)과 예기치 않은 동작
일부 GPIO는 ESP32가 부팅될 때 특정 조합을 읽어 부팅 모드를 결정하거나, 부팅 로그·PWM 신호를 잠깐 출력합니다. 이들을 스트래핑 핀이라 부르며, 다음과 같은 점을 주의해야 합니다.2
부팅 시 신호 변화: ESP32가 켜질 때 짧은 시간 동안 0V→3.3V로 빠르게 변하는 핀들이 있어, 이 핀에 릴레이나 모터 드라이버를 직접 연결하면 부팅 순간에 오동작(잠깐 켜짐)이 발생할 수 있습니다.
대표적 예:
GPIO1, GPIO15: UART를 통해 부팅 로그를 전송
GPIO3: 부팅 시 3.3V 출력
GPIO5, GPIO14: 부팅 시 PWM 파형 출력
이러한 핀을 중요 제어 신호(예: 릴레이 ON/OFF)에 직접 사용하면, 전원 인가 순간 예기치 않은 동작이 발생할 수 있으므로 일반적인 GPIO로 여유 있는 핀을 선택하는 것이 좋습니다.
EN(리셋/전원 제어) 핀의 활용
EN 핀은 ESP32 칩 전체의 Enable(활성화) 신호로, 보드의 리셋 버튼과 연결되어 있습니다. EN 핀이 3.3V일 때 ESP32가 동작하며, EN을 GND로 당기면 칩이 비활성화되어 전원이 꺼진 것처럼 됩니다.
이 특성을 활용해, 별도의 전원 스위치 대신 EN 핀을 외부 스위치와 연결해 ESP32만 온·오프하거나, 전력 관리 회로에서 마이크로컨트롤러를 완전히 꺼두었다가 필요할 때만 켜는 구성을 만들 수 있습니다. 케이스 안에 보드를 넣는 프로젝트에서는 EN 핀을 전면 스위치와 연결하는 방식도 자주 사용됩니다.
ESP32 개발을 시작할 때의 실무 팁
ESP32를 처음 접할 때는 칩 종류, 모듈, DevKit 모델, GPIO 제약 등을 한 번에 모두 이해하려고 하기보다는, 일단 대표적인 DevKit 보드를 하나 선택해 예제를 실행해 보는 것이 좋습니다. Arduino IDE 또는 ESP-IDF, MicroPython 중 익숙한 환경을 우선 선택하여 "LED 깜박이기, 시리얼 출력, Wi-Fi 연결" 같은 간단한 예제를 통해 보드 동작에 익숙해지는 것이 효율적입니다.
필요한 부품은 국내 전자부품 쇼핑몰(예: 디바이스마트, 아이씨뱅큐, 엘레파츠, 메카솔루션, ic114 등)을 통해 쉽게 구매할 수 있으며,3 프로젝트를 진행하면서 점차 다른 모델, 확장 모듈, 전원 설계 등을 익혀 나가면 됩니다. 초기에는 완벽한 설계를 목표로 하기보다, "실행 → 실패 → 수정"의 반복을 통해 감각을 익히는 것이 중요합니다.

