포스트

교과 수업 중에 디제이맥스 아케이드 컨트롤러를 만들었습니다.

GitHub Repository: embedded-rhythm-game-controller

올해 듣는 수업의 <임베디드소프트웨어> 과목 중에 디제이맥스 아케이드 컨트롤러를 만들어보았습니다. 가벼운 마음에 수강하고 가벼운 마음에 주제를 정했는데, 어쩌다보니 학교의 지원을 받으면서 교내 행사에 전시까지 하게 되었습니다.


우리 팀원 여러분, 양심이 있다면 여러분이 제 꿈으로 만들어버린 친구들의 곡은 하나라도 들어봐야하지 않을까요??

배경

우리 학교 컴공 3학년 전공 과정에 필수 과목으로 <임베디드소프트웨어> 과목이 지정되어있습니다. 이것은 상당히 의아한 정책입니다.

학과 커리큘럼 정책이 세부 전공을 선택하도록 하지는 않아도 많은 세부 전공을 선택 과목으로 풀어놓고 수강 과목으로 전공 테크트리를 타는, 약간의 자유전직 내지는 테라리아의 직업 시스템과 같은 느낌이기 때문입니다.

구체적으로는 정보보안을 공부하고자 한다면 정보보안 쪽 수업을, 인공지능을 공부하고자 한다면 인공지능 쪽 수업을, 임베디드 쪽을 공부하고자 한다면 임베디드 쪽 수업을.. 과 같이 마음대로 선택할 수 있었고, 전산화된 세부 전공 체계가 없어서 자유롭게 중간에 세부 전공 테크를 옮길 수 있게 되어있습니다.

그래서 이 과목이 전공 필수로 지정된 것이 어딘가 잘 맞아떨어지지 않는다는 느낌이 있었습니다. 실제로 3학년 2학기의 전공 필수는 이 과목과 캡스톤디자인 단 두 개입니다.

이러한 느낌이 비단 제 개인의 감상이 아니어서, 학과 내에서 꾸준히 의견 교환이 있었던 걸로 알고 있습니다.

image.png

그리고 신입생 교육과정에서 이 과목의 전공 필수 지정이 해제되었고, 수업의 기조 자체도 완전히 변화하게 되었습니다.

우선 프로젝트 기반 수업으로 전환되었고, 중간 기말 평가도 마치 캡스톤 디자인과 같이 프로젝트 성과 보고나 발표로 대체되었습니다. 심지어는 프로젝트 기간 중에는 수 주간 연달아 수업을 하지 않고, 프로젝트에 집중하도록 했습니다.

사실상 미니 캡스톤 디자인이 된 셈입니다.

심지어는 캡스톤 디자인처럼 교내의 사업단에서 프로젝트에 들어가는 각종 부품과 재료를 지원하기까지 해서, 진짜 캡스톤 디자인이 되어버린 것 같았습니다.

분명 쉬운걸 골랐던 것 같은데

대체 원신은 뭐야 원신은
대체 원신은 뭐야 원신은

이렇게 과목이 미니 캡스톤 디자인이 되어버리면서, 팀을 이루어 실제로 무언가를 만들어내야만 하는 상황에 이르게 되었습니다. 우선 캡스톤과 같이 끌고나가야 하기 때문에 새로운 것을 창작하기보다 이미 몇 번 시도되었으면서도 구현 난이도가 상대적으로 낮고, 잘 알려지지 않았을 것 같은 주제를 고르기로 했습니다.

그런 의미에서 흔히 사볼콘, 디맥콘이라고 부르는 리듬게임용 아케이드 컨트롤러는 꽤 적합했습니다. 버튼 입력이 들어오면 키보드 출력을 기기에게 보내면 되므로, 아두이노 코드가 길어지거나 코드 자체가 어려울 일도 없다고 생각했습니다.

문제는 우리 팀이 세 명 팀이라는 것이었습니다. 권장 팀 규모는 두 명이어서 “그래서 여러분은 각자 무엇을 했나요?”라는 질문에 적절하게 대답할 수 있으려면 프로젝트 볼륨을 조금 키워야 했습니다.

그래서 주제를 고른 취지가 무색하게 하드웨어에 설정값을 저장하고 수정 가능하도록 구현하자는 목표를 추가로 세워버렸습니다.

  • 아두이노 보드와 컴퓨터는 USB를 통해 시리얼 통신 수행
  • 자체 정의한 규격을 사용하여 컴퓨터가 추가적인 컴파일 없이 아두이노 보드의 설정을 로드하고, 수정
  • 아두이노 보드는 저장된 설정값을 사용하여 버튼-키보드 매핑, 출력

