얼마전에 아두이노로 자작 키보드를 만들어서 자게에 올렸었지요~ 혹시라도 같이 만들어보실 분이 계실지 몰라 그 방법을 저도 잘 모릅니다만 아는 만큼 설명해보려 합니다.

일단 서론으로... 아두이노는 앞서 정리를 조금 했습니다만, 마이크로 컨트롤러의 이름입니다. 키보드에서 스위치는 단순히 누르면 전기를 통과시키고 떼면 전기를 끊는 부품이므로 이러한 스위치를 '키보드' 로서 인식시키고 스위치를 누를 때 어떠한 글자키가 입력되게끔 해주는 컨트롤러가 반드시 필요하겠죠. 컨트롤러의 종류는 다양하게 있는데 그중에 아두이노를 사용해보는겁니다.

아두이노로 키보드를 만들면 좋은 점은 여러 가지가 있습니다.

1. 원하는 모양대로 만들 수 있다.
2. 풀와이어링에 비해 납땜질이 쉽다.
3. 완전 자유로운 키 구성을 할 수 있다.
4. 만드는 동안 재밌다.

그러면 우선 어떠한 순서로 키보드를 만드는지 알아보겠습니다.

0. 재료
1. 모양 구상
2. 키캡 구입
3. 디자인
4. 키 배열 ← 여기까지 1단계
5. 조립 & 납땜 ← 여기까지 2단계
6. 아두이노 프로그래밍 ← 여기까지 3단계

대충 이런 단계로 진행이 되겠습니다. 오늘은 이중에서 1단계에 해당하는 4번 '키 배열'까지 해보도록 하겠습니다.

어떻게든 완성은 시켜드릴테니 금전적 시간적 여유가 있으신 분들은 진짜로 따라서 만드셔도 됩니다. 솔직히 제가 이걸 시작한 이유도 무슨 공방이니 뭐 아무개 기판이니 이런게 사실 어렵거나 대단한게 아니라 직접 하기 귀찮은 사람들이 대행하려고 하는건데 굉장한 기술자라든지 먼 나라 얘기처럼 보실 필요가 전혀 없다는걸 알려드리려고 하는거니까요.


---


0. 재료

우선 키보드 자작에 필요한 비용과 재료 소개입니다.

아두이노 : 전자부품 파는 쇼핑몰이라면 어디든지 판매할겁니다. 종류가 좀 많은데요... 이 글 쓰는 시점에서는 두 개중에 하나를 고르시면 되겠습니다.

A : DFROBOT에서 만든 "Beetle" - 70키 이하 소형 키보드용. 13,000원 선
B : 늘솜에서 만든 "늘소미노 하나" - 80키 이상 중대형 키보드용. 18,000원 선

Untitled-3.jpg


(왼쪽이 "늘소미노 하나", 오른쪽이 "비틀". 사진출처 : DFROBOT)

스위치 : 저는 키캡도 많고 스위치 구입도 쉬운 체리 MX 스위치를 썼습니다. 1개 600원, 30개 15,000원, 110개 49,000원에 사실 수 있습니다. '주옥션' 사셔서 스위치 빼서 쓰셔도 됩니다만 납땜 푸는게 귀찮으시면 그냥 새 스위치 사시는게 나을 수도 있습니다.

키캡 : 키캡은 종류도 워낙 많고 다양하여... 일단 아래 키캡 항목에서 따로 다루겠습니다만 우선 여기에서는 레오폴드 PBT 키캡 106키 한세트 35,000원으로 가격을 정해보겠습니다.

아크릴 하우징 : 아래에서 자세히 다루겠습니다만, 미니키보드는 2만 원, 텐키리스는 3만 원, 풀배열은 4만 원 정도 듭니다.

인두 : '세라믹 인두' 라고 된거 아무거나. 1~2만 원 선. 실습용 5천원짜리 인두는 비추천.

실납 : 실습용 실납 싼거 5,000원.

플럭스 : 노란색 구두약처럼 생긴거. 3,000원.

인두 수세미 : 간이 거치대로 쓸 수 있는 재떨이처럼 생긴 인두 팁 청소용 수세미가 있습니다. 7,000원.

QWE.jpg



(사진 출처 : 동신전자)


멀티미터(테스터) : 전압이나 저항이나 극성이나 단선/쇼트 여부를 확인할 수 있습니다. 하나 갖고계시면 추후 쓸모가 많을겁니다. 키보드 만드실 때도 납땜 잘 됐나 확인할 수 있습니다. 15,000원. 꼭 필요한건 아닙니다.

Untitled-2.jpg




사진출처 : 에누리닷컴





