brunch

You can make anything
by writing

C.S.Lewis

by 영춘 Jan 24. 2022

개백취 | 하드웨어 프로토타이핑

아이디어의 물성

안녕하세요, 영춘입니다.

김초엽 작가의 SF 단편 “감정의 물성”에서는 사람들이 느끼는 여러 종류의 감정들을 비누, 향초 등 일상 제품의 형태로 빚어냅니다. 추상적인 개념을 현실 속 물건으로 탈바꿈시킨다는 발상이 새롭습니다. 이 단편에서 영감을 얻어 이번 글의 부제를 적어본다면 “아이디어의 물성”이라 할 수 있습니다.


우리 모두 마음속에 어떤 기획 (Design) 을 품어볼 수 있습니다. 종이를 접어 연꽃을 만들어 본다던가, 옆 자리 동료의 초상을 그려볼 생각이라던가, e-Ink 디스플레이를 사용하고 블루투스 통신을 지원하는 디지털 액자를 만든다던가 말입니다. 그 기획은 아직 우리의 생각 속에만 머물고 있지만 사실 어쩌면 그 생각을 떠올린 순간이 창조의 순간일 수 있습니다.


전에 없던 방식으로 세상을 변화시키는 것이야 말로 인간 존재의 특징이 아닐까요? 본능과 충동에 이끌려 무리 짓고 사냥을 하고 번식을 하는 동물들은 수세기 동안 같은 방식으로 세상을 변화시켜왔습니다. 그들이 만들어내는 변화는, 피식자의 생명을 하나 앗아가거나, 자손을 하나 만들어내거나, 사냥의 흔적을 남긴다거나 등 충분히 예상할 수 있습니다. 하지만 인간이 만들어내는 변화는 아주 사소하고 보잘것없어 보여도 그 속에 내포된 복잡함과 가능성은 인간 이외의 다른 존재와 비교할 수 없습니다. 당신이 지금 하나의 종이 연꽃을 접어 책상 위에 올려둔다면 어떨까요? 당신이 마음속에 종이 연꽃의 이미지를 그려낸 순간, 당신의 세상은 변화하였습니다. 물론 옆에서 책상을 지켜보던 저로서는 이 세상에 하나의 새로운 종이 연꽃이 등장하리란 걸 예상할 수는 없었겠지요.


네, 이번 글의 주제는 아이디어를 현실로 불러오는 “하드웨어 프로토타이핑” 입니다.


만들기의 즐거움

누군가의 취향은 다양한 방식으로 그 사람 주변에 녹아듭니다. 요즘 같은 날엔 유튜브 플레이리스트와 구독 채널을 엿보는 것으로 취향을 짐작해볼 수 있겠지요. 어떤 콘텐츠를 소비하는가엔 그 사람의 그 당시 관심이 반영되기 때문일 텐데 저의 경우엔 책장의 책들을 몇 가지 범주로 나눠볼 수 있습니다. 컴퓨터 과학/공학, 시각예술/그림책, 환경/자연, SF 소설, 불교/명상/선, 창작/글쓰기 그리고 만들기/장인정신 코너가 있습니다.


만들기에 자연스럽게 관심을 두게 된 이유는 아마도 소프트웨어 만드는 일을 오래 해왔기 때문일 겁니다. 세상과 시간을 잊고 프로그래밍에 빠져들던 순간들이 있었고, 프로그램 소스코드 속에서 어떤 아름다움을 발견하거나, 어떻게 하면 더 나은 소프트웨어를 만들 수 있을지 고민하곤 했습니다. 같은 아이디어를 프로그램 형태로 옮긴다 하더라도 그 결과는 프로그래머의 성향이나 숙련도에 따라 달라집니다. 소프트웨어 엔지니어의 작업이 곧 현대의 “장인정신”이 발휘되는 지점이라 느꼈고, 나아가 개념의 세계를 벗어나 손을 쓰고 물리적인 실체를 다루는 일반적인 “만들기”에도 빠져들었습니다.


책장에 어떤 만들기 책들이 있는지 살펴봤습니다. 가장 먼저 눈에 띈 책들은 “손”에 대한 책입니다. 디지털 세상에 더 오래 머무르는 요즘 같은 시대엔 “손”을 사용할 일이 거의 없습니다. 손, 아니 손가락은 단지 어떤 기능을 수행하기 위한 방아쇠 Trigger 로 작동할 때가 대부분입니다. 앱을 실행하거나, 앱 속의 버튼을 누르고 시청할 영상을 선택하는 일들을 할 뿐이죠. 여기에 반기를 드는 목소리들이 있습니다.


