안녕하세요.
아두이노를 이용해서 기계식 키보드를 자작해봤어요.
준비물 : 키캡 세트(2~4만 원), 스위치(한 개 600원), 아두이노 레오나르도 호환 보드(늘소미노 하나, 2만원), 아크릴 가공(2만 원), 철사(500원), 다이오드(한개 10원), 납땜 도구, 글루건, 다섯 시간.
1. 키캡을 사서 원하는 모양으로 바닥에 늘어놓아요. 키보드 하나를 처음부터 만들거니까 한 벌로 된 세트를 사면 좋겠죠. 기계식 키보드에 쓰이는 스위치랑 키캡이 종류가 몇 가지 있는데 이상한 경로는 제외하고 온라인 쇼핑몰에서 대충 파는걸로 샀어요. 그러면 체리 MX 타입의 스위치랑 키캡이 될거에요. 저는 PBT 재질의 무각 네이비 키캡을 한 세트 사서 글자키만 옷 염색할 때 쓰이는 다이론으로 염색을 해서 투톤으로 쓰기로 했어요.
2. 아크릴 껍데기 도면을 그릴 수 있게 이거를 자로 잘 재야돼요. 스위치는 14*14mm, 키캡은 1x1 일반키 기준 18*18mm, 키 간격은 원래 기성품은 19.05mm (1.27mm 피치의 기판에 15홀을 차지해서 19.05mm) 라는걸 알았어요.
3. 벡터 프로그램으로 도면을 그려요. 여러 장의 아크릴 판을 잠굴 수 있어야 하니까 볼트 너트 지나갈 자리도 생각해보고... 아두이노 기판 수납할 자리도 생각해보고...
4. 아크릴 가게에 레이저 커팅을 주문해요. 빨간색 괜히 했는듯 촌스럽다...
5. 도구를 정리해봤어요. 핫멜트, 글루건, 양면테이프, 인두, 쑤세미, 플럭스, 실납, 핀셋, 다이오드, 아두이노, 철사, 철사2 (랜선), 전선, 체리MX스위치, 볼트/너트, 가위가 있어요.
6. 먼저 아크릴 하우징 중에서 자기들끼리 접착이 되어야 하는 윗판, 중간판1, 중간판2를 양면테이프로 붙여요. 너트가 이런식으로 지지를 받게 했어요.
7. 스위치를 꼽아요. 이때가 제일 기분좋음... 스위치는 14*14mm지만 아크릴은 13.9*13.9mm로 파면 레이저 굵기만큼 더 녹아서 스위치가 딱 맞게 잘 꼽히게 돼요.
8. 스위치는 안빠지게 글루건으로 붙여줍니다.
9. 이제 키보드 매트릭스를 구현하기 위해서 스위치 다리 두 개 중에 하나를 줄줄이 납땜합니다. 철사를 이용해서 가로로 쭉죽 붙이면 가로 다섯 줄이 나오겠죠. 사실은 철사 아니고 랜선 피복 벗긴거지만...
10. 마찬가지로 남은 한 쪽 다리는 세로로 줄줄이 엮어주는데 이때 바빠서 사진이 없음... 세로로 붙일 때 다이오드를 붙이면 키보드가 엔키롤오버가 됩니다. 다이오드는 스위치쪽이 +, 철사쪽이 -로 하면 되구요.
11. 이제 철사를 아두이노 핀에다가 붙여줍니다. 키보드 매트릭스를 할 때에는 아무 핀에나 붙이면 되는데요. 저는 정리를 쉽게 하려고 가로 다섯 줄은 빨간 전선을 써서 A0~A5에, 세로 열 네 줄은 사진에 잘 안보이지만 검은 전선을 써서 D0~D13에 붙였어요. 아두이노는 레오나르도나 마이크로 혹은 이 둘의 호환기판을 쓰면 되는데요. 되도록 크기가 작고 값이 싼 늘소미노 하나가 좋습니다. 여기에는 핀이 20개 있으니 제 경우 19개를 써서 남는 하나는 캡스락 LED로 쓸 수 있는데 귀찮아서 생략합니다. 원래대로면 핀 20개로 할 수 있는 최고 많은 키보드 매트릭스는 10*10 배열로 100키인데 저항을 이용해서 꼼수를 쓰면 대충 150키 정도까진 됩니다. 근데 이렇게 극한까지 매트릭스를 쓰면 키보드 매트릭스랑 실제 키보드 키 배열이 서로 다르게 되니 땜질이 귀찮아지겠죠?
12. 볼트는 바닥에서 잠궈집니다. 간지나게 뒷쪽에 범프온도 3D프린터로 만들어서 붙였어요.
13. 이제 컴퓨터와 연결하고 프로그래밍을 합니다. 설명하기가 귀찮네요. 원리만 간단하게 적어보면, A0~A4에 연결된 가로줄 5개를 INPUT_PULLUP으로 설정해서 풀업 입력상태로 만들고, D0~D13에 연결된 세로줄 14개를 전부 digitalWrite(high) 해놓은 상태에서, D0만 digitalWrite(low)를 하고 A0~A4를 각각 digitalRead합니다. 예를 들어서 A2는 low가 뜨고 나머지는 high가 떴다 이러면 D0이면서 A2인 키, 제 경우라면 캡스락이 눌렸다는걸 알 수 있지요. 그러면 Keyboard.press(KEY_CAPS_LOCK); 하면 됩니다. 반대로 high가 뜬 D0+A0, D0+A1, D0+A3, D0+A4는 안눌렸다는 거니까 각각 Keyboard.release(KEY_ESC);, Keyboard.release(KEY_TAB);, Keyboard.release(KEY_LEFT_SHIFT);, Keyboard.release(KEY_LEFT_CTRL); 하여 떨어짐을 알려줍니다. 확인을 했으면 D0은 다시 digitalWrite(high)로 올려놓고 이번엔 D1을 digitalWrite(low)로 내려놓고 마찬가지로 A0~A4를 digitalRead하는거죠. 이렇게 D0~D13을 하나씩 내렸다 올렸다 하면서 시간을 분할하는 식으로 어느 위치의 스위치가 눌렸는지 확인할 수 있는거죠.
실제로는 미니배열로 하다보니 fn키 조합으로 키 하나가 두 개 기능을 갖는다든지 이런 것도 많고, F숫자키들이 없다보니 자주 쓰는 ALT+F4같은건 ALT+FN+4를 해야되는데 이러면 귀찮으니까 이건 ALT+4가 ALT+F4가 되게 하고 이런 식으로 뭔가 사용자 경험을 생각해서 키를 넣고 하다보니 시간이 꽤 걸렸네요.
14. 키캡을 끼우면 완성!
비용은 소모품만 약 11만 원 정도 들었으니 기성품에 비해서 가격적으로는 메리트가 없는 것 같구요... 모양이랑 배열을 완전 맘대로 할 수 있다는게 큰 장점인 것 같아요.
+ 레오나르도 호환 아두이노는 컴퓨터에 끼우면 ID 1번 아두이노, ID 2번 HID 키보드, ID 3번 HID 마우스 이렇게 3개 장치가 잡힙니다. 그래서 어느 컴퓨터에 끼우든 드라이버 없이도 키보드나 마우스로 활용이 가능합니다. 프로그래밍을 해야될 때만 아두이노를 깔아주면 되구요. 다만 이렇게 다중 장치로 잡힐려면 고급 운영체제(?)여야된다고 하네요. 윈도우즈, OS X, 안드로이드에서는 사용이 가능한 것을 확인했고 BIOS 설정메뉴나 도스에서는 사용이 불가능합니다
| BEST없만갤 빨리좀 만들어주세요! 듣고 있어요? 응? 황ㄷ... 아니 관리자님! | 15.06.05 | | BEST잠깐... 뭘 자작이요? 이젠 하다하다 없으면 처음부터 다 제작해버리는군요! | 15.06.05 | | BEST이러다 여자친구도 자작할 기세
|
ㄷㄷㄷㄷㄷㄷ |