---



저항 : 1% 금속피막저항 10k옴 1/8와트 100개. 100개 사시면 한 개 10원입니다. 100개 주문하시면 100개보다는 약간 많이 한 105개쯤 줍니다. 1키 1저항이므로 키가 아주 많다면 200개 사시면 되겠습니다.

단선 와이어 : 전선에는 심이 얇은 선 여러겹을 꼬아 만든 연선과 심 한 개짜리 단선이 있는데 단선으로 1미터 정도만 있으면 됩니다. 테프론 래핑 와이어 이런거 비싼거 필요 없습니다.

얇은 철사 1미터 : 문방구에서 1미터에 200원.

...해서 대충 미니키보드는 10만 원 정도, 텐키리스~풀사이즈는 13만 원 정도가 소요됩니다. 물론 납땜 도구가 없으시면 비용이 좀 더 들겠고, 스위치나 키캡이 이미 있으시면 비용이 좀 더 줄겠습니다.


---



1. 구상

키보드를 어떤 모양으로, 몇 개의 키로 만들지 생각합니다.

종이에 그려보거나 마음에 드는 기성품 or 다른 사람 키보드의 사진을 구해도 되겠습니다.

아두이노를 사용하면 펑션키도 fn1 fn2 fn3 하여 여러 개를 맘대로 쓸 수 있으므로 다양하게 생각해보시면 되겠습니다.

극단적으로는 숫자 키패드 모양을 이용해서 폴더 핸드폰의 천지인 자판도 만들 수도 있습니다. 일정 시간 내에 키를 한 번 누를때와 두 번 누를때 서로 다른 글자가 입력되게 프로그램을 짜면 되니까요. 키보드 리맵핑 프로그램 없이도 이를 훨씬 뛰어넘는 키 변환이 가능합니다. 기자용 키보드도 물론 만들 수 있습니다.

PkHqnQu.jpg



---

2. 키캡 구입

키보드 매니아에서 키캡에 대해 잔소리를 하면... 안되겠죠 ㅋㅋ 짚고 넘어갈 부분만 이야기하겠습니다.

키캡은 키보드 모양과도 관계가 있습니다. 원하는 키캡을 구할 수 없다면 원하는 모양을 구현할 수 없을 수도 있으니까요. 예를 들어 스페이스바의 길이를 일반키 네 개를 붙여둔 크기인 1x4로 하고싶다~ 고 하더라도 기성품 키캡의 스페이스바는 1x6.25 사이즈가 표준이므로 해당 키캡을 구할 수 없다면 그런 모양으로는 만들 수가 없겠죠.

따라서 자신이 구할 수 있는 키캡의 한계를 고려하면서 구상을 해야하겠습니다. 개인적으로는 104~106키 풀배열 한 벌을 기본으로 구입하고, 포인트 키캡 등을 추가구매 하는 것을 추천합니다. 제가 알아본 바 한 벌 세트 구입이 가능한 키캡은 한성키보드/아이오매니아의 ABS 이색사출 세트(1.5~2.5만 원)가 있고 레오폴드 FC900R용 화이트/네이비/블랙 PBT 세트(3.5만 원)가 있습니다 .

추가로 고려하셔야 될 사항이 두 개 있습니다.

1) PBT 재질의 키캡은 염색을 통해 원래 색상보다 어두운 색상으로 변경이 가능합니다.
예를 들어 흰색 세트를 구입하시고 일부 키만 회색이나 핑크색 등으로 염색할 수 있습니다. 저는 네이비를 구입해서 일부 키만 블랙으로 염색해서 쓰고 있습니다. 당연하지만 자기 색깔보다 더 밝은 색깔로는 불가능하고 색상 톤을 바꾸는 것도 불가능합니다. 돌이킬 수도 없습니다.
ABS 재질의 키캡은 염색이 불가능하므로 여러모로 PBT 재질을 추천합니다.

2) 스탭 스컬쳐가 적용된 키캡은 해당 줄에 맞게 써야합니다.
세트로 판매하는 키캡은 대부분 스탭 스컬쳐가 적용되어 있습니다.
스탭 스컬쳐가 적용되어 있으면 가로로 같은 줄 이내에서는 키 순서를 바꿔도 상관이 없지만 다른 줄로 이동시키면 높낮이가 달라집니다. 예를 들어서 1x2 크기의 백스페이스 키를 1x1 크기의 delete와 백스페이스 두 알로 교체하는 경우, 네방향키 위에 달린 delete키를 끌어와서 쓰면 각인이 똑같으니 참 좋을 것 같지만 서로 다른 줄에 위치하므로 높낮이가 달라서 갖다 끼우면 모양새가 이상해집니다.

