[Arduino] - Platform IO + Wokwi 를 VSCode 에서 사용해보자

청주는사과아님·2025년 6월 24일
1

side-story

목록 보기
5/7

최근 친구의 부탁으로 임베디드 시스템을 개발하게 되었습니다.
아두이노 기반으로 개발을 진행하고 있는데, 임베디드 개발 환경 특성상 실제 하드웨어 없이 사전에 기능을 구현해야 할 때도 많습니다.

그래서 이번 포스팅에서는 VSCode 에서 온라인 임베디드 시뮬레이터인 Wokwi 를 PlatformIO 와 함께 사용하는 방법을 소개드리고자 합니다.


📦 PlatformIO & Wokwi?

PlatformIO

PlatformIO 는 C/C++ 기반의 임베디드 시스템 개발을 위한 통합 개발 환경입니다. 다양한 플랫폼과 보드, 프레임워크를 지원하며, 특히 다음과 같은 유용한 기능을 제공합니다:

  • 빠른 개발: 코드 자동 완성, 스마트 린터, 코드 인스펙션

  • 통합 테스트: Unity 를 통한 unit / integration test 가능

  • 통합 디버거: 250개 이상의 보드 디버깅 지원, 보드별 pre-setup 된 디버깅 configuration 제공

Wokwi

Wokwi는 온라인 전자회로 시뮬레이터로, 아두이노, ESP32, STM32 등을 포함한 다양한 보드와 센서, 부품을 가상 환경에서 시뮬레이션할 수 있도록 도와줍니다.

모두 VSCode marketplace 에 등록되어 있어 단일 IDE 충인 저에겐 유용히 사용할 수 있습니다.


🔧 Extension setup

I. PlatformIO IDE

VSCode에서 PlatformIO 확장 프로그램을 설치한 뒤, PlatformIO Home 을 실행하여 프로젝트를 생성합니다.

이때 사용할 보드와 프레임워크를 선택할 수 있으며, Arduino Uno 를 기준으로 예제를 구성하였습니다.

추가로 프로젝트 directory 를 지정해 C:/, /user/ 같은 이상한 곳에 구성되지 않도록 만들었습니다.

프로젝트 구성 시 PlatformIO 가 필요한 파일을 다운받아 시간이 걸릴 수 있습니다.
모든 구성이 완료되면 Reload Now 를 눌러 VSCode 를 다시 열어줍니다.

마지막으로 PlatformIO 를 통해 build 가 성공하면 extension 이 제대로 적용된것을 확인할 수 있습니다.


II. Wokwi Simulator

Wokwi extension 을 사용하기 위해선 VSCode 에 Wokwi licence 를 등록해야 합니다.

VSCode의 Command Palette 에서 Wokwi: Request a New Licence 를 실행하면 자동으로 Wokwi 페이지로 이동되며, 라이선스를 발급받을 수 있습니다.

참고로 무료 계정은 Wokwi extension 을 사용하려면 반드시 인터넷 연결이 필요합니다. 오프라인 사용은 유료 계정이 필요합니다.
아무튼 licence 를 발급하면 아래와 같이 VSCode Wokwi extension licence 가 활성화됩니다.


🧪 사용 준비하기

Wokwi 공식 문서에서 VSCode 확장을 설정하는 방법을 확인할 수 있습니다.

특히 PlatformIO 와 결합한 예시도 제공해서 막혔을 경우 참고하기 좋습니다.

Wokwi extension 사용을 위해선 다음 2 가지 구성이 필요합니다.

  • wokwi.toml
  • diagram.json

I. wokwi.toml

wokwi.toml 는 Wokwi 시뮬레이터에 빌드된 펌웨어 정보를 제공하는 설정 파일입니다.
PlatformIO 를 사용하는 경우 다음과 같은 형태로 작성할 수 있습니다.

[wokwi]
version=1
firmware='.pio/build/uno/firmware.hex'
elf='.pio/build/uno/firmware.elf'

저같은 경우 Arduino Uno board 로 프로젝트를 생성했기에 .pio/.../uno/... 인 것을 확인할 수 있습니다.
다른 board 를 선택하신 경우 아래처럼 workspace 에 해당 파일을 직접 확인해 작성해 주시길 바랍니다.


II. diagram.json

diagram.json 은 시뮬레이션 회로 구성을 나타내는 파일로, 아래 공식 문서에서 구성 문법을 확인하실 수 있습니다.

하지만 문법에 맞춰 회로를 직접 코드로 구성하는 것은 매우 귀찮으므로, Wokwi 사이트에서 그린 다이어그램으로 이를 대체해 줍니다.

위처럼 editor 로 간편히 구성하고, 회로의 diagram.json 의 내용을 복붙해줍니다.

다이어그램을 적용 후, 해당 파일을 Wokwi Diagram Editor 로 열어보면 회로가 어떻게 구성되었는지 확인할 수 있습니다.

Wokwi 사이트에서와 동일한 회로가 구성된 것을 확인할 수 있습니다.


💻 예제 코드 실행

이제 마지막으로 VSCode 에서 시뮬레이션을 실행해 보겠습니다.
간단한 예시 코드를 준비해 줍니다.

// src/main.cpp
#include <Arduino.h>

int sensorPin = A0;
int ledPin = DD2;

void setup() {

  Serial.begin(9600);
  while (!Serial);

  Serial.println("Serial setup completed");

  pinMode(ledPin, OUTPUT);

}

void loop() {

  int value = analogRead(sensorPin);

  Serial.print("Sensor value : ");
  Serial.println(value);

  if (value <= 1024 / 2)
    digitalWrite(ledPin, HIGH);
  else
    digitalWrite(ledPin, LOW);

  delay(100);
}

조도센서 밝기에 따라 LED 가 ON/OFF 되는 예시입니다.

해당 코드로 시뮬레이션 전, PlatformIO 에서 먼저 빌드를 수행해야 합니다.
빌드가 완료되어야 Wokwi 가 최신 바이너리 파일을 읽어 올 수 있기 때문입니다.

  • PlatformIO Build 하는 모습

Build 가 완료되면 Command Palette 로 Wokwi: Start Simulator 를 통해 시뮬레이션을 시작할 수 있습니다.

아래처럼 시뮬레이션이 작동하는 걸 볼 수 있습니다.


이번 포스팅에서는 VSCode 에서 PlatformIO 와 Wokwi를 통합해 사용하는 방법을 살펴보았습니다.
사실 이들을 처음 사용한건 졸업 캡스톤 프로젝트 였었는데 당시에도 큰 도움을 받았습니다.

이번에는 VSCode 까지 통합하면서 더 빠르고 재밌게 개발할 수 있지 않을까 기대하고 있습니다.

다음에도 유용한 정보를 알게된다면 포스팅 해보도록 하겠습니다.


profile
나 같은게... 취준?!

0개의 댓글