SUPERNEOX Developer Help Center

ProffieBoard V2 / ProffieOS 개발자 가이드

SUPERNEOX Proffie 기반 라이트세이버의 펌웨어 개발, 설정 파일 구성, 제품 기술 지원 및 고급 통합 작업을 위한 기술 레퍼런스입니다. ProffieBoard V2/V2.2와 ProffieOS를 사용하는 펌웨어 개발자, 설정 엔지니어, 제품 기술 담당자 및 고급 사용자를 대상으로 합니다.

문서 정보: 한국어 개발자 / 기술 문서 ProffieBoard V2/V2.2 ProffieOS

버전에 따라 내용이 달라질 수 있습니다. ProffieOS는 지속적으로 개발 및 업데이트되고 있습니다. 따라서 릴리스에 따라 설정 문법, prop, style, 메뉴, 시리얼 명령어 및 하드웨어 지원 범위가 변경될 수 있습니다. 특정 빌드에 대한 최종 기준은 해당 빌드에서 사용한 ProffieOS 소스 코드와 이에 대응하는 공식 문서를 기준으로 확인하십시오.

1. 적용 범위 및 버전 관리

본 문서는 Arduino IDE, ProffieOS, config.h 파일, SD 카드 콘텐츠, Preset 및 Blade Styles를 중심으로 한 ProffieBoard V2 개발 워크플로를 설명합니다.

최신 ProffieOS에서도 기본적인 개발 절차는 동일합니다. Arduino 지원 환경을 설치하고 ProffieOS를 준비한 다음, 대상 보드에 맞는 설정 파일을 작성하고 CONFIG_FILE을 통해 해당 파일을 지정합니다. 이후 펌웨어를 컴파일하여 업로드하고, 필요에 따라 설정을 반복적으로 수정하고 테스트합니다.

문서 및 소스의 우선순위

  1. 보드별 소스 및 설정: 실제 대상 보드에 적용되는 ProffieOS 소스와 보드별 configuration을 가장 우선적으로 확인하십시오.
  2. 최신 공식 문서: ProffieOS 공식 Documentation을 참고하십시오.
  3. 보드 레퍼런스: ProffieBoard V2 공식 reference documentation을 확인하십시오.
  4. Repository 변경 이력: 버전별 동작 차이가 있는 경우 GitHub commit 및 release notes를 함께 확인하십시오.

2. 펌웨어 아키텍처 및 기준 데이터 구조

SUPERNEOX Proffie 기반 라이트세이버는 다음과 같은 계층 구조의 시스템으로 이해하는 것이 좋습니다: 하드웨어 배선 → 보드별 설정 → ProffieOS 기능 정의 → Blade 정의 → Preset / Style / Prop → SD 카드 리소스.

특정 계층의 문제가 다른 계층의 문제처럼 나타날 수 있습니다. 따라서 문제를 진단할 때는 가장 낮은 의존 계층인 하드웨어와 배선부터 순차적으로 확인하는 것이 권장됩니다.

하드웨어 계층

배터리, 스피커, 버튼, NeoPixel 데이터 및 전원, Blade ID, SD 카드, 디스플레이, Accent LED 및 기타 선택형 주변 장치를 포함합니다.

빌드 계층

Arduino IDE, 보드 패키지 및 플러그인, ProffieOS 소스 트리와 선택된 CONFIG_FILE을 포함합니다.

런타임 계층

BladeConfig, Preset, Style, Prop, 모션 및 오디오 동작, 메뉴와 저장 상태를 포함합니다.

리소스 계층

SD 카드의 Sound Font, Track, Configuration 파일, 이미지, 디스플레이 리소스 및 기타 런타임 데이터를 포함합니다.

권장 개발 방식: 제품용 라이트세이버의 각 하드웨어 Revision마다 사용한 정확한 ProffieOS release/commit, 전체 configuration 파일, SD 카드 리소스 패키지, 배선 Revision 및 정상 동작이 확인된 컴파일 결과물을 함께 보관하십시오.