책 “손의 모험”은 릴리쿰이란 모임이 펴낸 책입니다. 릴리쿰은 릴리쿰 스테이지라는 공간을 운영하면서 무언가 만들고 고치는 일을 독려합니다. 만들기의 즐거움을 잊어버린 시대를 꼬집는데, 어렵지 않고 친숙하게 이야기들을 풀어갑니다. 아마 이 책을 읽고 나면 독자들도 분명 뭔가 만들고 싶어 질 겁니다. 책 “손으로 생각하기”는 저자의 경험에서 우러나온 내용들이 담겨 있습니다. 지식노동자로 일하고 있던 정치철학 박사인 저자는 어느 순간 모터사이클 정비사로 직업을 바꿉니다. 저자는 사회에 대한 분석과 개인적인 일화들을 소개하며 왜 그런 결정을 했는지 이야기합니다. 마지막으로 책 “장인”은 장인 그리고 장인정신에 대한 종합적인 내용을 담고 있습니다.


책 “손으로 생각하기”에서 “옴의 법칙”을 언급하며 암묵지 tacit knowledge 에 대해 이야기하는 부분이 있습니다.

“옴의 법칙은 특정한 장소를 지목하지도 않고 특정한 부식의 근원 (예를 들면, 비 같은 현상)을 지목하지도 않는다. 며칠씩 쏟아지는 비에 외출하고 돌아오면 부츠에서 진흙을 털어내고 살에 착 달라붙은 축축한 셔츠를 벗어야 하는 장마철에 노련한 정비사는 점화에 문제가 있는 낡은 자동차가 입고되면 방청제인 WD-40을 찾아 배전기 안에 뿌리고 접촉점들에서 습기를 제거할 것이다. (중략) 옴의 법칙은 명확하고 규칙적이며 명제가 참이라는 점에서 참이다. 이 법칙은 아주 단순해서 아름답다. 그 방정식을 알고 있는 사람은 그 능력을 지녔다는 기분에 매료된다. 우리는 자신이 보편적인 무언가에 접근할 수 있다고 느끼며 그런 기분은 거의 종교와 비슷한 기쁨을 가져다줄지 모른다. 하지만 이런 매력적인 능력이 사물을 인지하는 데 방해가 될 수 있다. 그것은 명확하게 인식하기 어려울지 모르지만 현실적인 문제로서 더 우위에 있는 다른 유형의 지식의 발전을 대체하거나 저해할 수 있다. 그런 우위성은 그 지식이 보편성 universal 이 아닌 전형성 typical 에서 시작하기 때문에, 실제로 점화 문제를 유발할 수 있는 특정한 요인들에 더 빠르고 직접적으로 연결된다는 사실에 기반을 둔다” - 손으로 생각하기, 매튜 B 크로포드

저도 일상적으로 겪는 일인데, 동료분이 가상 컴퓨터에 원격 접속이 안된다고 도움을 요청하면 몇 가지 상황을 떠올려봅니다. “원격 접속을 위한 비밀키 파일의 권한이 제대로 설정되어 있는가?” “접속 대상의 사용자 이름을 생략했는가?” 화면에 등장한 Permission Denied 문구만으로는 원인을 특정할 수 없어 이처럼 경험했던 문제들을 돌이켜보는 게 해결의 실마리가 됩니다.


손수 무언가 만들어보신 분들은 아시겠지만 설계와 구현 사이엔 간극이 존재합니다. 마음속으로는 쉽게 그려내고 만들 수 있으리라 생각한 것이 실제 손을 놀려보면 예상치 못한 문제들이 불거져 나옵니다. 저는 자투리 나무로 작은 보관함을 만든 적이 있는데 그저 나무 조각들을 배치하고 나사로 고정시키면 그만이라고 생각했습니다. 하지만 나무에 다른 나무를 결속하는 일이 생각대로 되질 않았습니다. 핸드 드라이버로 나사를 박아 고정을 시도했는데 앞이 뾰족한 나사를 그냥 박으면 나무가 쪼개져 버렸습니다. 이런 나사를 사용할 땐 미리 드릴로 적당한 굵기의 구멍을 낸 다음 사용해야 합니다. 그리고 이런 과정이 번거롭다면 다른 종류의 나사를 사용할 수도 있습니다. 나사의 끝 부분이 절삭 드릴의 팁처럼 생겼는데 이 나사를 사용하면 적당한 크기의 구멍을 뚫어 나가면서 나사를 박기 때문에 나무가 쪼개지지 않습니다. 기획을 하는 일이 전부고 “만들기”는 그저 만들기 계획을 현실에서 실행하는 단순한 작업이라고 생각하면 오산입니다. “만들기” 과정은 그 나름대로의 복잡함과 어려움이 있고 이는 기획만으로는 알 수 없는 영역입니다.


