지난번 만든 넘패드에 이어, 오쏘리니어 60% 레이아웃 키보드도 제작 완료했습니다.
넘패드 + 적층식 아크릴 케이스 제작 후기 : https://gall.dcinside.com/mechanicalkeyboard/1375614
미리 스압임을 알려드리며, 제작기를 적어 볼까 합니다.
1. PCB 디자인 및 주문
회로도는 Kicad 7.0으로 그렸습니다.
처음 회로도를 그리기 전에, 회로도는 키보드의 여러 스위치를 mcu에서 구분하여 인식할 수 있도록 하는 설계라는 것을 공부했습니다.
그 후 설계를 진행하며 모자란 지식은 구글링으로 보충했습니다
깃헙에서 keyboard kicad design 뭐 이런 키워드로 검색하면 굉장히 많은 kicad project가 나오는데, 그런 프로젝트들을 많이 참고했습니다.
키 스캐닝 방식은 넘패드에 사용한 것과 같은 시프트 레지스터 방식을 채택했습니다.
펌웨어가 시프트 레지스터 스캐닝 방식을 지원한다면, 키가 몇개든 mcu에 핀을 3개만 연결하면 됩니다.
vcc/gnd 포함 5개의 핀만으로 모든 키 스캐닝이 가능하므로, 제가 선택한 xiao rp2040같은 지원 핀 수가 적은 mcu를 사용할 수 있습니다.
Kicad에서 해야 하는 일은 다음과 같습니다.
1. 논리 회로도 그리기
2. 심볼에 풋프린트 할당
3. 풋프린트 배치
4. 배선 연결
5. 엣지컷 설정
6. 나머지 부분 GND로 채우기 (채움 영역 설정)
7. pcb 주문용 gerber 파일 생성
먼저 논리 회로도를 이렇게 그리고, 풋프린트를 할당하여 풋프린트 배치를 진행하였습니다.
풋프린트를 배치할 때 오차 없게 예쁘게 배치하는 방법이 있습니다.
기본적으로 1u 는 19.05기 때문에, 사용자 그리드의 크기를 19.05의 1/8인 2.38125로 해주면 됩니다.
그러면 0.25 단위로 끊어지는 키의 풋프린트도 예쁘게 배치할 수 있습니다.
엣지컷(pcb의 외곽선)은 키보드 풋프린트를 딱 맞게 감싸는 사각형으로 그린 다음, 0.5mm씩 안으로 오프셋을 주었습니다.
이론적으로 딱 맞게 구성하면 나중에 하우징과 간섭이 생길 수 있기 때문입니다.
채움 영역을 그릴때 채우기 유형을 해치 패턴으로 하고 너비와 간격을 잘 지정하면 요렇게 이쁜 사선 모양으로 채워집니다.
완성된 키보드에서는 안 보이는 영역이지만, 추가금이 드는 것도 아니고 자기만족으로 해봤어요.
거버 파일을 생성할 때는 직접 설정해도 되지만, 유저 플러그인을 사용해도 됩니다.
kicad에서 pcb 주문에 필요한 파일을 자동 생성해주는 플러그인을 다운받아 사용했습니다.
보통 대부분의 pcb 제작 업체가 zip 거버 파일과 bom/cpl 파일을 필요로 하는데, 이것들을 자동 생성해 줘서 굉장히 편합니다.
주문할때, SMT 포지션이 잘 안맞을 때가 발생합니다. 잘 확인하여 살짝살짝 움직여 줘도 되고, CPL 파일에서 직접 수치를 수정해 줘도 됩니다.
저는 이것도 수치를 수정하는 파이썬 파일을 찾아서 살짝 수정하여 이용했는데, 부품마다 다를 수 있으므로 잘 확인하여 직접 움직여 주는게 편할수도 있습니다.
2. 보강판 및 하우징 제작
비용과 편의성 등의 문제로, 적층식 아크릴 구조로 보강판 및 하우징을 제작했습니다.
무료 2D 캐드 디자인 프로그램인 Nanocad 5.0 버전을 사용했습니다.
마찬가지로 하나도 모르는 백지 상태에서 시작했기 때문에, 유튜브에서 키보드 보강판 설계라고 검색하면 나오는 영상을 참고했습니다.
키보드 하우징을 설계하는데 필수적으로 알아야 할 지식 등이 많아 안 보면 큰일날 뻔 했네요.
적층식 아크릴 케이스를 설계할때 주의했던 점이 있습니다.
아크릴 보강판은 5T가 기본인데, 5T 보강판의 경우는 pcb 결합 방식의 스테빌을 사용하여야 하고,
그때 스테빌 결합이 보강판과 간섭이 없도록 해야 합니다.
이런 디자인을 직접 그릴 수도 있겠지만, https://plate.keeb.io/ 에서 쉽게 뽑을 수 있는 방법이 있습니다.
keyboard-layout-editor의 레이아웃 raw data를 위 사이트에 넣어주고, 스테빌라이저 컷아웃 타입을 5mm plate로 넣어주면 5T 두께에 맞는 보강판 디자인을 쉽게 뽑을 수 있습니다.
이것을 Download DXF 버튼을 눌러 dxf 파일로 저장한 다음, nanocad에서 불러와서 철심 방향 바꿀 스테빌은 바꾸고, 테두리만 그려주면 보강판이 완성됩니다.
저는 5T 통 아크릴 보강판을 할까 하다가, mcu 납땜부분 확보 등으로 인해 상단보강판 2T + 하단보강판 3T로 나누었습니다.
하단 보강판 3T는 위에서 말한 대로 5mm plate로 받았고, 상단보강판은 3mm plate로 지정했습니다.
컷아웃은 모두 1mm로 하여 꼭지점을 부드럽게 처리했습니다.
plate.keeb.io가 그려주는 보강판은 스테빌 철심 방향이 반대인 경우에 대한 디자인은 포함하고 있지 않습니다.
그래서 dxf로 내려받은 도면을 수정해야 할 일이 생길 수도 있습니다.
저는 하단 스플릿 스페이스바 두개는 모두 철심 방향을 하단에서 상단으로 바꾸었습니다. 그래서 완성된 nanocad 보강판을 보면
이렇게 생겼습니다.
아크릴 적층식 하우징의 디자인을 구글링해 보면, 레이어별로 계단식으로 한 구조가 있고, 일자로 떨어지는 구조가 있습니다.
개인 취향인 것 같은데, 저는 그냥 일자로 떨어지도록 깔끔하게 설계했고, 상단 여백은 15mm, 그 외 여백은 모두 10mm로 설정했습니다.
M3 스페이서가 들어갈 구멍을 확보해야 하기 때문에 최소 10mm 정도는 주어야 할 것 같았습니다.
키보드 본체의 하우징은 총 6레이어로,
보강판 레이어 2개를 중심으로, 상판 3T 하나, 5T 하나, 하판 3T 하나, 5T 하나로 구성했습니다.
보강판 레이어는 투명, 상/하판의 3T짜리는 아스텔(불투명), 5T는 반투명 아크릴로 선택했습니다.
키보드의 세로 길이를 계산하여 자경을 5.5도 정도로 주려고 하니, 9mm 정도의 뒷굽 높이를 주면 되는 것으로 계산이 나오더라구요.
그래서 3T 두께의 뒷굽 3장을 붙였습니다. 총 아크릴 판은 9장이 나오도록 디자인했네요.
주문하기 전에 fusion360(무료버전이 있음) 등으로 dxf 파일을 3D로 변환한 다음 조립 기능을 활용하여 스페이서 삽입부 등이 잘 맞는지,
생각하던 레이아웃대로 잘 나오는지를 확인했습니다.
이상한 점은 딱히 발견되지 않아, 그대로 주문.
3. 펌웨어 적용
펌웨어는 kmk를 선택했습니다. kmk는 시프트 레지스터 스캐닝 방식을 지원하는데, 이미 pcb 설계시에 어느 정도 염두를 하고 설계를 진행한 것도 있습니다.
kmk 펌웨어로 레이어별 키매핑을 프로그래밍한 다음 펌웨어 documents의 설치 가이드를 따라 펌웨어를 rp2040에 설치했습니다.
그다음 역시 공식 문서를 참고하여 boot.py와 main.py를 생성하여 키매핑을 구성한 다음 rp2040에 넣어주었습니다.
저는 개발자라서 그렇게 어렵지는 않았는데, 그래도 여기저기 찾아보면 또 샘플 코드가 많으니 참고해서 빠르게 진행했습니다.
qmk/via 매핑이 아직까지는 안 되는 것 같은데, 키 매핑을 수시로 변경하는 것도 아니고, 그냥 조금 불편함을 감수하기로 했습니다.
4. 빌드
PCB에 MCU를 납땜하기 위해 핀 헤더가 필요하고,
하우징을 제작할 때에 하우징 결합용/자경용 뒷굽 결합용으로 뚫어둔 구멍을 채우기 위해 M3 육각 스페이서 8개, M4 육각 스페이서 3개, M3 나사 16개, M4 나사 6개가 필요했습니다.
스페이서의 길이는 예를 들어 스페이스가 연결할 하우징의 두께가 20mm면 18mm 정도로 1~2mm 짧은 길이를 가진 것을 선택했습니다. 아크릴 재단의 두께가 딱 맞춰 떨어지지 않기 때문입니다.
딱 맞게 했다가 아크릴 두께보다 길이가 더 길면 줄톱으로 갈아내야 하는 등 귀찮습니다.
딱 맞춘 갯수로 주문하려다가, 불량품 끼어 있으면 또 주문해야 하는 번거로움이 있어 그냥 넉넉하게 1.5배수로 주문했습니다.
그리고 아크릴이 바닥에 바로 닿으면 소리도 시끄럽고 덜그럭거리므로 충격흡수 3M 범폰도 주문했습니다.
스위치는 물왕, 스테빌라이저는 줄테빌, 키캡은 Ghost Judges Botanical Garden을 선택했습니다.
먼저 PCB에 mcu를 납땜해 주었습니다. 원형 핀 헤더를 PCB에 납땜한 다음, MCU를 핀헤더에 납땜했습니다.
납땜할 땐 몰랐는데, 지금 보니 수평이 정확히 맞지는 않네요. 어차피 안 보이는 부분이니까 잊어버리기로 했습니다.
그다음 PCB에 스테빌을 결합하고, 보강판에 PCB와 스위치를 결합했습니다.
보강판 상단/하단을 주의하여 조립하고, 먼저 네 귀퉁이의 키캡을 조립하여 PCB를 고정해 주었습니다.
스위치를 결합할 때 카일 핫스왑 소켓을 눌러서 혹시나 PCB에서 떨어지지 않도록 하는게 좋습니다.
물왕도 투명하고 보강판도 투명해서 예쁘네요.
이제 뒷굽부터 쌓으면서 올라옵니다. 적층식 아크릴 하우징은 쌓는 맛이 있어 알루하우징과는 또 다른 재미가 있습니다.
모두 쌓은 다음 키캡을 결합하면 완성.
5. 후기
첫 오쏘리니어라 오타가 엄청 나는데, 손가락이 꺾이는 것은 훨씬 덜 해서, 적응하면 기존 키보드보다 손가락에 가는 부담이 좀 더 줄어들 것으로 기대하고 있습니다.
눈에 나사가 결합된 것도 그대로 보이고, 아무래도 공동제작하는 여러 커키보다는 부족한 점이 많지만, 그래도 직접 만든 거라 제 눈에는 되게 예뻐보이네요.
이건 먼저 만들었던 넘패드와 나란히 배치한 것입니다. 하우징 높이 규격등은 같아서 딱 맞게 잘 떨어지네요.
첫 목표로 했던 60배열 키보드 제작이 끝났습니다.
백지 상태에서 1년 정도면 만들수 있지 않을까? 했는데, 생각보다 그렇게 어렵지 않고 참고할 만한 자료들이 워낙 많아서 금방 만들 수 있었던 것 같습니다.
1년 목표로 잡은 거라 시간이 많이 남았는데, 남은 올해동안 또 다른 키보드를 만들어 볼까 합니다.
다음번에는 앨리스 배열을 만들어 볼까 하는 생각만 하고 있습니다.
긴글 읽어주셔서 감사합니다.
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.