온보딩

어느정도 쉬워보이는 주제를 골랐는데도, 목표를 달성하기 위해서 확인해야 할 것들이 좀 남아있었습니다.

image.png

게임은 보통, 그리고 DJMAX RESPECT V는 윈도우만을 지원합니다. 하지만 저는 캠퍼스에서는 맥북을 사용하고, 하루종일 캠퍼스에서 생활하고 집에서는 잠만 자는 생활을 반복하고 있습니다. 맥에서 윈도우용 프로그램을 작성해야 하는 셈입니다.

사실 이미 캡스톤 디자인 건으로 다트와 플러터를 공부하고 있었으므로, 그대로 다트와 플러터를 이 과목에서도 사용하기로 했습니다. 우려 사항으로 시리얼 통신을 직접 구현해야 하는지 판단이 잘 서지 않았었는데, 다행히도 윈도우와 맥 환경을 모두 지원하는 플러터 라이브러리가 있었습니다.

image.png
source: Arduino

이번에 작업하면서 알았는데, 모든 아두이노 보드가 키보드 입력을 지원하지는 않았습니다. 어느 정도 공통적으로 지원해야하는 최소한의 하드웨어 스펙이라고 생각했는데, 이제와서 생각해보면 아두이노를 이용해서 키보드 입력을 쓸 일이 생각보다 많지 않은 것 같습니다.

학교에서 지원하는 아두이노 보드는 모두 키보드 입력을 지원하지 않는 것들이었고, 캡스톤 디자인을 위해 미리 장만해두었던 아두이노 보드도 마찬가지였습니다. 결국 자비를 들여서 새로 구매하기로 했습니다.

스크린샷 2024-11-01 오후 5.45.35.png

보드는 아두이노 레오나르도 R3 호환 보드를 구매했습니다.

스위치는 어떻게 되어먹었을까

이러한 아케이드 컨트롤러의 기본적인 구조는 잘 이해하고 있었지만, 이것을 구현할 지식이 조금 부족했습니다. 특히 버튼의 스위치가 어떻게 생겼고, 어떻게 작동하며, 어떻게 연결해야 하는지 알고 있는 것이 없었습니다.

image.png

지원 사업을 운영하는 사업단도 팀원들도 이 리듬게임 스위치를 당연히 가지고 있지 않으므로, 자료를 찾아보거나 우선 주문해서 직접 파악해야했습니다. 문제는 스위치 판매처에서 정보를 제대로 제공하고 있지 않았다는 것입니다. 심지어는 스위치의 모델명도 제대로 파악할 수 없었습니다. 그래서 블로그와 커뮤니티의 게시물에서의 단편적인 정보에 의존하여 우선 스위치를 주문했습니다.

우리 팀은 IST몰에서 제공하는 IST몰 405 버튼을 구입해 사용했습니다.

IMG_8931.HEIC

IST몰의 405버튼 구성품

구체적으로는 LED를 스위치에 꽂고, 아케이드 버튼에 이 스위치를 설치하는 방식으로 사용할 수 있습니다.

원래 스위치 자체는 2개의 핀이 달려있는 COM-NO 스위치이나, 스위치에 설치된 LED 연결 단자가 핀을 바깥 좌우측으로 확장해주어서 총 네 개의 핀이 달려있습니다. 측면의 두 핀은 순수하게 연장선의 역할을 하므로, LED를 꽂는 방향에 따라 측면의 두 핀의 +/-극이 결정됩니다.

다시 말해 하단에 상하로 위치한 두 핀과 측면에 좌우로 위치한 두 핀은 서로 독립적이고, 회로로 연결되어있지 않습니다.

IMG_8780.jpg

사실 핀이 서로 독립적이어서 오히려 회로를 설계하기 수월했습니다.

Fritzing은 오픈소스지만 유료

회로를 시각화하는데에는 Fritzing(프릿징)을 사용했습니다. 다양한 회로 시각화 툴을 검토해보았지만, 아케이드 버튼과 아두이노 레오나르도 보드를 표현할 수 있는 적절한 툴로 프릿징의 대안이 없었습니다.

무료 서비스나 공개 프로젝트는 어지간한 규모가 아니면 적자임

광고 단다고 해도 이놈들 다 애드블록 달고 들어온다고

뭐 개발자 지원한다고 애드블록을 잠깐 끄는 사람?이 있겠음??