3. ProffieBoard V2 하드웨어

ProffieBoard V2는 고급 펌웨어 커스터마이징을 지원하는 오픈소스 라이트세이버 컨트롤러입니다. 전원, 버튼, 주소 지정형 LED, 디스플레이, 모션 센서, 디버깅 인터페이스 및 추가 주변 장치를 연결할 수 있습니다.

3.1 핵심 하드웨어

  • ProffieBoard V2/V2.2 컨트롤러
  • 3.7V Li-ion 배터리
  • 스피커
  • 주소 지정형 Blade 또는 지원되는 LED 하드웨어
  • 개발용 Micro-USB 연결
  • Sound Font 및 리소스 저장용 microSD 카드

3.2 주요 핀

연결부 용도
BATT+ 보드의 배터리 입력.
BATT- LED 전원 리턴 및 고전류 리턴 경로.
GND 보드 전자회로의 Ground 연결.
Button 1/2/3 물리 버튼 입력.
Data 1 / ID Blade ID 측정 및/또는 첫 번째 주소 지정형 LED 데이터 출력.
Data 2 / Data 3 추가 주소 지정형 LED 출력.
Data4 / DAC 설정에 따라 추가 데이터 출력 또는 Audio DAC로 사용됩니다.
LED 1-6 지원되는 LED 채널 연결.
SDA / SCL 모션 센서 및 주변 장치와의 I²C 통신.
SWDIO / SWDCLK ST-LINK 디버깅 인터페이스.
전원 및 극성 주의: 보드에는 역극성 보호 기능이 적용되어 있지만, 잘못된 배터리 극성으로 인해 연결된 NeoPixel 하드웨어가 손상될 가능성은 여전히 존재합니다.

3.3 배선 시 고려 사항

대부분의 신호선은 상대적으로 가는 전선을 사용할 수 있지만, 배터리 및 LED 전원 경로는 예상되는 최대 전류에 맞는 적절한 굵기의 전선을 사용해야 합니다.

4. 개발 환경

4.1 필수 소프트웨어

  • Arduino IDE
  • ProffieBoard Arduino 플러그인
  • ProffieOS 소스 패키지
  • 필요한 경우 USB 드라이버
  • Configuration 편집용 일반 텍스트 / 코드 에디터

4.2 Arduino 보드 선택

ProffieBoard V2를 사용하는 경우 해당 보드 타깃을 선택하십시오:


Tools → Board → Proffieboard V2
Arduino 설정 권장 값
Board Proffieboard V2
USB Type 지원되는 경우 Serial + WebUSB + Mass Storage
DOSFS SDCARD (SPI)
CPU Speed 80 MHz
Optimize Configuration 및 리소스 요구 사항에 따라 Smallest Code, Fast, Faster 또는 Fastest
Port 연결된 보드의 COM 포트

5. ProffieOS 설치

5.1 ProffieOS 준비

SUPERNEOX 라이트세이버의 안정적인 펌웨어 설정 및 컴파일을 위해 ProffieOS 5.9를 사용하십시오. 다운로드한 ProffieOS 파일은 Documents 또는 Desktop과 같은 쓰기 권한이 있는 사용자 폴더에 압축을 해제하는 것을 권장합니다. Windows의 권한 제한으로 인해 컴파일 문제가 발생할 수 있으므로 Program Files와 같은 보호된 시스템 폴더나 시스템에서 관리하는 애플리케이션 디렉터리에는 소스 코드를 저장하지 마십시오.

소스 트리에는 메인 Arduino 스케치가 포함되어 있습니다:


ProffieOS/ProffieOS.ino

주요 디렉터리는 다음과 같습니다:


config/
blades/
styles/
props/
sound/
motion/
functions/

5.2 Arduino 스케치 열기

다음 파일을 엽니다:


ProffieOS/ProffieOS.ino

5.3 V2 Configurator 사용

