


이 instructable에서는 개발 장치용 초소형 키보드를 만드는 방법을 보여 줍니다.
회로 설계와 PCB 레이아웃부터 3D 인클로저 설계 및 소프트웨어 개발까지 모든 단계를 포함합니다.
선택 사항: 사용한 MINTIA 민트 상자
시중의 대부분의 초소형 키보드는 USB 또는 Bluetooth로 연결되는데, 개발 장치에 사용하기에는 여러 가지 불편한 점이 있습니다.
USB 연결:
Bluetooth 연결:
반면 대부분의 개발 장치는 I2C 인터페이스를 지원합니다. 따라서 I2C 인터페이스를 사용하는 키보드가 개발 장치에 더 적합합니다. 그러나 시중에는 I2C 키보드가 흔하지 않습니다. 그러니 직접 만들어 봅시다!
I2C (Inter-Integrated Circuit; 발음은 "아이 스퀘어드 씨" 또는 "아이 투 씨"), 또는 I2C 및 IIC라고도 하며, 동기식, 다중 마스터/다중 슬레이브방식의 단일 종단형 직렬 통신 버스입니다. 1980년에 Philips Semiconductors 가 개발했으며, 현재는 NXP Semiconductors 입니다..[1] 저속 주변 장치를 연결하는 데 집적 회로 (IC)을 프로세서 및 마이크로컨트롤러 에 연결하는 근거리 보드 내 통신에 널리 사용됩니다.
I2C 버스는 속도보다 단순성과 낮은 제조 비용이 더 중요한 다양한 전자 기기 애플리케이션에서 찾아볼 수 있습니다.
많은 개발 모듈이 I2C 인터페이스로 연결되며, 이는 마이크로컨트롤러 세계에서 USB 인터페이스와 같은 역할을 합니다.
참고:
https://en.wikipedia.org/wiki/I2C

일반적인 미니 키보드에는 기능 키 F1~F12를 제외하면 약 65개의 키가 있습니다. 키는 5개 행으로 배치되므로 각 행에는 65 / 5 = 13개의 키를 배치할 수 있습니다.
대부분의 키보드는 모든 버튼을 5개 행과 13개 열로 연결하는 매트릭스 회로 설계를 사용하므로 5 + 13개의 GPIO가 필요합니다. I2C 인터페이스에 2개의 GPIO를 사용하므로 총 20개의 GPIO가 필요합니다. Waveshare RP2040-tiny 개발 보드 는 높이가 낮은 개발 보드이며 GPIO가 20개 있어 이 프로젝트에 딱 맞습니다.
이전 경험에 따르면 일반적인 택트 스위치는 시중의 미니 키보드와 비교해 누르기가 너무 뻑뻑합니다. 이는 "작동력(Operating Force)" 특성과 관련이 있습니다. 일반적인 택트 스위치의 작동력은 160gf 또는 250gf입니다. 테스트해 본 결과, 100gf(약 1N)가 작은 키보드에 훨씬 더 적합하다고 생각합니다.
회로 설계의 자세한 내용은 위 동영상을 참조하세요.

회로 설계가 끝나면 다음 단계는 회로도를 PCB 레이아웃으로 내보내는 것입니다. MINTIA 민트 케이스에 들어가는 작은 키보드를 만들고 싶었으므로 PCB 크기는 74.5 x 44.3 mm로 정했습니다.
일부 특수 키는 쉽게 식별할 수 있도록 90도 회전시켰습니다. 모든 버튼은 PCB 앞면에 배치하고 RP2040-tiny와 I2C 핀 헤더는 PCB 뒷면에 배치했습니다.
PCB 레이아웃의 자세한 내용은 위 동영상을 참조하세요.
회로도와 PCB 레이아웃의 최종 버전은 OSHWHub에서 공유했습니다:
https://oshwhub.com/moononournation/project_bvgfbgsk

PCB 레이아웃을 완성한 후에는 JLC EDA 설계 소프트웨어에서 PCB를 온라인으로 바로 주문할 수 있습니다. 동시에 SMT 서비스도 주문할 수 있습니다. 작은 택트 스위치 65개를 직접 납땜하는 것은 쉽지 않으므로 앞면만 SMT 서비스를 주문했습니다. PCB 뒷면에는 RP2040-tiny와 핀 헤더, 두 부품만 있으므로 직접 납땜할 수 있습니다.
납땜 작업의 자세한 내용은 위 동영상을 참조하세요.