다음으로 소개할 책들은 소프트웨어 엔지니어와 관련된 책들입니다. 소프트웨어 엔지니어를 장인과 연결시키는 생각은 다양한 책들에서 찾아볼 수 있습니다. 책 “소프트웨어 장인”은 소프트웨어 분야의 다양한 구석들을 장인정신과 연결시켜 이야기합니다. 애자일의 여러 요소들과 개발 문화에 대한 이야기를 만날 수 있습니다. 책 “프로그래머의 길, 멘토에게 묻다”는 개발자의 성장에 대해 이야기합니다. “견습 패턴 Apprenticeship Patterns”이라는 원제가 책의 내용을 더 잘 설명하는데, 장인의 도제식 교육을 언급하며 수습생으로서 어떻게 소프트웨어 장인으로 나아갈 것인지를 이야기합니다.

“이 책의 목표 - 우리는 경험이 적은 소프트웨어 개발자들이 흔히 마주치는 딜레마에 대한 해결책을 공유하고자 이 책을 썼습니다. 기술적인 딜레마를 얘기하는 것은 아닙니다. 이 책에서 자바 디자인 패턴이나 루비 온 레일스 레시피를 찾아볼 수는 없을 것입니다. 오히려 우리가 집중하는 딜레마들은 더 개인적인 것들이며, 동기부여나 의욕에 관련되어 있습니다. 당신이 전문 소프트웨어 개발이라는 분야의 새내기로서 맞닥뜨리게 될 힘든 결정의 시기에 이 책으로 도움이 되고자 합니다” - 프로그래머의 길 멘토에게 묻다, 데이브 후버, 애디웨일 오시나이

마지막으로 책 두 권을 소개하겠습니다. 책 “메이커 운동 선언”은 이제는 익숙해진 단어 “메이커”, 그 배경에 있던 메이커 운동을 다룹니다. 기술 발전은 제조의 패러다임을 바꿨습니다. 전통적인 공장 기반 제조에서 벗어나 이제 개인의 영역에서도 제품을 설계하고 제작할 수 있습니다. 아이디어를 물리적 실체로 빚어내는 마법이 이제 대중의 손에 쥐어진 셈입니다. 책 “디자이너의 일과 생각”에선 저자의 디자인 철학과 디자인 사례들을 이야기합니다. 포뮬러원, 재봉틀 등 다양한 분야의 디자인이 등장하지만 그곳에 담겨 있는 핵심은 우리가 마주하는 상황에도 적용할 수 있습니다. 기획을 하고 만들어 보고 실패에서 배우는 일입니다.

“디자인은 누구나 할 수 있고, 누구나 하고 있다. 새로운 요리법을 발견하거나 거실 가구를 다시 배치하거나 개인 웹사이트를 새롭게 구성하는 등 새로운 일을 계획할 때 우리는 디자인을 한다. (중략) 이처럼 디자인 사고는 사람의 인식 속에 내재된 것이다. (중략) 우리 주변의 모든 것은 디자인되었다. 단순하지 않고 자연 그대로가 아닌 것은 모두 누군가가 디자인한 것이다. (중략) 인간이 무엇인가를 디자인하는 것은 일반적인 행위로 인식되었다. (중략) 디자인 능력은 누구나 지녔다고 보아, 디자인을 남다른 재능으로 여긴지는 얼마 되지 않았다.” - 디자이너의 일과 생각, 나이절 크로스
“디자이너들이 하는 일은 잃어버린 무엇을 찾아내는 게 아니다. 잊힌 도시나 묻혀 있는 보물을 찾는 게 아니라 환상 속의 도시나 마법의 보물을 스스로 만들어낸다. 어떤 의미에서 디자이너는 진정한 탐험가다. 존과 사이먼의 설명처럼 확실한 것을 찾아내기보다는 미지의 영역으로 가는 지도를 만들고 멋진 것들을 발견한다.” - 디자이너의 일과 생각, 나이절 크로스