ProffieOS 공식 문서에서는 사용 중인 ProffieBoard 버전에 맞는 Configurator를 사용할 것을 권장합니다. ProffieBoard V2.x가 탑재된 SUPERNEOX 라이트세이버의 경우 다음 Configurator를 사용하십시오: ProffieBoard V2.x Configurator

Configurator에서 생성된 코드는 실제 라이트세이버의 배선, 하드웨어 구성 및 설치된 기능에 맞게 확인하고 수정해야 합니다. Configurator는 안정적인 초기 설정을 제공하지만, 고급 빌드나 커스텀 하드웨어 구성에서는 생성된 코드에 추가적인 수동 수정이 필요할 수 있습니다.

6. Config 파일 생성 및 선택

6.1 Configuration 파일 생성

  1. ProffieOS의 config/ 디렉터리를 엽니다.
  2. 기존 configuration 템플릿을 복사합니다.
  3. 용도를 쉽게 식별할 수 있는 이름으로 변경합니다.
  4. 일반 텍스트 또는 코드 에디터에서 configuration을 수정합니다.
  5. 파일을 저장합니다.
Microsoft Word를 사용하지 마십시오. Configuration 파일은 소스 코드이므로 반드시 Plain Text 형식으로 유지해야 합니다.

6.2 CONFIG_FILE을 사용하여 Configuration 선택

ProffieOS.ino를 열고 정확히 하나의 configuration 파일만 활성화하십시오:


// #define CONFIG_FILE "config/example.h"

#define CONFIG_FILE "config/my_saber_config.h"

사용하지 않는 configuration 정의는 반드시 주석 처리된 상태로 유지하십시오.

7. Config 구성 이해하기

ProffieOS configuration 파일은 여러 개의 컴파일 타임 설정 영역으로 구성됩니다.

CONFIG_TOP

전역 하드웨어 정의, 기능 활성화 옵션, Blade 수, 버튼, 오디오, 모션 및 SD 카드 지원 등을 설정합니다.

CONFIG_STYLES

ProffieOS 7.x 이상에서 사용할 수 있습니다. 재사용 가능한 Style 템플릿과 Alias를 저장합니다.

CONFIG_PRESETS

Preset, Sound Font, Track, Style 및 Preset 이름을 정의합니다.

CONFIG_PROP

Prop 동작 및 커스텀 컨트롤을 정의합니다.

8. 핵심 Configuration 파라미터


#ifdef CONFIG_TOP

#include "proffieboard_v2_config.h"

#define NUM_BLADES 1
#define NUM_BUTTONS 2
#define VOLUME 1000

const unsigned int maxLedsPerStrip = 144;

#define CLASH_THRESHOLD_G 1.0

#define ENABLE_AUDIO
#define ENABLE_MOTION
#define ENABLE_WS2811
#define ENABLE_SD
#define SAVE_STATE

#endif
파라미터 용도
NUM_BLADES Blade 정의 개수.
NUM_BUTTONS 설정된 물리 버튼 개수.
VOLUME 기본 볼륨 레벨.
maxLedsPerStrip 최대 LED 개수.
CLASH_THRESHOLD_G Clash 감지 임계값입니다. 일반적으로 값을 낮추면 Clash 감도가 높아집니다.
ENABLE_AUDIO 오디오 기능을 활성화합니다.
ENABLE_MOTION 모션 감지 기능을 활성화합니다.
ENABLE_WS2811 일반적인 NeoPixel 구성에서 사용하는 WS2811 / 주소 지정형 LED 기능을 활성화합니다.
ENABLE_SD SD 카드 지원을 활성화합니다.
SAVE_STATE 지원되는 설정의 상태 저장 기능을 활성화합니다.

9. Blade Configuration (* 참고: 현재 SUPERNEOX 라이트세이버에서는 지원되지 않습니다.)

Blade Configuration은 실제 LED 하드웨어, Blade 감지 방식 및 논리적 Blade 동작을 정의합니다.

9.1 단일 Blade 예제