- 지인 아무개

프릿징의 정책은 꽤 특이했는데, 아무래도 흑화한 공개 소프트웨어의 단편을 보는 것 같았습니다.

분명 오픈소스 프로젝트이고, 코드가 전부 공개되어있는데 결제하지 않으면 프로그램을 다운로드받을 수 없었습니다. 분명 후원이라는 표현을 사용했지만, 후원하지 않고 프로그램을 다운로드받을 수 있는 선택지는 찾지 못했습니다.

후원하지 않고 프로그램을 다운로드받을 수 있다는 언급은 여기저기 있었지만, 구 버전 프릿징의 윈도우 빌드만 풀려있는 것을 보아, 최근에 최신 버전 혹은 맥 빌드를 다운로드받으려면 무조건 후원해야하는 방향으로 바뀐 것 같았습니다.

image.png

그래서 오픈소스이기도 하고, 컴파일 가이드도 있으므로 직접 빌드해서 사용하려고 시도하기도 했습니다. 문제는 컴파일 가이드가 완전하지 않아서 그대로 따라가더라도 제대로 빌드되지 않는다는 것이었습니다. 의존성 모듈 경로 설정이 버전에 의존적으로 되어있어서, 경로 설정을 다시 해줘야했던 일이 기억에 남습니다.

결국 QMake 빌드 스크립트를 읽어가며 빌드를 시도했는데, 전체적으로 시간이 부족했기 때문에 부족한 시간을 돈으로 살 수 밖에 없었습니다. 대략 만원을 조금 넘기는 금액이었습니다.

Fritzing은 유료지만 오픈소스

image.png

실제로는 빵판을 사용하지 않았지만, 회로를 쉽게 읽을 수 있도록 빵판을 이용해서 시각화했습니다.

실제로 프릿징 이슈트래커를 찾아보면 상황을 조금 짐작할 수 있는데, 오래 사용하지 않았는데도 다양한 버그를 경험할 수 있었습니다. 작업 내용이 날라가거나, 작업한대로 데이터가 저장되지 않거나, 갑자기 프로그램이 죽는 문제를 겪었습니다. (rev 1.0.4)

그 외에도 아예 규격상 지원하지 않는 것이 있었는데, 대표적으로 회로도 SVG 그래픽에 추가하는 텍스트의 폰트를 특별한 몇 개의 폰트로 제한하고 있다는 것입니다. 아무래도 텍스트를 렌더링하는데 프로그램이 내부적으로 포함하고 있는 폰트만 사용할 수 있는 모양입니다.

1
2
3
4
5
6
7
<g id="silkscreen">
  <path ... />
</g>
<g id="copper0">
  <path ... />
  ...
</g>

또 PCB 그래픽은 아예 SVG 파일의 코드를 열어서 g 태그와 같은 그래픽 레이어에 사전에 정의된대로 식별자를 붙여야 했습니다.

사실 SVG 그래픽 관련 이슈는 제가 아케이드 버튼 부품 시각화 데이터를 프릿징에 등록하면서 발생한 것들이라, 일반적으로 겪을 일은 없을 것 같습니다.

(repo) /circuit/part/rectangle-red-led-button

실제로 부품을 프릿징에 추가해서 사용하고자 한다면, 시각화 그래픽(Breadboard), 회로도(Schemetic), PCB 그래픽을 모두 준비해야 합니다.

image.png

이 부품 데이터는 .fzpz 파일로 추출할 수 있어서, 리포지토리에 포함시켜두었습니다.

키 맵 설정기: 플러터를 처음 써봐요

플러터에 관심을 가진지는 꽤 되어서 군생활하면서 책도 구매해 읽었습니다. 문제는 사실 하나도 도움이 되지 않았다는 점입니다. 아무래도 단순히 프로그래밍 언어의 문법에 대해 설명한 책은, 저한테는 효과적이지 않은 것 같습니다.

스크린샷 2024-11-04 오후 3.18.55.png

그래서 초판 프로그램을 작성하는데 꽤 오랜 시간이 걸렸습니다. 어떤 컴포넌트 — 위젯이 있는지 제대로 알지 못했기 때문에, 어떤 위젯을 사용해서 설계하고 작성하는 것이 적절한 방식인지 판단할 수 없었습니다.

위젯의 Key를 제대로 이해하지 않고 무작정 작업에 들어갔다가 컴포넌트 간의 값 교환 문제로 며칠을 헤매며 전체 프로그램의 복잡도가 순식간에 높아지는 일이 있었습니다.