그나마 다행인건 보통 104~106키가 총 6줄 (FEDCBA로 표기하는 경우도 있고 R1~R6으로 표기하는 경우도 있음) 있으나 맨 윗줄(R1, F)과 맨 아랫줄(R6, A)은 그 다음줄(R2, D 또는 R5, A)과 높이가 같습니다. 즉 이 두 줄은 이웃하는 줄과 혼용이 가능합니다.
예를 들어 숫자키패드의 0번 키(1x2 사이즈)나 우측 쉬프트키(1x2.75 사이즈)를 스페이스바로 쓸 수 있습니다.

키캡은 마음에 드는게 있으면 바로 구입 먼저 하시기 바랍니다. 크기를 정확히 재어야 하기 때문입니다. 유명한 키보드 키캡은 어느정도 디자인 가능하게끔 키캡 사이즈 정보가 있는 경우도 있습니다.

blank_keyboard_layout.jpg



(레오폴드 FC900R 키캡 사이즈)


---



3. 디자인


물건 고르기만 하고 끝내면 팁게에 올릴 필요도 없겠죠. 이제부터 어려워집니다.

키캡도 정하셨고 이에 맞게 모양도 결정하셨으면 실제로 아크릴을 레이저커팅 하여 키보드 알을 꼽을 수 있게 디자인을 해야됩니다.

레이저 커팅은 Vector 방식의 도안을 따라서 플로터가 이동하여 레이저를 발싸! 해서 아크릴을 절단하게 됩니다. 따라서 도면은 벡터 방식의 프로그램 아무거나 이용하여 그리셔도 무방합니다. 대표적인 상용 프로그램으로 어도비 일러스트레이터, 코렐 드로우, 오토데스크 오토캐드 등이 있습니다. 제가 공짜 프로그램중에서 괜찮은게 있나 하고 네 개 정도 찾아봤는데 아쉽게도 쓸만한게 전혀 없었습니다. 따라서 프로그램은 알아서 입수하시거나 각 사 홈페이지를 통해 체험판을 무료로 다운로드 받아서 쓰시면 되겠습니다.

저는 어도비 일러스트레이터를 좋아하는데 이 프로그램으로 키보드 모양을 그리는 방법을 알아보면 다음과 같습니다. 쓸줄 아시는 분들은 저 밑에까지 스킵~


▼ 여기서부터

1) 프로그램 실행하시고 File - New 해서 새 문서를 만듭니다.
크기는 넉넉하게 500mm * 500mm 하시고 단위를 millimeters로 골라줍니다. 나머지는 놔두시구요.

2) 새 문서가 열리면 Ctrl + K 하여 환경설정을 열어줍니다.
Units 탭에서 네 개의 기본 단위를 전부 밀리미터로 바꿔줍니다.

2.png



3) 네모 그리기 도구 (단축키 M)
툴바(왼쪽에 도구 아이콘들 붙어있는 막대기)에서 네모 그리기 도구를 선택하시고 빈 화면을 찍으면 수치를 입력해서 그 크기에 맞는 네모를 그릴 수 있습니다. 방금 단위를 밀리미터로 고쳤으니 10 하면 10mm로 그려집니다.


4) 툴바 맨 밑에 보시면 면색과 선색을 지정할 수 있습니다.

면색은 없음으로 하시면 되고, 선색은 어차피 아무 영향이 없으므로 보기 좋은 색으로 하시면 되겠습니다.


5) 툴바에서 네모 그리기 도구 꾹 누르고 있으면 모서리가 둥근 네모, 동그라미, 다각형 그리기 도구도 숨어있습니다.


6) 선택 도구 (단축키 V)
그려놓은 도형을 선택하거나, 드래그해서 위치를 바꿀 수 있습니다.
참고로 드래그 할 때 Shift키를 누르면 45도 각도로 정확히 끊어져서 이동이 되고
Alt키를 누르면 기존 도형 유지하면서 복제가 됩니다.

근데 드래그는 하지 마세요. 우리는 수치 입력으로 정확히 이동할겁니다.

7) 정확히 이동/복제 (단축키 Ctrl + K)
환경설정 창에서 방향키를 한 번 눌렀을 때 어느만큼 움직일지 지정할 수 있습니다. 아주 중요한 기능입니다.
예를 들어서 18*18 크기의 네모를 그리고, 이동값을 18.5로 설정한 뒤 Alt + 오른쪽 방향키를 누르면 사이 간격 0.5밀리씩 띄워서 18*18 네모를 한줄 쭉 그릴 수 있습니다.
드래그로 적당히 이동시키지 마시고, 꼭 수치로 이동시켜서 그리시기 바랍니다.