BladeConfig blades[] = {

 {
  0,
  WS2811BladePtr<144>(),
  CONFIGARRAY(presets)
 }

};

첫 번째 값은 Blade 감지에 사용되는 Blade ID 저항값입니다. Blade ID에 따른 선택이 필요하지 않은 경우 일반적으로 0을 사용할 수 있습니다.

9.2 여러 Blade Configuration

여러 개의 BladeConfig 항목을 사용하면 Blade 식별 정보를 통해 서로 다른 물리적 하드웨어 구성을 선택할 수 있습니다.

9.3 SubBlade

SubBlade를 사용하면 주소 지정형 LED를 여러 개의 논리적 영역으로 분할할 수 있습니다. 예를 들어 Crossguard, Crystal Chamber, Accent Pixel 등의 영역을 각각 독립적으로 구성할 수 있습니다.

10. Preset Configuration

하나의 Preset은 다음 요소를 결합합니다:

  • Sound Font
  • Music Track
  • Blade Style
  • Preset 이름

Preset presets[] = {

 {
  "TeensySF",
  "tracks/theme.wav",
  StyleNormalPtr<CYAN>(),
  "cyan"
 }

};
항목 의미
Sound Font 사운드 파일이 저장된 디렉터리.
Track 음악 파일 경로.
Style Blade의 시각적 동작.
Name Preset에 표시되는 이름.

11. SD 카드 및 Sound Font 관리

microSD 카드는 ProffieOS에서 사용하는 런타임 리소스를 저장합니다. 여기에는 Sound Font, Track, Configuration 리소스 및 선택적 디스플레이 리소스 등이 포함될 수 있습니다.

11.1 권장 SD 카드 구조


SD CARD

├── SOUND/
│
├── TRACKS/
│
├── CONFIG/
│
├── FONT DIRECTORY 1/
│   ├── hum.wav
│   ├── swingl.wav
│   ├── swingh.wav
│   ├── clash.wav
│   └── blst.wav
│
└── FONT DIRECTORY 2/

11.2 Sound Font 디렉터리

각 Sound Font는 개별 디렉터리에 저장됩니다. Preset Configuration에서는 해당 디렉터리 이름을 참조합니다.

예:

Preset presets[] = {

 {
  "DarkLord",
  "tracks/theme.wav",
  StyleNormalPtr<RED>(),
  "Dark Lord"
 }

};

파일 이름은 중요합니다. ProffieOS는 특정한 이름의 사운드 파일을 검색합니다. 파일 이름이 잘못되었거나 필요한 파일이 누락된 경우 사운드가 출력되지 않거나 일부 효과음이 정상적으로 재생되지 않을 수 있습니다.

12. 버튼 및 Prop

버튼은 사용자의 물리적인 입력을 담당하며, Prop 시스템은 버튼 조합과 입력 동작을 해석하여 실제 라이트세이버 기능으로 변환합니다.

12.1 주요 동작

동작 일반적인 입력
Ignition Power / Activation 버튼 짧게 누르기.
Blade Retraction Blade가 켜진 상태에서 Power / Activation 버튼 짧게 누르기.
Muted Ignition Power 버튼 빠르게 두 번 누르기.
Next Preset Blade가 꺼진 상태에서 AUX 버튼 짧게 누르기.
Previous Preset AUX 버튼을 누른 상태에서 Power 버튼 누르기.
Clash Blade가 켜진 상태에서 Blade에 충격을 가하기.
Lockup Power 버튼을 누른 상태에서 Clash 동작 실행.
Drag 라이트세이버를 아래쪽으로 향한 상태에서 Lockup 제스처 사용.
Force Effect AUX 버튼 길게 누르기.
Blaster Block Blade가 켜진 상태에서 AUX 버튼 짧게 누르기.
Color Change AUX 버튼을 누른 상태에서 Power 버튼을 빠르게 누른 후 Hilt를 회전시키기.
Volume / Menu Control 버튼 조합을 길게 눌러 설정 및 조정 메뉴에 접근합니다.

