Last Updated on 2025년 01월 10일 by Mirinae
소프트웨어 개발을 시작할 때 우리는 먼저 통합개발환경(integrated development environment, IDE)을 선택하는 것부터 시작합니다. IDE란 소스 코드 작성, 빌드, 테스트 및 디버깅에 필요한 기능을 한데 묶은 소프트웨어를 말합니다. 여기에 구문 강조 표시나 코드 자동완성 기능과 같이 개발 작업의 효율성을 높이는 데 도움이 되는 기능을 제공하는 IDE도 있습니다. 그래서 개발환경에 적합한 IDE를 선택하는 것이 중요합니다. 저는 ESPRESSIF 사의 ESP32를 사용하고 있기 때문에 여기에 맞는 개발환경을 설정하겠습니다.
Table of Contents
1. Arduino IDE의 장점과 단점
ESP32를 사용해 개발을 시작하면 제일 많이 사용하는 IDE는 아마도 Arduino IDE가 아닐까 싶습니다. 이는 Arduino IDE의 사용법이 간단할 뿐만 아니라 참조할만한 자료가 많아 입문하시는 분들의 접근성이 높기 때문일 것입니다. 실제로도 코드를 작성한 다음 보드에 업로드하고 시리얼 모니터로 확인하는 과정이 매우 간편하고 이러한 과정이 여러 책이나 블로그에 잘 정리되어 있어 따라하며 배우기에 좋습니다.
그러나 Arduino IDE를 사용하다 보면 기능적인 측면에서 아쉬운 점들이 눈에 띄기 시작합니다. 예를 들면 구문 강조 표시, 코드 자동완성과 같이 하루에도 수십번은 족히 사용할법한 기능이 지원되지 않습니다. 그러나 가장 아쉬운 것은 프로젝트 별로 라이브러리를 관리하는 기능입니다. 프로젝트 별로 사용하는 라이브러리가 다르고, 같은 라이브러리라도 버전이 다를 수가 있는데 Arduino IDE에서는 이를 관리하기가 쉽지 않았습니다.
마지막으로 하나만 더 이야기하자면 Arduino IDE는 Arduino 전용이기 때문에 다른 도구를 통합할 수 없습니다. 취미로 이것저것 하다보면 간단한 서버를 만드는 작업도 진행하게 되는데요, 그러면 SSH 클라이언트도 필요하고 파이썬(Python)과 같은 다른 프로그래밍 언어로 개발을 해야할 때도 있습니다. 각각에 맞는 프로그램을 설치하고 사용하는 것도 물론 좋은 방법입니다. 그러나 저는 하나의 IDE 안에서 모든 작업이 가능한 것을 더 선호합니다.
정리하자면 Arduino IDE는 임베디드 개발에 필요한 최소한의 기능만을 탑재하여 사용법이 간단해 입문하기 좋다는 것이 장점입니다. 그러나 그 반대 급부로 개발 편의성을 높이기 위한 기능의 지원이 부족하다는 것이 단점입니다. 또한 사람에 따라서는 다양한 프로그래밍 언어나 개발 도구와의 통합이 아쉬울 수 있습니다.
2. Visual Studio Code & PlatformIO
Visual Studio Code는 다양한 프로그래밍 언어를 지원하는 소스 코드 편집기입니다. Arduino IDE에서는 지원하지 않았던 구문 강조 표시, 코드 자동완성과 같은 기능을 지원합니다. 여기에 Git 기능이 내장되어 있어서 소스 코드 관리를 좀 더 수월하게 할 수 있습니다. 여기에 더해 플러그인을 설치하는 것으로 SSH, doxygen과 같은 다양한 확장 기능과 테마를 추가할 수 있습니다.
PlatformIO 또한 VS Code의 플러그인 중 하나로 임베디드 소프트웨어 개발을 위한 IDE입니다. PlatformIO IDE의 주요 특장점으로는 내장형 디버거 지원, 유닛 테스팅 프레임워크 지원, 정적 코드 분석 기능 지원 그리고 원격 개발 기능 지원이 있습니다. 특히 Arduino IDE에서 부족했던 프로젝트 관리 기능이 뛰어나 라이브러리를 관리하기 쉬울 뿐만 아니라 여러 개의 프로젝트를 하나의 워크스페이스로 구성하여 작업할 수 있습니다.
VS Code와 PlatformIO 조합의 개발환경은 Arduino IDE에 비해 상대적으로 복잡하고 배워야 하는 것이 늘어나는 것은 사실입니다. 그러나 실제로 해보면 어려운 부분은 없고, 익숙해지면 오히려 더 편하게 느껴지는 부분이 많을 것입니다. 왜냐하면 개발자 각각에게 맞는 환경을 설정할 수 있기 때문입니다. VS Code와 PlatformIO 조합에 관심이 생기셨다면 포스팅의 나머지 부분을 따라가시면 됩니다.
3. 개발환경 설치
3.1. Visual Studio Code 설치
01 Visual Studio Code 공식 사이트로 접속하면 아래와 같은 화면이 나옵니다. “Download for Windows” 버튼을 클릭해 설치 프로그램을 다운로드합니다. 우측의 화살표를 클릭하면 Windows 외의 운영체제를 선택할 수 있습니다.
02 소프트웨어 사용권 계약에 “동의합니다”를 선택합니다. 그런 다음 설치 위치를 지정해줍니다.
03 시작 메뉴 폴더를 만들고 싶지 않다면 하단의 “시작 메뉴 폴더를 만들지 않음”을 선택하시면 됩니다. 그 다음 나타나는 추가 작업 선택에서는 “기타”에 있는 모든 항목을 선택하는 것을 추천합니다. 위의 두 개는 특정 파일 또는 폴더를 우클릭 했을 때 바로 VS Code로 열 수 있는 버튼을 만들어주는 데 이게 편리할 때가 많습니다.
04 추가 작업 선택이 끝났다면 “설치” 버튼을 클릭합니다. 설치가 끝나면 “종료” 버튼을 클릭합니다.
3.2. PlatformIO 플러그인 설치
01 VS Code를 열면 왼쪽에 툴바가 있습니다. 돋보기 아이콘이 있는 그룹의 맨 마지막에 있는 네모난 상자 네 개로 구성된 아이콘을 클릭하면 아래 그림과 같은 “EXTENSIONS” 탭이 열리게 됩니다. 검색창에 설치할 플러그인의 이름을 입력하면 됩니다.
02 검색창에 “platformio”를 입력하면 개미인지 외계인인지 모를 아이콘의 항목이 나타납니다. 해당 항목을 클릭한 다음 “Install” 버튼을 클릭하면 자동으로 설치됩니다. PlatformIO는 Python이 필요하기 때문에 Python이 설치되어 있지 않다면 Python 공식 홈페이지로 이동해 다운로드 및 설치를 진행해야 합니다.
03 PlatformIO 플러그인 설치가 정상적으로 되었다면 아래 그림과 같이 툴바에 PlatformIO 아이콘이 추가되었을 겁니다. PlatformIO 아이콘을 클릭한 다음 “QUICK ACCESS” 하단의 “Open” 버튼을 클릭합니다. 그러면 메인 페인(pane)에 “PIO Home”이라는 탭이 열리게 됩니다.
04 “PIO Home” 탭에서 “Platforms” 버튼을 클릭하면 현재 설치되어 있는 플랫폼의 목록이 나오게 됩니다. 여기서 플랫폼이란 간단히 말해 ESP32와 같은 MCU를 사용해 개발하기 위한 도구들의 모음을 의미합니다. 아직까지는 어떤 플랫폼도 설치하지 않았기 때문에 아무것도 보이지 않고 있습니다.
05 “Installed” 탭의 바로 오른쪽에 있는 “Embedded” 탭을 클릭하면 새로운 플랫폼을 설치할 수 있습니다. 검색창에 띄어쓰기 없이 “espressif32″라고 입력하면 아래와 같이 하나의 항목이 검색됩니다. 검색된 “Espressif 32” 항목을 클릭합니다.
06 “Installation” 밑의 “6.5.0”은 플랫폼의 버전을 나타냅니다. 레거시 코드를 사용하는 경우 호환성 때문에 특정 버전의 플랫폼을 설치해야 하지만 그렇지 않은 경우에는 그냥 “Install” 버튼을 클릭해 설치를 진행합니다. 설치 창을 벗어나면 중단되는 경우가 있는데 인터넷 환경에 따라 30분 가량 걸릴 때도 있으니 VS Code를 최소화한 다음 다른 일을 하시면서 기다리시는 걸 추천합니다.
07 설치가 정상적으로 완료되었다면 아래와 같이 “Platform has been succesfully installed”라는 문구가 출력됩니다. “OK” 버튼을 클릭하는 것으로 설치를 마무리합니다. 이제 VS Code와 PlatformIO를 사용해서 ESP32를 갖고 놀기 위한 개발환경이 갖춰졌습니다. 축하합니다!
3.3. 추천 플러그인 목록
01 “vscode-icons”와 “Material Theme” 플러그인은 모두 VS Code의 디자인을 향상시켜줍니다. “vscode-icons” 플러그인은 프로젝트 디렉토리 안의 파일이나 폴더의 아이콘을 보다 예쁘게 만들어줍니다. “Material Theme”은 VS Code 머티리얼 디자인을 따르는 테마를 추가시킵니다.
02 “Doxygen”과 “Code GPT”는 개발을 도와주는 플러그인입니다. “Doxygen”은 소프트웨어 문서화를 돕는 도구로 잘 사용하면 실제 코드를 보다 쉽게 읽고 관리하는 데 도움을 줍니다. “Code GPT” 플러그인은 정말 장안의 화제인 인공지능을 이용해 개발할 수 있는 기능을 제공합니다.
03 마지막은 서버 단의 작업을 수행할 때 사용하는 플러그인들로 “Remote – SSH” 플러그인은 원격지의 서버의 터미널에 접속하는 데 사용됩니다. “IntelliCode” 플러그인은 Python 등의 언어를 사용할 때 인공지능 기반의 코드 자동 완성 기능을 제공합니다.