3D 인클로저는 먼저 MINTIA 민트 케이스 뒷면의 외형을 따르도록 설계했습니다. 그리고 I2C 핀 헤더 포트용 구멍을 뚫었습니다. 그런 다음 PCB의 버튼 위치에 맞춰 구멍을 뚫었습니다.
JLC EDA 설계 소프트웨어에서는 PCB 레이아웃의 3D 모델도 내보낼 수 있으므로, 이 모델을 3D 인클로저 설계로 가져와 서로 잘 맞는지 확인할 수 있습니다.
3D 인클로저 설계의 자세한 내용은 위 동영상을 참조하세요.
3D 인클로저 STL 파일의 최종 버전은 Thingiverse에서 공유했습니다:
https://www.thingiverse.com/thing:7411628

STL 파일은 다음 주소에서 다운로드하세요: https://www.thingiverse.com/thing:7411628
직접 출력하거나 Thingiverse에서 3D 출력물을 주문할 수 있으며, JLC에서 투명 버전을 주문할 수도 있습니다.
3D 프린팅 및 조립의 자세한 내용은 위 동영상을 참조하세요.






투명 버전 또는 프레임만 있는 버전의 3D 인클로저를 사용하는 경우 PCB에 인쇄된 키 라벨을 볼 수 있습니다. 하지만 불투명한 3D 인클로저를 출력했다면 키 라벨을 직접 표시해야 합니다.
접착식 A4 라벨지에 인쇄한 후 잘라서 인클로저에 붙일 수 있습니다. 또는 마커펜으로 버튼에 키 라벨을 직접 쓸 수도 있고, 맞춤형 디자인의 UV DTF 전사 스티커를 주문할 수도 있습니다...

소스 코드는 GitHub에서 다운로드하세요:
https://github.com/moononournation/ProjectMINTIA
Arduino IDE에서 RP2040Keyboard/RP2040KeyboardUSB/RP2040KeyboardUSB.ino를 연 다음, 컴파일하여 RP2040-tiny에 업로드하세요.
업로드가 성공적으로 완료되면 새 USB 키보드 장치가 컴퓨터에 연결됩니다. 온라인 키보드 테스터를 사용해 작동 여부를 확인할 수 있습니다. 예를 들면 https://en.key-test.ru
자세한 내용은 위 동영상을 시청하세요.
USB Keyboard 프로그램은 더 많은 키 입력을 위해 몇 가지 Fn 매핑을 정의했습니다. 예를 들어 "fn" 키를 누른 상태에서 "1" 키를 누르면 "F1" 키로 인식됩니다.
원하는 대로 이 매핑을 변경할 수 있습니다. 예를 들어 fn+위쪽 키를 Page Up 키로 지정할 수 있습니다.

I2C Keyboard 소프트웨어는 아직 개발 중입니다. 현재도 통신 데이터 형식을 정하기 위해 고심하고 있습니다.
처음에 언급했듯이 I2C 키보드는 시장에서 흔하지 않으므로 표준 데이터 형식이 없습니다. 조사해 본 결과, 선택할 수 있는 방법은 다음 세 가지입니다.
현재 RP2040KeyboardI2C.ino 샘플 프로그램은 눌린 모든 키를 단순히 전송하지만, 아직 fn 키 매핑은 처리하지 않습니다. 장기적으로는 HID 표준을 충족하는 다른 버전이 있어야 하며, 그러면 빈티지 머신 에뮬레이터나 VNC 씬 클라이언트 같은 사용 사례에서 더 이식성이 높아질 것입니다.
이제 키보드 입력이 필요한 프로젝트를 개발할 수 있습니다. 예를 들어 빈티지 머신 에뮬레이터, VNC 씬 클라이언트, 대용량 저장 장치에서 재생할 노래 검색, 또는 간단한 WiFi 비밀번호 입력 등에 활용할 수 있습니다 ;>
참고:
키보드가 항상 연결되어 있지 않을 수 있으므로, 필요할 때 I2C 케이블로 연결하세요.

초기 키 매트릭스 개발 단계에서는 간단한 테스트 프로그램이 빠른 PoC에 도움이 됩니다. RP2040KeyboardTest.ino는 모든 행 및 열 핀을 정의하기만 하면 키의 눌림 및 해제 상태를 확인할 수 있는 간단한 프로그램입니다.
원문: https://www.instructables.com/Design-Tiny-Keyboard-for-Dev-Device/