8) 도형 합치기 / 쪼개기

상단 메뉴 Window - Pathfinder 눌러보시면 겹친 도형을 서로 합치거나 쪼갤 수 있는 버튼이 달린 판떼기가 튀어나옵니다.

뭐가 뭔지는 몇 번만 해보시면 아실테고...

참고로 쪼개고 나면 '그룹' 이라 하여 쪼개논게 일단 선택하기 편하라고 다 뭉쳐져 있습니다. 상단 메뉴 Object - Ungroup을 통해 뭉쳐진 그룹을 언그룹한 뒤 필요한 부분만 남기고 지워내시면 되겠습니다.


저장하실 때 반드시 "어도비 일러스트레이터 8" 선택하셔서 버전 낮추어 저장하시기 바랍니다. 그래야 다른 프로그램에서도 오류 없이 호환되어 읽힙니다.

▲ 여기까지 어도비 일러스트레이터였습니다.

참고로 체리 MX 스위치가 꼽힐려면 네모 크기를 13.9 * 13.9mm로 파시면 됩니다.
키캡 크기는 18 * 18mm입니다.
표준 키 간격은 19.05 * 19.05mm입니다. -> 즉 키캡과 키캡 사이에 1.05mm의 간격이 발생합니다. 이건 스위치 기판의 홀 간격이 1.27mm여서 그런건데, 딱 붙이면 서로 닿으니까 안되고 18보다 약간만 띄워서 18.5라든지로 하셔도 됩니다.


디자인을 정확히 하려면 무조건 정확히 측정하는 방법밖에는 없습니다. 스위치 크기, 키캡 크기, 아두이노 보드 크기 등등 정확히 재고 정확한 간격으로 그리면 됩니다.


참고로 키캡에는 크기가 정해져있습니다. 일반키 = 1x1은 18 * 18
컨트롤, 알트 등의 모디키는 1x1.25 = 18 * 22.5
캡, \는 1x1.5 = 18 * 27
백스페이스, 키패드0은 1x2 = 18 * 36
왼쪽 쉬프트, 엔터는 1x2.25 = 18 * 40.5
오른쪽 쉬프트는 1x2.75 = 18 * 49.5
스페이스바는 1x6.25 = 18 * 112.5

자 이렇게 길이가 긴 키는 스태빌라이저를 쓰는게 원칙이나, 체리 MX 청축 기준 스페이스바 제외 가장 긴, 오른쪽 쉬프트 2.75까지는 가운데에 스위치 하나만 박고 스태빌라이저 없어도 타이핑/키감에 별 지장이 없습니다. 갈축 적축 흑축은 2.75에서 측면을 누르면 약간 마찰이 생겨서 스태빌 끼우는걸 추천합니다. 전 상남자라 스태빌 쓸줄을 몰라서 그냥 가운데 스위치 하나만 박고 스페이스바는 좌 우 스위치 두 개를 박았습니다 ㅋㅋ

스위치 끼우는 구멍의 위치가 어딘지를 키캡을 보고 실제로 측정해야 하므로(보통은 가운데지만...) 키캡을 설계 전에 구입해야합니다. 또 아두이노 보드가 들어가야될 두께와 크기를 보려면 마찬가지로 측정해야 하므로 이쪽도 설계 전에 구입해야합니다.

아크릴은 스위치가 꼽히는 윗면은 스위치가 5mm이니 5T로, 배선과 납땜을 할 여백인 중간면은 어차피 스위치 접점 튀어나온데다 저항과 전선이 두께를 차지하니 3T로, 바닥면은 아두이노 비틀처럼 얇은데다 구석에 키 없는 자리(=접점과 배선과 저항이 차지하는 3mm가 없는 자리)가 있다면 여기에 쑤셔넣으면 별도로 공간을 차지하지 않을테니 이런 경우 2T로 / 아두이노 레오나르도처럼 두께가 있다면 위치를 고려하여 적절히... 해서 3장 구조로 만드시면 되겠습니다. 모두 디자인이 끝나면 도면을 아크릴 레이저커팅 업체에 넘기고 제작하시면 됩니다. 보통 3장 구조로 미니 키보드 사이즈라면 2만원 정도, 풀 키보드 사이즈라면 4만원 안쪽의 금액이 나오게 될겁니다.


구상 -> 윗판 -> 중간판(왼쪽 아래 틀이 아두이노 비틀 들어갈 자리) -> 바닥판을 예로 들면 이렇게 그려지겠지요.

Untitled-1.png



