홈 / 개발환경구축 / PlatformIO / Arduino IDE & PlatformIO 개발 플랫폼 선택
확장성과 세밀한 제어를 고려한다면, PlatformIO를 선택해야죠...
안녕하세요! ESP32로 첫 프로젝트를 시작하려는데 "Arduino IDE를 쓸까, PlatformIO를 쓸까?" 고민되시나요? 저도 처음 시작할 때 똑같은 고민을 했었어요. 인터넷에서 찾은 정보들은 너무 전문적이어서 뭐가 뭔지 모르겠더라고요.
이 글에서는 개발을 막 시작하는 분들의 눈높이에 맞춰서, 마치 옆에서 친구가 설명해주듯이 두 도구를 비교해보겠습니다. 어려운 용어는 최대한 쉽게 풀어서 설명하고, 실제로 사용해보면서 느꼈던 솔직한 경험담도 함께 나눌게요.
1. ArduinoIDE와 PlatformIO 플랫폼 이해하기
Arduino IDE란?
Arduino IDE는 아두이노 보드(ESP32 포함)에 프로그램을 올리기 위한 무료 프로그램입니다. 마치 워드프로세서처럼 간단한 인터페이스를 가지고 있어서, 프로그래밍을 처음 배우는 사람도 쉽게 사용할 수 있어요.
사용자 인터페이스:
- 위쪽에 간단한 메뉴바
- 가운데 넓은 코드 작성 공간
- 아래쪽에 결과를 보여주는 창
PlatformIO란?
PlatformIO는 VS Code라는 프로그램 안에 설치하는 확장 프로그램입니다. VS Code는 마이크로소프트에서 만든 무료 코드 편집기예요. 좀 더 전문적인 기능들이 많이 들어있어서, 처음에는 복잡해 보일 수 있어요. 하지만 이것도 처음에만 접근하기 복잡해보이지 하루만 사용해도 익숙한 화면일거예요. 모든 통합개발환경(IDE, Integrated Development Environment)가 거의다 비슷 비슷한 화면 인터페이스를 가지고 있어요.
사용자 인터페이스:
- 왼쪽에 파일 목록
- 가운데 코드 작성 공간
- 아래쪽에 터미널(명령어 입력하는 곳)
- 오른쪽에 여러 도구들
2. 첫 시작의 차이점
Arduino IDE로 시작하기
설치 과정 (소요시간: 5분)
- arduino.cc 접속 (https://www.arduino.cc)
- 운영체제에 맞는 버전 다운로드
- 설치 파일 실행
- "다음, 다음, 완료" 클릭
- 바로 사용 가능!
첫 코드 작성까지:
void setup() {
// 여기에 초기 설정 코드, 센서나 입/출력 핀등을 정의
}
void loop() {
// 여기에 반복 실행할 코드, 임베디드 보드의 특성상 계속 반복적인 작업을 실행
}
이 기본 틀이 자동으로 나타나서, 바로 코드를 작성할 수 있어요. 마치 빈 노트에 글을 쓰는 것처럼 직관적이죠.
PlatformIO로 시작하기
설치 과정 (소요시간: 15-20분)
- VS Code 다운로드 및 설치
- VS Code 실행
- 왼쪽의 확장 아이콘(네모 모양) 클릭
- "PlatformIO IDE" 검색 후 설치
- VS Code 재시작
- PlatformIO 초기 설정 완료 대기
첫 프로젝트 만들기:
- PlatformIO 홈 화면에서 "New Project" 클릭
- 프로젝트 이름 입력 (예: my_first_project)
- 보드 선택 (예: ESP32 Dev Module)
- 프레임워크 선택 (Arduino 선택)
- 프로젝트 생성 완료
처음에는 "왜 이렇게 복잡하지?" 싶을 거예요. 저도 그랬거든요. 하지만 이 설정 과정이 나중에 큰 도움이 됩니다.
3. 실제 코딩할 때의 차이
Arduino IDE에서 코딩하기
LED 깜빡이는 코드 작성:
void setup() {
pinMode(2, OUTPUT); // 2번 핀을 출력으로 설정
}
void loop() {
digitalWrite(2, HIGH); // LED 켜기
delay(1000); // 1초 대기
digitalWrite(2, LOW); // LED 끄기
delay(1000); // 1초 대기
}
장점:
- 초기 실행시 setup(), loop()함수가 정해져 있고, 필요한 곳에 코드를 문서편집기처럼 작성하시면 되요.
- 메뉴가 간단해서 헷갈리지 않아요
- 에러가 나면 직관적으로 빨간색으로 표시해줘요
단점:
- 함수 이름을 다 외워야 해요 (통합개발환경이 아닌 탓에 자동완성이 거의 없음)
- 오타를 내도 실행할 때까지 모르는 경우가 많아요
- 코드가 길어지면 관리하기 어려워요
"처음에 Serial.println을 serial.println으로 잘못 썼는데, 컴파일할 때까지 오류를 발견하지 못했어요. 자동완성이 있었다면 이런 실수를 안 했을 텐데..."
PlatformIO에서 코딩하기
같은 LED 깜빡이는 코드:
#include <Arduino.h> // 이 줄이 추가로 필요해요. 아두이노 보드와 관련된 라이브러리를 포함
void setup() {
pinMode(2, OUTPUT);
}
void loop() {
digitalWrite(2, HIGH);
delay(1000);
digitalWrite(2, LOW);
delay(1000);
}
장점:
- 타이핑하면 함수 이름이 자동으로 나타나요 (VSCODE의 다양한 플러그인을 통해서 자동완성 및 AI 도움을 받을 수 있어요.)
- 오타를 내면 즉시 빨간 밑줄로 알려줘요
- 함수에 마우스를 올리면 설명이 나와요
- 코드를 여러 파일로 나누어 정리할 수 있어요
단점:
- 처음에는 화면이 복잡해 보여요
- #include <Arduino.h> 같은 추가 코드가 필요해요
- 설정할 게 많아서 초보자에게는 부담스러워요
"처음에는 자동완성이 너무 많이 나와서 오히려 방해된다고 생각했어요. 하지만 일주일 정도 쓰다 보니 이제 없으면 불편해서 못 쓰겠더라고요."
4. 라이브러리 사용하기 (외부 코드 가져다 쓰기)
프로그래밍에서 "라이브러리"란 다른 사람이 만들어 놓은 코드를 가져다 쓰는 것을 말해요. 예를 들어, WiFi 연결이나 센서 사용 같은 복잡한 기능을 쉽게 사용할 수 있게 해주는 코드 그룹입니다. 어떤 라이브러리를 가져다 쓸것인가? 에 대한 의문이 있는데 이런게 경험치고 숙련된 개발자와 초급 개발자의 차이이기도 합니다. 요즘에 AI한테 물어보면 다 알려줍니다.
Arduino IDE에서 라이브러리 사용
라이브러리 설치 과정:
- 메뉴에서 "도구" → "라이브러리 관리" 클릭
- 검색창에 원하는 라이브러리 이름 입력 (예: "DHT sensor")
- 목록에서 찾아서 "설치" 버튼 클릭
- 설치 완료 후 코드에서 사용
문제점:
상황: 프로젝트 A에서는 ArduinoJson 6.0 버전이 필요
프로젝트 B에서는 ArduinoJson 7.0 버전이 필요
Arduino IDE: 하나의 버전만 설치 가능
결과: 프로젝트를 바꿀 때마다 라이브러리를 설치/제거 반복
"처음에는 라이브러리 설치가 쉬워서 좋다고 생각했어요. 하지만 프로젝트가 여러 개 생기니까 라이브러리 버전 때문에 계속 문제가 생기더라고요. 특히 친구와 같은 프로젝트를 할 때 '내 컴퓨터에서는 되는데 너는 왜 안 돼?' 하는 상황이 자주 발생했어요."
PlatformIO에서 라이브러리 사용
라이브러리 설정 (platformio.ini 파일에 작성):
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
lib_deps =
bblanchon/ArduinoJson@^6.19.4
adafruit/DHT sensor library@^1.4.4
WiFi
장점:
- 프로젝트마다 독립적인 라이브러리 환경을 구축할 수 도 있고, 개발하는 PC에 따라서도 다양하게 설정할 수 있음
- 필요한 라이브러리가 자동으로 다운로드됨 (lib_deps에 라이브러리를 정의하기만 하면 자동으로 해당 리소스를 다운받아서 .pio/lib_deps 폴더에 복사합니다.
- 팀 프로젝트에서 모든 사람이 같은 환경 구성 가능 (platformIO.ini만 공유한다면 같은 개발환경을 갖는다고 할 수 있어요)
"처음에는 이 파일이 뭔지 몰라서 무서웠어요. 하지만 한 번 이해하고 나니까 정말 편하더라고요. 새 컴퓨터에서도 프로젝트를 열기만 하면 모든 라이브러리가 자동으로 설치되니까요."
5. 문제 해결하기 (디버깅)
프로그래밍을 하다 보면 코드가 생각대로 동작하지 않는 경우가 많아요. 이때 문제를 찾아서 고치는 과정을 "디버깅"이라고 합니다. 에러 상황을 빠르게 인지해서 문제가 있는 곳을 찾아서 해결하는게 프로그래머의 숙련도를 평가하기도 합니다.
Arduino IDE에서 문제 해결
주로 사용하는 방법:
void loop() {
int sensorValue = analogRead(A0);
// 값이 제대로 읽히는지 확인하기 위해 출력
Serial.print("센서 값: ");
Serial.println(sensorValue);
if (sensorValue > 500) {
Serial.println("센서 값이 500보다 큼"); // 이 부분이 실행되는지 확인
digitalWrite(LED_PIN, HIGH);
} else {
Serial.println("센서 값이 500보다 작음"); // 이 부분이 실행되는지 확인
digitalWrite(LED_PIN, LOW);
}
}
특징:
- Serial.println()으로 값을 확인하는 방법이 거의 유일해요. 적재 적소에 디버그용 프린트문을 잘 넣어야 합니다.
- 코드 곳곳에 확인용 출력문을 넣어야 해요
- 문제를 찾으려면 추측에 의존하는 경우가 많아요
PlatformIO에서 문제 해결
더 다양한 방법 사용 가능:
- 똑똑한 오류 표시:
- 오타나 문법 오류를 즉시 표시 (각종 lint기능을 갖는 플러그인을 설치하면 실시간 잠재적 오류를 표시해 줍니다.)
- 마우스를 올리면 오류 설명 출력 (오류가 예상되는 코드에 빨간줄이 생기고, 빨간줄에 마우스를 올리면 예상 오류내용을 자세하게 확인할 수 있습니다.)
- 변수 값 실시간 확인:
- 특정 지점에서 프로그램을 멈추고 변수 값 확인 가능
- 코드를 한 줄씩 실행하면서 동작 확인 가능
- 고급 시리얼 모니터:
- 그래프로 센서 값 변화 확인
- 데이터를 파일로 저장
"Arduino IDE로 개발할 때는 LED가 안 켜지면 '어디가 문제지?' 하면서 코드 전체를 다시 봐야 했어요. PlatformIO에서는 빨간 밑줄로 오타를 바로 알려주니까 그런 기본적인 실수가 많이 줄어들었어요."
6. 프로젝트 크기별 비교
작은 프로젝트 (코드 50줄 이하)
예시: LED 깜빡이기, 버튼으로 LED 제어
Arduino IDE:
- 빠른 시작 가능
- 설정할 게 없어서 간단
- 튜토리얼이 많음
PlatformIO:
- 설정이 복잡함
- 간단한 코드에는 과한 기능
- 나중에 확장하기 좋음
결론: 작은 프로젝트는 Arduino IDE가 더 적합합니다.
중간 프로젝트 (코드 100-500줄)
예시: WiFi 연결해서 웹페이지 만들기, 여러 센서 사용
Arduino IDE:
- 파일 관리가 어려워짐
- 라이브러리 충돌 시작
- 코드 찾기가 힘듦
PlatformIO:
- 파일을 나누어서 정리 가능
- 라이브러리 자동 관리
- 검색 기능으로 코드 찾기 쉬움
결론: 중간 사이즈 정도 크기부터는 PlatformIO가 더 편해요.
큰 프로젝트 (코드 500줄 이상)
예시: 스마트홈 시스템, IoT 데이터 수집 장치
Arduino IDE:
- 관리가 거의 불가능
- 팀 작업 어려움
- 버그 찾기 힘듦
PlatformIO:
- 체계적인 폴더 구조
- 팀 작업 지원
- 고급 디버깅 도구
결론: 큰 프로젝트는 PlatformIO가 필수예요.
7. 혼자 vs 팀 프로젝트
혼자 공부할 때
Arduino IDE:
- 온라인 튜토리얼의 90%가 Arduino IDE 기준
- 문제가 생겼을 때 검색하면 답을 쉽게 찾을 수 있음
- 복잡한 설정 없이 바로 시작 가능
PlatformIO:
- 학습 곡선이 가파름 (배우는 데 시간이 더 걸림)
- 하지만 한 번 익히면 더 효율적
- 최신 개발 방법을 배울 수 있음
친구나 팀과 함께할 때
Arduino IDE의 문제점:
상황: 친구와 함께 프로젝트 진행
나: "내 코드 카톡으로 보내줄게"
친구: "어? 컴파일 에러가 나는데?"
나: "이상하다, 내 컴퓨터에서는 되는데..."
친구: "라이브러리 버전이 다른가봐"
나: "어떤 버전 썼는지 기억 안 나..."
PlatformIO의 해결책:
- 프로젝트 폴더를 통째로 공유하면 됨
- 라이브러리 버전 정보가 파일에 저장됨
- 모든 사람이 동일한 환경에서 작업 가능
8. 비용 관점에서 비교
금전적 비용
- Arduino IDE: 무료
- PlatformIO: 무료 (VS Code도 무료)
시간 비용
초기 학습 시간:
- Arduino IDE: 1-2시간이면 기본 사용 가능
- PlatformIO: 1-2주 정도 익숙해지는 시간 필요
장기적 개발 시간:
- Arduino IDE: 프로젝트가 커질수록 비효율적
- PlatformIO: 초기 투자 후 큰 시간 절약
실제 경험 비교:
같은 WiFi 온도계 프로젝트를 만드는 데 걸린 시간:
Arduino IDE:
- 첫 번째 시도: 3일
- 기능 추가: 2일
- 버그 수정: 1일
- 총 6일
PlatformIO:
- 첫 번째 시도: 4일 (설정 포함)
- 기능 추가: 1일
- 버그 수정: 0.5일
- 총 5.5일
두 번째 비슷한 프로젝트부터는 PlatformIO가 훨씬 빨랐어요.
9. 상황별 추천
Arduino IDE를 선택하세요
이런 분들에게 추천:
- 프로그래밍을 처음 시작하는 분
- 간단한 예제를 따라하며 배우고 싶은 분
- 빠른 프로토타입 제작이 목적인 분
- 교육/학습용으로 사용하는 분
이런 프로젝트에 적합:
- LED 제어, 센서 읽기 같은 기본 예제
- 코딩 교육용 프로젝트
- 간단한 일회성 프로젝트
- 온라인 튜토리얼 따라하기
PlatformIO를 선택하세요
이런 분들에게 추천:
- 체계적인 개발 환경을 원하는 분
- 큰 프로젝트를 계획하고 있는 분
- 팀 프로젝트를 진행하는 분
- 최신 개발 도구를 배우고 싶은 분
이런 프로젝트에 적합:
- IoT 시스템 개발
- 상용 제품 개발
- 여러 명이 함께하는 프로젝트
- 지속적으로 유지보수할 프로젝트
10. 단계별 추천 로드맵
1단계: Arduino IDE로 시작 (1-2개월)
목표: 기본 개념 익히기
- LED 깜빡이기
- 버튼 입력 받기
- 센서 값 읽기
- 시리얼 통신
- 간단한 WiFi 연결
2단계: 첫 번째 프로젝트 완성
예시 프로젝트:
- 온습도 센서로 측정해서 스마트폰으로 확인하기
- 집에 들어오면 자동으로 켜지는 조명
- 화분 물주기 알림 시스템
3단계: PlatformIO 체험 (1주)
목표: PlatformIO 환경에 익숙해지기
- VS Code 설치 및 기본 사용법
- PlatformIO 설치
- 기존 Arduino 코드를 PlatformIO로 변환
- 간단한 프로젝트 하나 완성
4단계: PlatformIO로 본격 개발
목표: 복잡한 프로젝트 진행
- 여러 파일로 코드 나누기
- 라이브러리 관리 익히기
- 팀 프로젝트 진행
- 자동화 도구 활용
11. 자주 묻는 질문
Q: "Arduino IDE가 더 쉬운데 굳이 PlatformIO를 배워야 하나요?"
A: 목적에 따라 다릅니다. 취미로 간단한 프로젝트만 한다면 Arduino IDE만으로도 충분해요. 하지만 좀 더 체계적이고 큰 프로젝트를 하고 싶다면 PlatformIO를 추천합니다. 마치 자전거(Arduino IDE)와 자동차(PlatformIO)의 차이라고 생각하시면 돼요.
Q: "PlatformIO가 너무 복잡해 보이는데..."
A: 저도 처음에는 그렇게 생각했어요. 하지만 실제로는 사용하는 기능의 90%는 Arduino IDE와 비슷합니다. 복잡해 보이는 기능들은 필요할 때만 조금씩 배우면 돼요. 한 번이라도 실행을 해보면 오히려 PlatformIO가 더 간편하고 다양한 방법으로 접근할 수 있어요. 처음에야 몰라서 그렇지 한 번 해보면 원래 그렇게 하는거야 같은 느낌 이랄까?
Q: "Arduino IDE에서 PlatformIO로 바꾸면 기존 코드는 어떻게 하나요?"
A: 기존 Arduino 코드는 거의 그대로 사용할 수 있어요. 맨 위에 #include <Arduino.h> 한 줄만 추가하고, 파일 이름을 .ino에서 .cpp로 바꾸면 됩니다. PlatformIO에서도 *.ino를 인식할 수는 있지만, main.cpp이외의 다른 파일들과의 연계를 위해 *.cpp로 변경해서 프로젝트를 진행하는게 현면해요.
Q: "어느 걸 먼저 배워야 하나요?"
A: Arduino IDE부터 시작하는 것을 강력히 추천합니다. 기본 개념을 익힌 후 PlatformIO로 넘어가는 것이 자연스러운 학습 과정이에요. 원래 쉬운것에서 부터 차근차근 넓고 깊고 복잡한 쪽으로 가야 부담감이 적어요. 쉬운것 부터 하나 하나.....그래봤자 아주 작은 프로젝트 한두개 해보면 Arduino가 뭔지 금방 아실거예요. 그다음 넘어가는거니깐 조급해하실 필요 없습니다.
다음 단계는 ESP-IDF로 좀더 하드웨어에 접근된 방식이라 많이 복잡해서 PlatforIO의 Arduino에서 ESP-IDF 프레임워크로 넘어가는건 많은 고민이 필요합니다.
마무리 - 완벽한 선택은 없어요
제가 3년간 두 도구를 모두 사용해본 결론은 이것입니다: "상황에 맞는 도구를 선택하는 것이 가장 중요하다."
Arduino IDE는 여전히 훌륭한 도구입니다. 특히 처음 시작하는 분들에게는 이보다 좋은 도구가 없어요. 복잡한 설정 없이 바로 시작할 수 있고, 인터넷에 자료도 많거든요.
PlatformIO는 좀 더 전문적인 도구입니다. 초기 학습 비용은 높지만, 익숙해지면 Arduino IDE로는 할 수 없는 많은 일들을 할 수 있어요.
제안하는 방법:
- Arduino IDE로 시작해서 기본기를 쌓으세요
- 첫 번째 프로젝트를 완성해보세요
- 한계를 느끼기 시작하면 PlatformIO를 시도해보세요
- 두 도구 모두 필요에 따라 사용하세요
기억하세요. 도구는 목적을 달성하기 위한 수단일 뿐입니다. 가장 중요한 것은 여러분의 멋진 아이디어를 현실로 만드는 것이에요. Arduino IDE든 PlatformIO든, 여러분의 프로젝트를 완성시켜주는 도구가 바로 최고의 도구입니다!
이 글이 도움이 되셨나요? 댓글로 여러분의 첫 프로젝트 경험이나 도구 선택 고민을 공유해주세요. 함께 배워나가요!
'AI 코딩' 카테고리의 다른 글
[AI코딩.03]Claude 4.0 Sonnet - 코딩 특화 기능 심화 탐구 (3) | 2025.07.05 |
---|---|
[AI코딩.02] ChatGPT와 GPT-4o - 코딩에서의 활용법 (11) | 2025.07.03 |
Git을 이용한 GitHub 활용 실제 (4) | 2025.07.02 |
[AI코딩.01] AI 코딩 도구 생태계 개요 - 개발자의 새로운 동반자 (5) | 2025.07.01 |
PlatformIO 설치 및 활용 : 초보자 가이드 (7) | 2025.06.30 |