정확한 동작은 선택된 Prop과 버튼 Configuration에 따라 달라집니다. ProffieOS에는 일반적인 Prop부터 고급 버튼 및 기능을 지원하는 여러 가지 Saber Prop이 포함되어 있습니다. 따라서 현재 사용 중인 모든 ProffieOS Prop의 버튼 맵이 동일하다고 가정해서는 안 됩니다.

12.2 Prop Configuration

선택된 Prop은 다음과 같은 동작을 정의합니다:

  • 버튼 입력 시간 및 Timing
  • 제스처 해석 방식
  • 메뉴 동작
  • 특수 기능

#include "props/saber.h"

특정 하드웨어 또는 제품별 컨트롤 방식을 구현해야 하는 경우 Custom Prop을 직접 작성할 수도 있습니다.

13. Serial Monitor 디버깅

기존 매뉴얼에서는 다음과 같은 명령어를 일반적으로 사용합니다.

명령어 기능
battery_voltage 배터리 전압을 확인합니다.
get_volume 현재 볼륨을 확인합니다.
pow 전원을 전환합니다.
on 전원을 켭니다.
off 전원을 끕니다.
set_volume 500 볼륨을 설정합니다.
play 기본 Track을 재생하거나 정지합니다.
force Force 사운드를 실행합니다.
drag Drag 사운드를 실행합니다.
blast Blaster 사운드를 실행합니다.

13.1 Serial 출력 활성화


#define ENABLE_SERIAL

13.2 일반적인 디버깅 정보

  • 부팅 메시지
  • SD 카드 감지 상태
  • Blade 초기화 상태
  • Preset 로딩 상태
  • 모션 센서 상태
  • 버튼 입력 이벤트
권장 디버깅 절차: 제품용 라이트세이버를 문제 해결할 때는 펌웨어 설정을 변경하기 전에 전체 Serial 부팅 로그를 먼저 저장해 두십시오.

14. Blade Styles

Blade Style은 ProffieOS에서 Blade의 시각적 동작을 정의하는 핵심 메커니즘입니다. 색상, 애니메이션, Ignition, Retraction, Clash 반응, Blaster 효과, Lockup, Drag, Transition 및 기타 인터랙티브 효과를 제어할 수 있습니다.

14.1 기본 Style 예제


StyleNormalPtr<RED>()

기본 Style은 Blade의 기본적인 외관을 정의합니다. 보다 고급 Configuration에서는 중첩된 Style 함수와 Effect Layer를 조합하여 복잡한 애니메이션을 구현할 수 있습니다.

14.2 StylePtr 구조


StylePtr<
  InOutHelper<GREEN, 300, 800, BLACK>()
>()

StylePtr은 완성된 Blade Style을 할당할 때 일반적으로 사용됩니다. 복잡한 효과는 여러 Function, Layer 및 Transition을 조합하여 구현합니다.

14.3 RGB 색상


Rgb<255, 50, 0>

RGB 각 채널의 값은 0에서 255 사이입니다. 지원되는 경우 RED, GREEN, BLUE, WHITE, CYAN과 같은 이름이 지정된 색상도 사용할 수 있습니다.

14.4 주요 Effect Function

Function 설명
InOutHelper<base, extension, retraction, offColor> Blade의 Extension 및 Retraction Timing과 꺼진 상태에서의 색상을 제어합니다.
AudioFlicker<A, B> 두 색상 사이에서 오디오에 반응하는 Flicker 효과를 생성하여 에너지가 불안정하게 흔들리는 듯한 효과를 구현합니다.
OnSpark<base, spark, duration> Blade가 점화될 때 Spark 애니메이션 효과를 추가합니다.
SimpleClash<base, clash, duration> Blade가 충격을 감지했을 때 Flash 효과를 생성합니다.
Lockup<base, lockup> 지속적인 Blade Lockup 동작 및 Lockup 색상 반응을 정의합니다.
Blast<base, blast> Blaster Deflection Flash 효과와 관련 색상을 정의합니다.