이 과정에서 전역 싱글톤 객체만을 사용하여 위젯의 상태를 관리하고자 했습니다. 하지만 setState()의 호출 매커니즘 상 전역 싱글톤 객체의 필드를 업데이트하면서 setState를 호출하면 제대로 작동하지 않았습니다. 마감에 가까워졌을 때서야 이 키를 제대로 사용하게 되었기 때문에, 아직도 복잡한 위젯이 프로젝트에 즐비한 상태입니다.

TextField를 키 설정 버튼으로 사용하면서, TextField에 포커스하고 들어오는 키보드 입력을 바로 TextField에 전달하지 않고 별도의 이벤트 핸들러로 돌리도록 구현하기도 했습니다. 이렇게 했더니 플러터에서 TextField의 실제 값이 이벤트에서 유래된 기대값과 맞지 않는다며 Validation 오류를 발생시켰습니다. 이후에 이벤트 리스너의 구독, 해제 타이밍을 조정하면서 어떻게 오류가 나타나지 않도록 했는데, 마감 막바지에 이것 저것 작성했었던 부분이라 명확하게 기억나지 않습니다.

image.png
시험기간에 마감을 앞두고 급하게 작성한 다이어그램이라 많은 내용이 생략되었습니다. 발표용으로 작성한 것이어서, 부족한 내용은 실전에서 설명으로 때웠습니다.

설정기는 아두이노와 매직 넘버를 시리얼 통신으로 주고받으며, 상대방이 적절한 프로그램이 설치된 기기인지 확인하도록 했습니다. 서로 적절한 기기임을 확인한 뒤엔, 설정된 키 맵을 주고받으며 로드, 저장을 수행합니다.

image.png
UI도 갈아엎었습니다

개발 초기에 방향을 잘못 잡으면 코드 베이스 전체를 엎어야 할 수도 있어 꽤 우려스러웠고, 결국 몇 번 코드 베이스를 엎을 수밖에 없었습니다. 사실 그렇게 하고도 해결하지 못한 오류도 있습니다.

아두이노 스케치 파일 작성하기

image.png
RTFM: 빌어먹을 문서를 읽으시오

사용하는 라이브러리의 문서를 꼼꼼하게 읽지 않았기 때문에 모듈 임포트 문제로 고생을 많이 했습니다. 특히 앞서서 이야기한, 키보드 라이브러리만 포함되면 컴파일되지 않는 문제는 초기에 힘들게 했던 문제 중 하나였습니다.

image.png

아두이노 스케치 파일도 키 맵 설정기가 보내는 시리얼 통신에 제대로 응답하고, 실제로 요청한 작업을 수행해야하므로 소스코드가 굉장히 길어지게 되었습니다.

그래서 작업 효율을 높이기 위해서는 소스코드를 분리해서 여러 개의 파일로 나누어야 했습니다. 아두이노 코드를 본격적으로 쪼갤 정도로 길게 작성한 건 처음 있는 일이었습니다.

여기서도 설정기와 동일하게, 전역 싱글톤 객체로 키 맵과 주요한 몇몇 설정을 관리했습니다. 하지만 C++에서 이러한 코드를 작성한 경험이 많지 않아 실수가 잦았습니다. 특히 이 전역 싱글톤 객체에 값을 설정하는 함수를 작성하면, 함수가 종료될 때 할당이 해제되어서 결과적으로 쓰레기 값을 갖게 되는 문제가 가장 주요했습니다.

그 외에 마감 직전에 발생한 문제로, 시리얼 통신 데이터 버퍼의 제어 코드가 부적절하게 수정된 부분이 있었습니다. 버퍼의 사이즈는 실제로 교환하는 최대 데이터 사이즈의 약 2배정도로 잡았는데, 이 버퍼를 전부 사용하도록 동작하는 문제가 식별된 것입니다.

몇몇 상황에서 버퍼 전체에 데이터를 할당하고, 할당한 데이터 전체를 설정기 프로그램에 전송합니다. 데이터 교환 중 값을 검증하므로 비결정적인 동작은 하지 않지만, 프로젝트의 핵심인 설정값 저장이 제대로 수행되지 않게 되었습니다.

이 문제를 너무 늦게 발견했기 때문에, 마감에 맞춰 작업을 마무리하지 못했습니다. 마감이 지난 지금도 코드를 다시 들여다보지 않았기 때문에 원인 파악도 하지 않은 상태입니다.