앞서 말씀드린 것처럼 여러분이 일상적으로 떠올리는 생각들이 디자인이며 새로운 일을 도모하는 사람들 모두 사실은 디자이너인 셈입니다.


하드웨어 프로토타이핑

아이디어를 물리적 실체로 구현하는 다양한 범주의 작업 중 이번엔 “전자공학 만들기”를 소개하겠습니다.


프로그래밍을 통해 아이디어를 소프트웨어로 작성하여 컴퓨터에서 동작하도록 하는 경험을 할 수 있습니다. 가상의 세계에서 자신의 창조물이 동작하는 모습을 보는 일은 마음을 흡족하게 하는데 때론 스크린을 벗어나 만질 수 있는 실체로 만들어 보고 싶기도 합니다. 몇 가지 전자공학 지식을 익히고 전자부품을 이용하면 어렵지 않게 나만의 장치를 만들 수 있습니다.


여기서 모든 내용을 설명하기엔 지면이 부족하므로 역시 몇 가지 도서와 커뮤니티 사이트를 소개해 보겠습니다.


전자공학 만들기를 하기 위해선 기본적인 소자 및 회로 지식이 필요합니다. 하지만 겁먹지 마세요. 맥스웰 방정식 같은 복잡한 수식은 등장하지 않습니다 (아, 어떤 장치를 만드느냐에 따라 다르겠지만 저는 아직 사용해 본 일이 없습니다) 전류와 전압, 저항 정도를 이해할 수 있으면 충분하고 몇 가지 아날로그/디지털 소자의 작동 방식을 이해하면 됩니다. 책 “전자공학 만능 레시피”에선 입문자를 위한 지식을 골고루 다루고 있습니다. 저항/다이오드/트랜지스터 등의 소자들, 각종 센서들을 설명하고 회로에 전원을 공급하는 방법을 소개합니다. 각 구성 부분을 활용하는 사례도 소개하기 때문에 실제 작동하는 장치를 만들어 볼 수도 있습니다. 또한 복잡한 기능을 구현하기 위해선 프로그래밍 가능한 프로세싱 유닛이 동원되어야 하는데 이때 사용할 수 있는 보드인 아두이노, 싱글보드 컴퓨터 라즈베리파이도 소개합니다.


Make, https://makezine.com/

메이커 운동과 함께 유명해진 만들기 잡지 Make 입니다. 만들기에 대한 각종 글과 프로젝트들을 소개합니다.


Hackaday.io, https://hackaday.io/
Hackster.io, https://www.hackster.io/

다양한 전자공학 만들기 프로젝트들을 만날 수 있습니다.


Instructable, https://www.instructables.com/

전자공학 만들기 뿐만 아니라 손뜨개, 목공, 종이공예 등 다양한 분야의 만들기 프로젝트를 소개합니다. 분야를 가리지 않는 만들기를 만나보세요.



나의 프로젝트 - 모스부호 키보드

이번엔 저의 만들기 프로젝트 하나를 소개해보겠습니다.


여러 영화들 속에 모스 부호를 사용하는 장면이 등장합니다. 모스 부호는 통신망의 수준이 좋지 않던 시절에 사용하던 옛 기술이지만 아날로그 기술에 대한 향수를 자아냅니다. 영화 “기생충”에서는 지하에서 전등을 깜박이며 신호를 전달하고 영화 “커런트 워”에서는 에디슨의 아들이 모스 부호를 통해 에디슨에게 비밀 메시지를 전하거나 말로 표현하지 못한 감정들을 전합니다. 이런 장면들을 보면서 '나도 모스 부호를 배워보고 싶다'란 생각을 했는데 이왕이면 재밌는 방법으로 학습해보고 싶었습니다.


모스 부호 키보드의 아이디어는 간단합니다. 모스 부호 송신에 사용하는 장치와 마찬가지로 눌렀다 뗄 수 있는 스위치가 하나 있습니다. 사용자는 스위치를 이용해 모스 부호를 입력하고 장치는 이를 해석하여 알파벳으로 변환합니다. 장치는 USB를 통해 컴퓨터와 연결되는데 키보드 장치로 인식됩니다. 최종적으로는 장치에서 해석한 알파벳을 키보드 입력으로 컴퓨터로 전달합니다.