14.5 고급 Style 구성

고급 사용자는 Function, Layer, Transition 및 Random Effect를 조합하여 완전히 커스터마이징된 Blade 동작을 구현할 수 있습니다.


Layers<
 RED,
 AudioFlicker<RED,WHITE>,
 Clash
>()

14.6 여러 Blade 및 Accent Pixel

하나의 Preset에는 여러 개의 논리적 Blade 정의에 대응하는 복수의 Blade Style을 구성할 수 있습니다. 이를 통해 Main Blade, Quillon, Crystal Chamber, Accent Strip 또는 기타 설정된 Pixel Group에 각각 독립적인 Style을 적용할 수 있습니다.

14.7 Style 편집 리소스

15. 고급 통합

15.1 디스플레이

지원되는 디스플레이 모듈을 사용하면 다음과 같은 정보를 표시할 수 있습니다:

  • 배터리 정보
  • Preset 선택
  • 메뉴 탐색
  • 런타임 상태

15.2 추가 주변 장치

고급 하드웨어 구성에서는 다음과 같은 장치를 통합할 수 있습니다:

  • Accent LED
  • Crystal Chamber
  • Crossguard Lighting
  • Custom Sensor
  • External Controller

15.3 제품 개발 및 생산 워크플로 권장 사항

  1. 하드웨어 Revision을 확정합니다.
  2. 배선도를 보관합니다.
  3. 사용한 ProffieOS 버전을 기록하고 보관합니다.
  4. Configuration 파일을 보관합니다.
  5. SD 카드 전체 콘텐츠를 보관합니다.
  6. 대표 샘플 하드웨어에서 펌웨어를 테스트합니다.
  7. 최종 생산 패키지를 릴리스합니다.

16. 문제 해결

문제 가능한 원인 해결 방법
보드가 인식되지 않음 드라이버, USB 케이블, Bootloader 또는 포트 문제. USB 연결 상태, 드라이버 및 Arduino의 Port 선택을 확인하십시오.
컴파일 실패 잘못된 ProffieOS 버전, Configuration 누락 또는 문법 오류. CONFIG_FILE, Board 선택 및 Configuration 문법을 확인하십시오.
소리가 나지 않음 SD 파일 누락, 잘못된 Font 디렉터리 또는 볼륨 설정 문제. SD 카드 구조, Sound Font 이름 및 오디오 Configuration을 확인하십시오.
Blade에 불이 들어오지 않음 Blade Configuration 오류 또는 배선 문제. BladeConfig, LED Data 연결 및 전원 경로를 확인하십시오.
모션 효과를 사용할 수 없음 Motion 지원이 비활성화되어 있거나 센서에 문제가 있음. ENABLE_MOTION 설정 및 하드웨어 연결 상태를 확인하십시오.
펌웨어를 다시 플래시하기 전에: 현재 정상적으로 작동하는 Configuration과 SD 카드의 백업을 반드시 저장하십시오. 펌웨어 업데이트 과정에서 기존의 커스텀 동작이 덮어써질 수 있습니다.

17. 개발자 레퍼런스

개발 및 생산 관리 참고: 제품용 라이트세이버를 개발할 때는 펌웨어, Configuration, 하드웨어 Revision 및 SD 카드 리소스를 하나의 버전 관리 체계로 함께 관리하는 것을 권장합니다.

참고:
ProffieBoard와 ProffieOS는 오픈소스 프로젝트입니다. 본 문서는 제공된 매뉴얼과 공개된 ProffieOS 문서를 바탕으로 작성된 기술 레퍼런스이며, ProffieOS 프로젝트의 공식 문서가 아닙니다.
실제 제품에 적용하기 전에는 배포하려는 정확한 ProffieOS 버전과 하드웨어 Revision을 기준으로 최종 빌드를 반드시 검증하십시오.