[ESP32] 자동차 CAN Hacking - PlatformIO 환경 구성(2)
개발 환경
이전 포스팅에서 구매한 ESP32C3 SuperMini를 본격적으로 가지고 놀기 위해, 개발 환경을 구성해 보자.
ESP32는 아래와 같이 두 가지 환경을 제공한다.
- Arduino IDE
- PlatformIO(Visual Studio Code의 Extention 형태로 존재)
두 가지 환경의 장/단점을 정리해보면 아래와 같다.
- Arduino IDE
- 장점
- 직관적인 인터페이스
- 익숙한 사용 방법(기존 아두이노 사용자들)
- 단점
- 느린 빌드속도(-j 옵션 사용 불가능)
- 장점
- PlatformIO
- 장점
- 빠른 빌드속도
- 최신 IDE
- 단점
- 생소함(?)
- 장점
Arduino IDE는 인터페이스가 직관적이고, 기존에 아두이노를 사용하던 사람들은 편리할 수 있으나, 빌드 속도가 느리다는 치명적인 단점이 있다.
아두이노(Atmega128 계열)의 BSP(Board Support Package)는 코드의 사이즈가 작아 체감하기 힘들 수 있으나, ESP32의 경우 Bluetooth, WiFi 등 다양한 기능이 추가되어 #include를 몇 개만 하여도 빌드 시간이 5분이 넘어가는 불상사가 발생한다...
PlatformIO가 최신 IDE이기도 하고 Stack Overflow에도 많은 Reference가 있으니 한번 사용해 보도록 하자.
PlatformIO 설치
Visual Studio Code 설치
https://code.visualstudio.com/
Visual Studio Code - Code Editing. Redefined
Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications. Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.
code.visualstudio.com
다운받아 설치하자.
Extention 설치
설치 이후 Visual Studio Code를 재시작한다.
Project 생성하기
위의 과정이 모두 끝나면, 아래와 같은 모습의 프로젝트가 생성된다.
보드 속성 설정하기
사용하는 보드에 따라, 보드의 속성값(사용할 Flash의 크기, 업로드 속도, 포트 등)을 다르게 바꿔주어야 한다.
위의 설정은 platformio.ini에서 설정 가능하다.
[env:esp32-c3-devkitc-02]
platform = espressif32
board = esp32-c3-devkitc-02
framework = arduino
monitor_speed = 115200 ; 시리얼 콘솔 사용 시 사용할 속도
upload_port = COM[3] ; 업로드에 사용할 COM Port(장치관리자->포트->ESP32의 포트 번호 확인 후 설정(Ex. COM4: COM[4]))
upload_speed = 92160 ; 보드에 코드를 올릴 때의 속도
build_flags =
-D ARDUINO_USB_MODE=1
-D ARDUINO_USB_CDC_ON_BOOT=1
upload_port는 사용하는 PC 환경에 따라 다르므로, 필히 장치관리자에서 확인 후 변경한다.
예를 들어 'USB 직렬 장치(COM3)'인 경우에는, COM[3]으로 설정해 주면 된다.
또한, build_flags속성도 반드시 추가해 준다.
설정된 속성들은 USB Port를 어떤 식으로 사용할지에 대한 설정값인데, 위의 속성이 누락되면 Serial.print()로 출력하는 로그를 확인할 수 없다.
테스트 코드 빌드 & 업로드
main.cpp 파일 변경
#include <Arduino.h>
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.println("hello");
delay(1000);
}
Code Build & Upload
Serial Monitor
Serial.print()로 출력한 메시지를 확인할 수 있는 콘솔이다.
우측 상단의 콘센트(?) 모양을 눌러 Open 한다.
위 사진과 같이, 1초마다 hello 메시지가 출력된다!
개발 환경 구성이 완료되었으니, 본격적으로 CAN Trancever를 만져보자.