모스 부호를 능숙하게 구사할 수 있다면 원하는 단어, 나아가 문장들을 모스 부호 키보드로 전달할 수 있을 겁니다.


https://en.m.wikipedia.org/wiki/Morse_code

모스 부호엔 간단한 규칙이 있습니다. 짧은 신호 (dot) - 긴 신호 (dash)는 각각 1 unit, 3 unit 의 길이로 정의합니다. 그리고 하나의 알파벳을 구성하기 위한 코드 입력 사이의 쉼 간격은 1 unit 입니다. 알파벳과 알파벳 사이의 쉼 간격은 3 unit 입니다. 단어와 단어 사이의 쉼 간격은 7 unit 입니다. 이런 상대적인 길이를 이용하여 사용자의 입력을 해석하는 코드를 작성합니다.


저는 이번 만들기에서 DigiSpark라는 작은 보드를 사용했습니다.

http://digistump.com/products/1

1-2천 원이면 살 수 있는 저렴한 보드인데 만들기에 필요한 기본 기능들을 충분히 갖추고 있습니다.

아두이노 지원, USB를 이용한 프로그래밍

6개의 I/O Pins, Pulse Width Modulation, Analog-Digital Converter, LED, I2C/SPI 통신

게다가 가상 키보드로 인식하게 해주는 아두이노 모듈을 제공하기 때문에 저는 모스 부호 해석 코드만 작성하면 됩니다.


회로 만들기 준비물은 다음과 같습니다.

DigiSpark

푸시버튼 스위치 (손으로 누르고 있는 동안에만 접점이 연결되고 손을 떼면 다시 오픈되는 것)

저항 (스위치 상태를 읽기 위해 풀업 저항으로 사용)

버저, 포텐셔미터 (가변저항)

만능기판, 와이어, 땜납, 인두

회로의 역할은 단순합니다.

사용자가 버튼을 누른 상태를 GPIO 핀을 통해 읽을 수 있게 함

버튼을 누르고 있는 동안 버저음을 발생시킴


작업 환경 설정

아두이노 코드를 컴파일하고 업로드할 수 있는 개발 환경이 필요합니다. 저는 터미널과 Emacs 에디터를 사용하는 다소 구식의 프로그래머라 명령행에서 사용할 수 있는 arduino-cli 도구를 이용했습니다.

Arduino CLI 설치

https://arduino.github.io/arduino-cli/latest/installation/

초기화

$ arduino-cli config init

스케치 생성

$ arduino-cli sketch new MorseKeyboard

DigiSpark 연결

$ arduino-cli core update-index

$ arduino-cli board list

# https://digistump.com/wiki/digispark/tutorials/connecting

# http://digistump.com/package_digistump_index.json

# https://raw.githubusercontent.com/ArminJo/DigistumpArduino/master/package_digistump_index.json

$ vi ~/.arduino15/arduino-cli.yaml

# add additional url for DigiSpark

$ arduino-cli core update-index

$ arduino-cli core search digi

$ arduino-cli core install digistump:avr

$ arduino-cli core list

$ arduino-cli board listall digi

빈 스케치 컴파일하고 업로드해보기

$ arduino-cli compile -e --fqbn digistump:avr:digispark-tiny MorseKeyboard


키보드 장치로 인식시키기

아래 위치에 Digispark 라이브러리들이 있습니다

ls ~/.arduino15/packages/digistump/hardware/avr/1.6.7/libraries


DigiKeyboard 라이브러리를 이용하여 간단한 키보드 시뮬레이션을 만들어 봅니다. 위 코드를 장치에 넣고 USB에 꽂으면 3초마다 DigiKeyboard라는 키보드 입력을 하고 LED를 켰다 껐다 반복합니다.

디지털 신호 읽기

이제 사용자로부터 스위치 입력을 받아야 합니다. 이는 디지털 신호 0/1을 받는 것과 마찬가지인데 아래 링크에서 입력과 출력을 다루는 기본 코드를 확인할 수 있습니다. https://digistump.com/wiki/digispark/tutorials/basics


스위치를 DigiSpark의 I/O Pin에 연결시켜야 하는데 주의할 부분이 있습니다. 신호를 잘 가려내어 받기 위해선 풀업 저항을 사용해서 I/O Pin의 상태가 0 혹은 1로 확실히 구분되도록 해야합니다.