여러모로 고민해서 디자인 해보시기 바랍니다. 실제로 그려보시고 제작 가능/불가능 여부가 궁금하시면 저한테 물어보시면 알려드리겠습니다.


---


4. 키 배열

아크릴을 주문하고 배달이 오는 동안 키 배열을 하도록 합니다. 앞서서 70키 이하 소형 키보드는 아두이노 '비틀', 80키 이상 중대형 키보드는 '늘소미노 하나' 라고 했는데요...

아두이노에는 스위치가 눌렸는지 아닌지를 감지할 수 있는 입력 핀이 여러 개 달려있는데 그중에 '비틀' 모델에는 여러 개의 키를 감지(단 같은 묶음 내에서 동시키입력 불가)할 수 있는 핀(=아날로그)이 5개, 한 개의 키만 감지(즉 한 묶음에 키가 하나밖에 없어서 동시키입력 가능)하거나 혹은 LED를 켜고 끌 수 있는 핀(=디지털)이 5개 라는 이야기입니다. 참고로 '늘소미노 하나'에는 아날로그가 총 9핀, 디지털이 11핀 하여 20개의 핀이 있습니다. 이쪽은 아주 넉넉합니다.

자 우선 '비틀'에 키를 연결한다고 했을 때에...
최소한 캡스락 LED는 하나 켜야 할테니 디지털 핀 하나를 쓸 것이고
남은 디지털 핀 1개당 1키를 물려서 4키 연결할 수 있고
나머지 모든 키를 아날로그핀 5개에 나눠서 달아야 된다는 이야기입니다.

그럼 예를 들어서 69키를 하겠다면 4키는 디지털, 나머지 65키는 13키씩 묶어서 아날로그에 물리면 소화가 됩니다.
근데 104키를 하겠다면 4키 디지털에 나머지 100키를 20개씩 묶어서 아날로그에 달아야됩니다.

아두이노 아날로그 핀은 원래 이론대로는 1024 단계를 갖으므로 1023개의 키를 물려 쓸 수 있어야 정상이겠지만 현실에서는 잔혹하게도 오차가 발생하는데다 제작 편의성을 생각하지 않을 수 없으므로 최대 14~15개 정도를 사용할 수 있는 것으로 보입니다(반드시 더 많이 입력해야지만 한다면 좀 더 할 수는 있지만...) 그래서 70키 정도까지는 크기&두께&가격이 더 좋은 '비틀'을 쓰면 좋고, 80키 정도부터는 '늘소미노 하나'를 써야됩니다.

자 그럼 우선 이 글에서는 제약이 더 심한 비틀을 기준으로 설명합니다. 다시 핀 배열 이야기로 돌아가서, 어떤 키들을 묶음 처리할지 고민을 하셔야지 됩니다. 왜냐면 같은 묶음 내에서는 동시키입력이 안되기 때문입니다. WASD와 네방향키를 한 핀으로 묶어버리면 게임 불가 키보드가 완성됩니다. 자녀분들께 선물하세요... 예를 들어 컨트롤/알트/쉬프트 키는 다른 모든 키와 눌릴 가능성이 있으니 디지털 핀을 단독으로 사용하는게 좋습니다. 네 방향키 + WASD는 각각 서로 다른 아날로그 핀을 사용하게 하고 추가로 스페이스바를 겹치지 않게 하면 아날로그 핀 5개 이내에서 절묘하게 동시키입력 구현이 될겁니다. 거의 퍼즐게임 수준입니다.

+ 프로그래밍을 잘 못해놓으면 같은 핀끼리는 아주 빠른 시간의 반복입력시 키가 씹힐 수도 있습니다(예를 들어 연속되는 숫자키). 최대한 효율을 좋게 하기 위해서 연속 입력해야되는 키들은 서로 다른 묶음에 넣는 것이 좋겠습니다.

+ 납땜을 편하게 하기 위해서는 서로 가까이에 있는 키들끼리 뭉쳐서 묶는게 좋습니다. 키 1칸 떨어진 정도까지는 전선 없이 저항 다리로 떼울 수 있지만 그 이상 떨어져있으면 전선을 써야되거든요. 아래 예에서 보시면 5색 전부 2덩이로 나눠져있습니다.

세 가지 조건을 생각해보면서 아크릴이 올 때 까지 키들을 분류해봅시다.

예 (회색은 디지털 핀, 보라/초록/하늘/파랑은 각각 12개 키)
Untitled-2.png




3번에 일러스트레이터만 어떻게 쓰실 줄 알면 이번 편은 별거 없는데요... 다음 시간에는 납땜에 대해서 설명하겠습니다.