데드라인 후 중간고사 대체 프로젝트 발표에서는, 다른 사람들이 만드는 DIY 컨트롤러와 같이 키 매핑이 하드코딩된 짧은 코드를 사용했습니다. 리포지토리의 controller_without_comm 가 바로 그것입니다.

실 기체 제작

제가 코드 덩어리 속에서 허우적대고 있을 때 다른 팀원들은 실 기체 제작에 들어갔습니다.

image.png

다행히 사업단에서 아크릴 커팅을 지원해주어서, 도면만 준비하면 케이스 제작 비용은 아낄 수 있었습니다.

도면 작업이 실제 아케이드 버튼을 주문하기 전부터 시동이 걸려있었기 때문에 중간 중간 어려움이 꽤 있었다고 들었습니다. 처음에는 인터넷에서 도면을 구해 수정하는 방향으로 작업이 진행되고 있었는데, 결국 오토데스크 퓨전 360으로 도면을 짜냈습니다.

TalkMedia_1730379035.JPEG

이를 위해서 팀원이 퓨전 360을 새로 공부해야 했습니다. 새로운 소프트웨어, 심지어 3D모델링 도구를 학습해야하니 우려스러웠는데, 직육면체의 단순한 모양이어서 모델링이 처음 하는 것 치고는 크게 어렵지 않았다고 합니다.

KakaoTalk_Snapshot_20241101_181936.png

중간에 버튼 구멍 치수가 맞지 않아 아크릴이 깨지는 일이 있었습니다.

버튼 크기보다 조금 더 크게 유격을 두고 커팅했는데도 맞지 않았습니다. 추정되는 원인으로는 레이저가 지나간 자리의 아크릴이 녹아서 치수가 조금 변형되었을 수 있다고 합니다. 케이스 하우징에 5T아크릴을 사용했는데, 5T를 한번에 커팅할 수 있는 레이저 기계가 없어서 여러번 커팅을 걸었고, 아크릴 온도가 너무 높아져서 단면이 녹은 것으로 보입니다.

제 꿈 아닙니다.

image.png

image.png

그리고 팀 상태를 신경쓰지 못하는 사이에 팀원에게 거대한 음모에 빠졌습니다.

어느 순간 프로젝트 제안서에 팀명이 “종현이의 꿈”으로 올라가더니 팀장이 되어있었습니다. 그리고 상판에 결속밴드 일러스트가 들어가게 되었습니다.

일단 제 꿈도, 제 의지도 아니었는데, 애니메이션 오타쿠 박종현이 수업 평가 과제로 사심을 채워버리는 듯한 상황이 되었습니다.

팀원 세 명을 대상으로 “일본 애니메이션을 보는(볼 것 같은) 사람”, “서브컬쳐 게임을 열심히 플레이하는 사람”을 OR 조건으로 평가하더라도 매치되는 사람이 저 밖에 없으므로, 여러가지 질문이나 눈치리라거나, 다소의 수치심은 제게 쏠리게 되었습니다.

뭐.. 그걸로 우리 팀이 즐겁고 행복해한다면 오케이겠지만.. 다시 한번 말하지만 유정빈 모아림 당신들은 당장 박종현을 놀리는데 사용한 결속밴드 곡 전체를 순회하시기 바랍니다.

피폐해진 공대 학부생은 지금 당장 시험을 그만두고 싶어 ~언제까지 계속해야하는거야~

image.png

프로젝트가 막바지에 접어들고 3주에 걸쳐 펴져있던 중간고사가 마무리되었지만, 그렇다고 모든 것이 마무리된 것은 아니었습니다. 중간고사 대체 프로젝트 발표가 남아있었습니다.

심지어 발표 전날 저녁에 마지막 중간고사가 있었기 때문에 밤을 반쯤 새면서 발표를 준비할 수밖에 없었습니다.

캡스톤까지 잠시 던져두고 임베디드에 시간과 정신을 갈아넣은 덕인지, 다른 팀보다 발표 중 이야기할 내용이 굉장히 많았습니다. 대략 25페이지 분량의 발표자료가 나왔습니다.

만들어낸 결과물의 완성도도 더 좋았다고 생각합니다. 다른 팀보다 상태가 좋지 않은건 건강과 정신 상태가 아니었을까 싶습니다.

끝날 때까지는 끝난 게 아니다.

지원 사업이 들어왔기 때문에 모든 팀이 사업단의 성과전시회에 작업물을 전시해야했습니다.

성과전시회는 발표 바로 다음날이었습니다. 아직도 중간고사가 다 끝나지 않은 셈입니다.