코드 작성 그리고 회로 만들기

장치를 구성하고 다음 링크와 같은 코드를 작성했습니다. https://gist.github.com/azurelysium/298b6a72538ec464eb191d7b155a0283


코드는 스위치 입력을 받아 모스 부호를 해석해야 합니다. 입력을 받는 건, 단순히 “스위치를 누른 상태다”, “스위치를 누르지 않았다” 이므로 이걸 모스 부호로 인식하게 만들어야 합니다. 기본적으로 스위치의 상태 변화를 감지합니다. (누름  뗌 그리고 뗌  누름) 상태 변화를 잘 살피면 스위치를 누른 상태에서 흐른 시간 그리고 스위치를 누르지 않은 상태에서 흐른 시간을 구할 수 있습니다. 이 시간의 길이를 고려하여 스위치 입력을 모스 부호로 바꾸고, 유효한 모스 부호라면 이를 알파벳/숫자로 변환합니다.


처음엔 브레드보드에 작은 푸시버튼을 연결해 테스트를 해봤습니다. 하지만 스위치를 바꾸고 나서 제대로 작동하지 않았습니다. 디버깅을 해보니 새로운 스위치의 경우, 버튼을 누르고 있어도 짧은 순간 접점이 떨어지는 순간이 있습니다. 따라서 이런 특성을 처리하기 위한 코드를 추가했습니다 (아주 짧은 지속시간을 갖는 버튼 누름 입력은 무시) 앞서 언급하기도 했지만 이런 것들은 기획/설계 단계에서는 예상하지 못하는 부분입니다.


이제 브레드보드에서 만든 프로토타입을 만능 기판으로 옮깁니다.

부품들이 보이는 윗면
단자들 사이를 전선으로 복잡하게 연결한 모습


여러분 소프트웨어 엔지니어 분들은 이미 만들기에 익숙한 사람들입니다. 제품에 필요한 비즈니스 로직을 소프트웨어의 형태로 옮기는 일이라던가 그저 번거로운 작업을 자동화하는 스크립트를 작성하는 일, 아니면 지적 유희로서의 알고리즘 풀이 등 이미 생각을 (가상) 세계로 옮기는 일을 하고 있습니다. 소프트웨어 엔지니어의 작업공간인 컴퓨터는 비교적 잘 통제된 환경이라 볼 수 있습니다. 대부분의 버그와 장애는 사람의 실수로부터 찾아옵니다. 여러 구성요소들을 결합해 만든 시스템은 각자의 요소들이 장애의 지점이 될 수 있습니다. 많은 요소가 개입될수록 문제 발생의 차원이 늘어나는 셈이죠.


하드웨어를 만드는 일도 마찬가지입니다. 통제된 논리의 세상에서 빠져나온 아이디어는 물리적인 실재를 가진 다양한 요소들과 어울리며 예상치 못한 크고 작은 문제들을 만들어 냅니다. 모스 부호 키보드의 경우, 소자들을 연결하여 회로를 만들어야 합니다. 브레드 보드에서 실험적으로 구성한 회로를 다시 만능 기판으로 옮기며 전선과 소자를 납땜합니다. 납땜을 한 각각의 지점과 전선의 모든 가닥들이 실패의 지점이 될 수 있습니다. 회로가 기대한 대로 동작하지 않는다면 멀티미터를 통해 전류가 흐를 수 있는 모든 지점들을 확인해 봐야겠지요. 어떤 경우엔 납땜 인두로 가하는 지나친 열로 인해 소자가 타버릴 수도 있습니다. 소자를 기판에서 떼어내고 교체하는 번거로운 작업을 피할 수 없죠. 키보드를 두드리던 깨끗한 손이 이제 때 묻고 거칠어질 시간입니다.


피부 만들기 - 3D 프린팅

처음 모스 부호 키보드를 떠올렸을 땐 노출된 회로의 형태로 마무리될 것이라 예상했습니다. 하지만 모스 부호 키보드 프로젝트를 마무리하지 않고 시간이 흐르는 사이 새로운 취미를 익혔고 모스 부호 키보드의 마지막 조각을 채울 수 있게 되었습니다. 전자회로라는 몸에 코드로 작성된 두뇌를 가진 모스 부호 키보드는 이제 3D 프린팅 된 피부를 갖추어 그럴싸한 장치가 되었습니다.


