2장 Arduino IDE에서 ESP32 개발 환경 구축과 기본 사용법
다시 보는 ESP32개요
ESP32는 Wi-Fi와 블루투스를 모두 지원하는 대표적인 IoT MCU로, 다양한 개발 환경에서 사용할 수 있습니다. 대표적으로 Arduino IDE, ESP-IDF, VS Code + PlatformIO, AT 명령 기반 환경 등 네 가지 방법이 많이 쓰입니다. 이 중에서 입문자가 가장 빠르고 쉽게 시작할 수 있는 방법이 바로 Arduino IDE 2를 이용하는 방식입니다.

이 노트에서는 Arduino IDE 2를 설치하고, ESP32 보드 애드온을 추가한 뒤, 기본적인 LED 깜빡이(Blink) 예제를 업로드하고 직렬 모니터를 사용하는 흐름까지 단계별로 정리합니다. 마지막으로 업로드나 컴파일 과정에서 자주 발생하는 오류와 해결 방법도 함께 정리하여, 처음 ESP32를 접하는 분들이 "처음부터 막히지 않고" 진행할 수 있도록 돕는 것을 목표로 합니다.
ESP32 개발 환경 구성 방법 개요
ESP32 개발 환경은 크게 네 가지 정도로 많이 사용됩니다.
Arduino IDE 기반 개발 가장 쉬운 방법으로, Arduino 문법과 라이브러리를 그대로 활용할 수 있어 아두이노 경험이 있다면 진입 장벽이 가장 낮습니다.
VS Code + PlatformIO 보다 강력한 프로젝트 관리와 자동 완성, 확장 기능을 제공하는 개발 환경입니다. 대형 프로젝트나 여러 보드를 동시에 관리할 때 유리하지만, 초기 설정이 Arduino IDE보다 다소 복잡합니다.
ESP-IDF(공식 SDK) 사용 Espressif에서 제공하는 공식 개발 프레임워크로, C/C++ 기반의 보다 저수준 제어와 최신 기능 활용이 가능합니다. 대신 설정과 빌드 과정이 복잡해 초보자에게는 다소 난이도가 있습니다.
AT 펌웨어 + AT 명령 사용 ESP32를 하나의 통신 모듈처럼 사용하며, UART로 AT 명령을 보내 Wi-Fi를 제어하는 방식입니다. 별도의 MCU에서 ESP32를 모뎀처럼 사용할 때 적합합니다.
이 노트에서는 이 중 Arduino IDE 2 기반 개발을 중심으로 설명하며, 다른 방법들은 필요시 별도 문서를 참조하는 정도로만 언급합니다.
Arduino IDE 2 설치 방법 및 다운로드 경로
Arduino IDE 2는 기존 아두이노 IDE를 개선한 버전으로, 자동 완성, 내장 디버거, 더 나은 UI, Arduino Cloud와의 스케치 동기화 기능 등을 제공합니다. ESP32를 포함한 대부분의 아두이노 호환 보드를 손쉽게 개발할 수 있는 통합 개발 환경입니다.
Arduino IDE 2는 Arduino 공식 웹사이트에서 운영체제에 맞는 설치 파일을 내려받을 수 있습니다. 설치 순서는 다음과 같습니다.
웹 브라우저에서 Arduino 소프트웨어 다운로드 페이지에 접속합니다.
주소:
https://www.arduino.cc/en/software#experimental-software
본인이 사용하는 운영체제(Windows, macOS, Linux)에 맞는 Arduino IDE 2.x 설치 파일을 선택하여 다운로드합니다.
다운로드한 설치 파일을 실행하고 안내되는 설치 마법사(Next/동의/설치 등)의 지시를 순서대로 따라가면 설치가 완료됩니다.
설치가 완료되면 바탕화면 또는 시작 메뉴에서 Arduino IDE 2를 실행해 정상적으로 열리는지 확인합니다.
Arduino IDE 2에 ESP32 보드 애드온 추가
ESP32를 Arduino IDE에서 사용하려면 기본 제공 보드 목록에 ESP32를 추가하는 "보드 애드온" 설치 과정이 필요합니다. 이는 추가 보드 매니저 URL을 등록한 다음 보드 매니저에서 ESP32 패키지를 설치하는 방식으로 진행됩니다.
1. 환경 설정에서 보드 매니저 URL 등록
Arduino IDE 2를 실행합니다.
상단 메뉴에서 파일(File) > 환경 설정(Preferences) 메뉴를 클릭합니다.
나타나는 환경 설정 창에서 "추가 보드 매니저 URL(Additional Boards Manager URLs)" 항목을 찾습니다.
아래 ESP32용 URL을 복사해 붙여 넣습니다.
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json이미 ESP8266 등 다른 보드 URL이 등록되어 있다면 쉼표(,) 로 구분하여 함께 입력합니다. 예를 들어:
http://arduino.esp8266.com/stable/package_esp8266com_index.json, https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json확인(OK) 버튼을 눌러 설정을 저장합니다.
이 URL 등록은 한 번만 해두면 이후에는 다시 입력할 필요가 없습니다.
2. 보드 매니저에서 ESP32 패키지 설치
Arduino IDE 상단 메뉴에서 도구(Tools) > 보드(Board) > 보드 매니저...(Boards Manager...) 를 선택하거나, 좌측 사이드바에 있는 보드 아이콘을 클릭합니다.
상단 검색창에
ESP32를 입력합니다.검색 결과 중 "esp32 by Espressif Systems" 항목을 찾습니다.
버전이
3.x인 최신 버전을 선택한 후 설치(Install) 버튼을 클릭합니다.설치가 완료될 때까지 기다립니다. 인터넷 속도와 PC 사양에 따라 다소 시간이 걸릴 수 있습니다.
설치가 끝나면 이제 Arduino IDE의 보드 목록에서 다양한 ESP32 보드를 선택해 사용할 수 있게 됩니다.
ESP32 보드 선택과 기본 LED Blink 스케치
ESP32 애드온 설치가 끝났다면, 이제 실제로 ESP32 보드를 선택하고 기본 예제 코드를 업로드하여 동작을 확인해 볼 수 있습니다.
1. 예제 LED Blink 스케치 코드
ESP32 개발 보드에는 대체로 GPIO 2에 연결된 온보드 LED가 있는 경우가 많습니다(보드에 따라 다를 수 있음). 아래 예제는 GPIO 2에 연결된 LED를 1초 간격으로 켜고 끄면서, 직렬 모니터로 현재 상태를 출력하는 스케치입니다.
#include <Arduino.h>
#define LED 2
void setup() {
Serial.begin(115200); // 직렬 통신 속도 설정
pinMode(LED, OUTPUT); // LED 핀을 출력으로 설정
}
void loop() {
digitalWrite(LED, HIGH);
Serial.println("LED is on");
delay(1000);
digitalWrite(LED, LOW);
Serial.println("LED is off");
delay(1000);
}이 코드를 Arduino IDE 2의 새 스케치에 복사해서 사용하면 됩니다.
2. ESP32 보드와 포트 선택
코드를 업로드하기 전에 올바른 보드와 포트를 선택해야 합니다.
ESP32 개발 보드를 USB 케이블로 PC에 연결합니다.
Arduino IDE 2 상단의 보드 선택 드롭다운(대개 상단 툴바 중앙 근처)을 클릭합니다.
"다른 보드 및 포트 선택(Select other board and port...)" 을 선택합니다.
새 창이 열리면 검색창에 사용하는 ESP32 보드 이름(예:
DOIT ESP32 DEVKIT V1,ESP32 Dev Module등)을 입력하여 찾습니다.목록에서 해당 보드와 연결된 COM 포트를 선택합니다.
선택 후 확인(OK) 을 누르면 상단 표시줄에 선택된 보드와 포트가 표시됩니다.
이제 툴바의 체크(검증/Verify) 버튼으로 컴파일을 해보고, 문제가 없다면 화살표(업로드/Upload) 버튼을 눌러 보드에 스케치를 업로드합니다.
업로드 후 직렬 모니터 사용 방법 (보레이트 설정 등)
스케치 업로드가 정상적으로 끝나면, LED가 1초 간격으로 깜빡이면서 직렬 포트로 메시지를 출력합니다. 이 출력 내용을 확인하려면 직렬 모니터(Serial Monitor) 를 사용합니다.
Arduino IDE 2 오른쪽 상단 또는 하단 도구 영역에서 직렬 모니터 아이콘(돋보기 또는 시리얼 포트 모양)을 클릭합니다.
IDE 하단 또는 새 탭으로 직렬 모니터 창이 열립니다.
직렬 모니터 창 오른쪽 아래 또는 상단에 있는 보레이트(baud rate) 설정을
115200으로 맞춥니다.위 스케치에서
Serial.begin(115200);로 설정했기 때문에 반드시 동일한 속도로 맞춰야 합니다.
잠시 기다리면 다음과 같은 문구가 1초 간격으로 출력되는 것을 볼 수 있습니다.
LED is onLED is off
만약 글자가 깨져 보이거나 이상한 문자가 나온다면, 보레이트가 맞지 않았거나 잘못된 포트를 선택했을 가능성이 큽니다. 이때는 보레이트를 9600, 115200 등으로 바꿔보며 확인하고, 도구 > 포트에서 포트 선택을 다시 확인합니다.
ESP32 업로드/컴파일 시 자주 발생하는 오류와 해결 방법
ESP32를 Arduino IDE로 사용하다 보면 특히 업로드 단계에서 여러 오류를 접하게 됩니다. 아래는 자주 발생하는 대표적인 문제와 해결 팁입니다.
1. ESP32 애드온 설치 후 컴파일 불가 (툴체인 경로 오류 등)
ESP32 애드온을 설치한 뒤 ESP32 보드를 선택하고 컴파일을 시도했는데, ...xtensa-esp32-elf-g++: 파일이 없습니다 와 비슷한 메시지로 컴파일이 실패할 수 있습니다.
이 경우에는 다음을 확인합니다.
ESP32 보드 애드온 설치가 중간에 실패했거나 깨졌을 수 있으니, 보드 매니저에서 ESP32 패키지를 제거 후 다시 설치합니다.
시스템에 아두이노 IDE가 여러 버전(구버전, 휴대용 버전 등) 설치되어 있는 경우, ESP32 패키지를 설치한 바로 그 IDE를 실행하고 있는지 확인합니다.
2. "ESP32에 연결하지 못했습니다. 시간 초과... 연결 중..." 오류
스케치를 업로드할 때 다음과 비슷한 메시지가 나오며 실패하는 경우가 많습니다.
Failed to connect to ESP32: Timed out...디버그 창에 점(......)이 계속 찍히다가 오류가 발생
이는 대부분 ESP32가 플래시/업로드 모드로 진입하지 못했기 때문입니다. 다음 순서로 해결할 수 있습니다.
ESP32 보드에서 BOOT 버튼을 찾습니다. (보드에 따라
IO0,BOOT,FLASH등으로 표기)BOOT 버튼을 누른 상태로 유지합니다.
Arduino IDE에서 업로드 버튼을 클릭합니다.
하단 상태창에 "Connecting..." 이라고 뜨거나 점들이 찍히기 시작하면, 이때 BOOT 버튼에서 손을 뗍니다.
잠시 후 "업로드 완료" 메시지가 나타나면 정상적으로 업로드된 것입니다.
필요시 EN / RST / RESET 버튼을 눌러 ESP32를 재시작합니다.
일부 ESP32 보드는 자동으로 플래시 모드 전환이 안 되므로, 새 스케치를 업로드할 때마다 이 과정을 반복해야 할 수 있습니다.
3. ESP32 보드/포트가 Arduino IDE에서 보이지 않을 때
ESP32를 PC에 연결했는데, 도구 > 포트 메뉴에 포트가 회색으로 비활성화되어 있거나 ESP32 관련 포트를 찾을 수 없는 경우가 있습니다.
가능한 원인은 다음과 같습니다.
USB-UART 드라이버 미설치
대부분의 ESP32 개발 보드는 USB-시리얼 변환 칩을 사용합니다. 예) CP2102, CH340 등
먼저 보드의 USB 커넥터 근처 칩 표기를 확인합니다. (CP2102 등)
해당 칩에 맞는 드라이버를 제조사 또는 칩 제조사 공식 사이트에서 다운로드 후 설치합니다. (예: CP2102 → Silicon Labs의 VCP 드라이버)
드라이버 설치 후 PC 및 Arduino IDE를 재시작하고 포트 목록을 다시 확인합니다.
데이터 선이 없는 USB 케이블 사용
일부 충전 전용 케이블(특히 보조 배터리 제공 케이블)은 전원만 공급되고 데이터 선이 없음.
이 케이블을 쓰면 ESP32 보드에 전원 LED는 켜지지만, PC에서 COM 포트로 인식하지 못합니다.
데이터 전송이 가능한 다른 USB 케이블로 바꿔 연결해 다시 확인합니다.
4. 직렬 모니터에 깨진 글자, 이상한 문자만 출력될 때
직렬 모니터에 의미 없는 글자나 깨진 문자열이 출력된다면 대부분 통신 속도(보레이트) 불일치 문제입니다.
코드에서
Serial.begin(115200);로 설정했다면, 직렬 모니터의 보레이트도 115200 으로 설정해야 합니다.다른 예제에서는
9600,74880등 다양한 속도를 사용할 수 있으니, 예제 코드의Serial.begin()인자를 확인하여 직렬 모니터 설정을 맞춰줍니다.올바른 COM 포트를 선택했는지도 함께 확인합니다.
5. "브라운아웃 감지기 트리거(brownout detector was triggered)" 오류
직렬 모니터를 열었을 때 Brownout detector was triggered 와 같은 메시지가 반복해서 출력되면, ESP32가 전원 부족 또는 불안정한 전원 상태로 동작하고 있다는 뜻입니다.
주로 다음 원인과 관련이 있습니다.
품질이 좋지 않은 USB 케이블 사용
너무 긴 USB 케이블 사용
PC의 USB 포트에서 충분한 전류를 공급하지 못함
보드 자체의 납땜 불량 또는 하드웨어 결함
해결 방법은 다음과 같습니다.
더 짧고 품질이 좋은 USB 케이블로 교체
다른 USB 포트에 연결 (가능하면 PC 후면 포트)
전원 공급이 가능한 USB 허브 사용
그래도 해결되지 않으면 다른 PC에서 테스트하거나, 보드 자체 불량 여부를 의심
6. WiFi 관련 예제 컴파일 오류 (라이브러리 충돌)
ESP32 WiFi 예제(WiFiScan 등)를 컴파일할 때 'class WiFiClass' has no member named 'firmwareVersion' 와 같은 오류가 발생하는 경우가 있습니다.
이는 Arduino IDE가 ESP32용 WiFi 라이브러리 대신, Arduino 보드(UNO 등)용 WiFi 라이브러리를 사용하고 있기 때문입니다.
해결 방법은 다음과 같습니다.
Arduino 설치 폴더 또는 문서 폴더에서
libraries/WiFi폴더를 찾습니다.해당 폴더(Arduino용 WiFi 라이브러리)를 다른 곳(예: 데스크톱)으로 옮기거나 삭제합니다.
Arduino IDE를 재시작한 뒤, 다시 ESP32 보드를 선택하고 예제를 컴파일합니다.
이렇게 하면 ESP32용 WiFi 라이브러리가 올바르게 선택되어 컴파일 오류가 사라집니다.
마무리 정리
이 노트에서는 Arduino IDE 2를 중심으로 ESP32 개발 환경을 구축하는 전 과정을 살펴보았습니다.
ESP32 개발 환경은 Arduino IDE, VS Code + PlatformIO, ESP-IDF, AT 명령 기반 등 여러 방법이 있지만, 입문자에게는 Arduino IDE 2 방식이 가장 쉽다는 점.
Arduino 공식 사이트에서 Arduino IDE 2를 설치하고, 환경 설정에서 ESP32 보드용 추가 보드 매니저 URL 을 등록한 뒤, 보드 매니저에서 "esp32 by Espressif Systems" 패키지를 설치하는 과정.
ESP32 보드를 선택하고, GPIO 2에 연결된 온보드 LED를 깜빡이는 기본 스케치를 작성·업로드하는 방법.
업로드 후 직렬 모니터를 열어
115200보레이트로 설정한 뒤, 스케치에서 출력한 문자열을 확인하는 방법.업로드/컴파일 과정에서 흔히 발생하는 ESP32 특유의 오류들(BOOT 버튼 관련, 드라이버·케이블 문제, 보레이트 불일치, 브라운아웃, 라이브러리 충돌 등)과 그 해결책.
이 기본 흐름만 숙지하면, 이후에는 센서 연결, Wi-Fi 접속, MQTT, 웹서버 등으로 자연스럽게 확장해 나갈 수 있습니다.