IMG_8878.jpg

기왕 리듬게임 컨트롤러를 만들었으니, 체험을 운영하는 것이 좋을 것이라고 생각해서 컨트롤러를 이용해 디제이맥스를 플레이할 수 있도록 준비했습니다.

구체적으로는 마침 사용하고 있던 노트북을 포맷할 생각이었어서 중요한 디스크를 모두 제거한 채로 노트북을 밀어버리고 디제이맥스만 설치한 채 전시했습니다.

IMG_8927.jpg
평균적으로 이정도 방문객은 쭉 유지된 모양입니다.

아무래도 우리 팀이 전시회 유일의 게임 플레이 체험부스라 그런지 사람이 끊기지는 않았습니다. 전시회 전체의 기조는 물건 전시라 방문객 한둘이 조금 구경하는게 일반적임에도 그렇습니다.

재미있는 사실은 대부분 리듬게임을 처음 접한 사람들이라, 그 많은 수록곡 중 POP/STARS만 열심히들 플레이했다는 것입니다.

image.png
왜 사진만 찍고 도망가

일부 용기있는 리듬게임 플레이어 분들이 SC 난이도에 99% 정확도를 찍고 없어지긴 했지만, 대부분은 멀리서 지켜보고 사라졌으리라 생각합니다.

이 과정에서 어느 관계자께서 버튼의 키압이 높다고 아쉬워하시다가, 삼덕사의 버튼을 가져와 선물해주시기도 했습니다.

선물 정말 감사합니다! 모든게 잘 정리되면 스위치 바꿔서 사용하겠습니다.


“끝 아녔어?”

계산기를 두드려보자

이런 물건은 진짜 게임에 애정이 있어야 만든다는 이야기를 들었습니다. 다양한 요인이 있겠지만, 우선 애정이 없으면 만들지 않을 수준으로 값이 꽤 나가기 때문입니다.

학교의 지원 사업을 끼고도 나간 값을 보면 정말 애정이 있어야 만들 수 있을 것 같습니다.


구입한 물건들

  • 아두이노 레오나르도 R3
    일반적으로 정품 보드보다 싼 호환 보드를 구매해서 사용하고, 우리 팀도 호환 보드를 사용했습니다.
    • 가격 소요: 8,500원 (5,500원 + 배송비)
    • 실제 작업: 14,000원 (동시 작업을 위해 두 개 주문)
    • 구입처

  • AWG 22 케이블
    • 가격 소요: 11,800원
    • 실제 작업: 7,840원 (쿠팡와우 혜택가)
    • 구입처

  • IST 405버튼
    • 가격 소요: 31,000원 (2,800원 * 10 + 배송비)
    • 실제 작업: 36,600원 (2,800원 * 12 + 배송비)
    • 구입처

  • IST 406버튼
    • 가격 소요: 5,600원 (2,800원 * 2; IST 405버튼 버튼과 함께 주문 가정, 배송비 제외)
    • 실제 작업: 11,200원 (2,800원 * 4)
    • 구입처

구입해야하나 학교의 지원을 받은 물건들

  • 케이스 하우징
    사업단에서 5T 아크릴 판과 아크릴 레이저 커팅을 지원해주어서 가장 큰 비용을 아낄 수 있었습니다.
    학교 메이커스페이스에서는 도면 전체를 커팅할 수 있는 5T 아크릴 판 개당 재료비 25,000원을 책정하고 있다고 했으니, 커팅비까지 합하면 실제로는 더 많은 비용이 나갈 것 같습니다.
    * 아크릴을 사용한다면 아크릴 전용 본드를 사용하는 것을 강하게 권합니다.
  • USB Type-B 마이크로5핀 데이터 케이블
    이제 USB Type-C 규격의 보급이 사실상 마무리되어서 의외로 찾기 어렵습니다.
    가끔 전력 전송만 가능한 충전 전용 케이블이 있으니 주의해야합니다.
  • (선택) 케이블 압착 단자 혹은 납땜기
    전선의 피복을 벗기고 스위치에는 묶어서, 아두이노 보드에는 꽂아서 전선을 연결할 수 있지만, 신뢰성 문제 우려가 있습니다.
    케이블 압착 혹은 납땜으로 고정 대책을 세우는 것이 좋습니다.

결과적으로 위에 언급하지 않았지만 팀 내부적으로 조사나 확인을 위해서 혹은 시행 착오로 구매한 물품을 모두 합해서, 대략 80,000원 전후의 비용이 소모된 것으로 확인하고 있습니다.