회사 서랍에서 이런저런 부품들을 꺼내 모스 부호 키보드를 만들고 있으면 동료분들이 다가와 궁금해하시는데 그런 동료들을 포섭하여 새로운 사내 소모임 “단락회로사랑 Short-circuit Love”을 조직했습니다. 처음 시작한 활동은 자유 주제의 만들기 프로젝트를 정해 각자 익힌 지식과 진행 상황을 공유하는 것이었습니다. 그러다 새로운 활동을 하나 더했는데 3D 프린팅 배우기였습니다. 회사의 지원금으로 3D 프린터와 필라멘트를 구입했고 초심자가 되어 3D 프린팅의 기초를 배우기 시작했습니다.

3D 프린팅의 단계를 나눠보면 다음과 같습니다.

모델링: 출력 대상의 3차원 모델을 준비하기

슬라이싱: 3차원 모델을 3D 프린터의 적층 방식에 맞도록 층층이 잘라내기

출력: 슬라이싱 결과물로 생성된 Gcode파일을 3D 프린터로 출력하기


모델링 단계에선 두 가지 선택이 있습니다. 이미 누군가 만들어 둔 3차원 모델을 사용하거나 새롭게 3차원 모델을 만드는 것입니다. - 아니, 제가 경험한 바로는 세 가지라고 할 수도 있는데, 공개된 3차원 모델을 내려받아 변형을 가해 2차 창작을 할 수도 있기 때문입니다.


Github에 오픈 소스 프로젝트들이 모여있듯이 Thingiverse​ 에는 자유롭게 사용할 수 있는 무료 3차원 모델들이 있습니다. 마음에 드는 물건이 있다면 3차원 모델 파일 (보통은 STL 파일)을 내려받아 사용합니다.


하지만 -모스 부호 키보드의 케이스를 만드는 일처럼- 구미에 맞는 모델이 없거나 창작 수단의 하나로 3D 프린팅을 이용하는 경우, 직접 3차원 모델링을 해야 합니다. 모델링을 위해 두 가지 제품을 사용해봤는데 목적에 따라 적합한 제품을 골라 사용하면 됩니다.


TinkerCad, https://www.tinkercad.com/

무료

웹으로 접속해 사용할 수 있으며 초보자도 쉽게 사용할 수 있습니다

모델링 방식은 기본 형태의 3차원 도형들을 배치하고 접합하는 방식입니다.

OnShape, http://onshape.com/

(공개 모델에 한하여) 무료

역시 웹으로 접속해 사용할 수 있습니다

모델링 방식은, 2차원 평면 스케치를 만든 다음 3차원으로 부피를 부여하는 방식입니다.

수치를 입력하고 조정할 수 있는 부분이 많고 기계 부품처럼 정교한 설계가 필요할 때 적합합니다


만들고자 하는 형상이 단순한 경우 저는 보통 TinkerCad 로 빠르게 작업합니다. 또한 TinkerCad에는 STL파일을 불러와 작업할 수 있는 기능이 있어 기존 모델을 변형시킬 때 사용했습니다. - 보통 기존 모델에 회사 로고를 입히는 작업을 했습니다.


TinkerCad는 기본 도형들을 활용하기 때문에 도형을 기울여 접합하는 등 직각으로 만나지 않는 표면의 경우 정확하게 다루기 어렵습니다. 그리고 기본 도형이 아닌 특별한 모양이 필요한 경우에도 한계가 있습니다. 저는 곡선을 특징으로 하는 디자인을 위해 OnShape로 모델링한 경우가 있습니다.

TinkerCad로 모델링 한 모스부호 키보드 케이스
케이스 출력 후 회로와 결합한 모습

시연 — 모스부호 키보드로 문자 입력하기

다음 동영상은 모스 부호 키보드를 통해 알파벳을 입력하는 모습입니다.


이것으로 모스부호 키보드 만들기가 끝났습니다. 마음속에 어렴풋하게 그렸던 “재밌는 방법으로 모스부호 외우기"는 스위치와 버저 그리고 예쁜 코랄색 케이스로 이뤄진 장치로 변했습니다. 소프트웨어 엔지니어 여러분, 이제 키보드에서 손을 뗄 시간입니다. 매만지고 두드리고 망가뜨리고 다시 고쳐보기를!

매거진의 이전글 개백취 | 과학 소설, 그리고 과학 영화 (2)
작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari