Wireless GH60 Satan Keyboard Project


키보드를 많이 사용하는 직업이다 보니, 손에 무리가 덜 가는 내게 맞는 키보드를 사용하였다. 처음 작은 기계식 키보드로 시작해서 Layout 이 특이한 HHKB Pro2 을 지금까지 사용하고 있다. 그런데 이게 불행의 시작인데, 집에서 사용할 키보드가 하나 더 필요한데 HHKB layout 키보드는 발매되지 않고, HHKB 는 일본 직구로 너무도 비싸게 살 수 밖에 없었다. 또한, 늘 예전에 사용하던 무선 키보드의 편리함을 원했는데 기계식 키보드는 무선 제품이 거의 없었다. 따라서 이 프로젝트는 시작 되었다.


사용하던 HHKB Pro2


무선으로 변경한 Wireless GH60-Satan 외관


내장하지 않고 그냥 붙여서 사용하고 있는 800mA 오래된 배터리와 스위치


수정한 내부 회로

좌측 위: charger, 좌측 아래: USB and battery power MUX, 추측 위: ATMEGA32U4, 우측 가운데: Wakeup circuit, 우측 아래: Wireless module nRF24L01+



컴퓨터 수신 동글

좌측에서 개발한 이후, 우측과 같은 Logitech 사의 동글에 이식할 수 있다. Logitech 사의 동글이 동일한 nRF24LU1+ 칩을 사용하였다.



개발에 사용한 주요 부품

  • Gh60-Satan 조립 키트: AliExpress 에서 구입할 수 있다. GH60 Satan PCB, 케이스, Switch 등 모두 포함된 제품을 사면 편리하다. 만원 정도면 조립 요청을 할 수도 있다.
  • nRF24L01+ module: AliExpress 에서 구입할 수 있고 매우 저렴하며, SPI interface 통해 무선통신을 할 수 있다.
  • Charger module: TP4056 chip 을 사용한 모듈을 국내에서 구입해서 잘라서 사용. 물론 AliExpress 가 더 싸다.
  • USB and Battery power MUX: 3.3V LDO, FET, Diode, resister 등으로 제작
  • All key wake-up circuit: Diode, resister 으로 제작
  • 기타: 전선, 납땝, 애나멜 선 등등 회로 쟁이 기술은 필요하다.

Source codes 와 GH60 회로도
  • Keyboard source code: https://github.com/jangson/tmk_keyboard_custom
  • USB receiver source code: https://github.com/jangson/crazyradio-firmware
  • GH60 회로도: https://github.com/komar007/gh60
    • KiCad 을 사용해서 열어볼 수 있다. 무료 KiCad 는 PCB 까지 제작할 수 있는 툴로 개인 용도로 매우 좋다.
    • 중국에서 제작하는 GH60 Satan 회로도는 구할 수 없었다. Source code 와 PCB 을 참조하여 알 수 있는데, 주요 수정 사항은, Caps Lock LED 는 동일하고, 나머지 키 마다 장착된 LED 는 PB6 PWM 을 통해 밝기 제어를 하게 되어있고, 이로인해 COLs GPIO 가 GH60 과 조금 다르다. PF 을 사용하는 확장을 위한 포트 등이 없는 것 같다. 결론적으로 PWM LED 제어와 COLs 매핑이 좀 바뀐 것 이외는 거의 동일하게 사용할 수 있다.

Modified circuits of GH60 satan

    * LED is not controlled by SW and disabled LED backlight circuits
    * nRF24L+ connected
        * PB3: MISO
        * PB2: MOSI
        * PB1: SCK
        * PF4: CE
        * PF5: CSN
    * UART DEBUG
        * PF6: TXD
    * Wakeup from standby by all keys
        * PF7: pull-down control of row1~5
        * Connected PF7 thru register 47K to cathod of diodes from row1, 2, 3, 4, 5 (int0, 1, 2, 3 and 6)
        * Pins col3(PE6) and row5(PD5) exchanged for wake up by row5. Row5 is connected to int6.
        * Before entering to suspend, all rows pull-down and all cols output high
    * Battery powered circuit
        * ATMEGA32U4 runs with 3.3V and 8Mhz
        * Added a battery and a charger
        * Added power mux circuit USB and battery power
    * Other
        * Caps Lock led moved from PB2(MOSI) to PB6(LED pwm backlight of all LEDs)



제작 후기

제한된 부품이나 장비로 오랜 기간 조금씩 개발하다가 보니 여러 가지 문제점에 부딛혔었는데 잘 기억이 나지 않는다. 생각 나는 데로 조금 적어 본다.

  • USB 와 battery 전원 공용 사용 문제
    • 처음 5V 로 구동하는 원 회로를 기본으로하고 nRF24 통신 모듈 만 3.3V 을 사용하였다. Battery 구동 시 전력 소모면에서 많은 차이가 있어서 3.3V 로 변경되었다. 개발 중에는 level 변환 등 다양한 이유가 있었다.
    • 전체 시스템은 3.3V 을 사용하고, USB 와 연결되는 CPU 의 UVcc, VBus 핀만 5V 을 사용한다. USB 동작 시만 필요해서 문제점은 발생하지 않았다. 다리 들고 납땜 스킬은 필수다.
  • Battery 사용으로 저전력 설계 문제
    • CPU crystal 은 16M 밖엔 없어서 그냥 사용하고, 내부적으로는 8M clock 을 사용한다. 동작 시 전류 차이가 좀 커서 필수 적이다.
    • Key 을 누르지 않을 경우 바로 standby 모드로 진입한다. 또, 어떤 키가 눌렸을 경우에도 바로 다시 wake up 해서 key 을 처리해야 한다. 이후 1초 이상 사용이 없을 경우도 즉시 standby mode 로 진입니다. Standby mode 진입 시 490uA 정도 소모하였고, 800mA 배터리 사용 시 2주 동안 아직도 충전 없이 사용하고 있는 중이다.
    • 3.3V LDO 는 quiescent current 가 작은 chip 사용을 해야 한다. 2.8V 이나 3.0V 사용 시 전류가 더 줄어 든다. CPU 공급 전압을 3.3V 사용할 경우 datasheet 상 필수적으로 CPU 동작 클럭은 8M 로 낮추어야 한다.
    • Power down 모드는 fuse 등을 신경 써야 하는 지 잘 동작하지 않고 테스트 시 전류를 더 소모해서 포기 하였다.
  • Power save 위한 모든 키 wake up 문제
    • 회로 수정이 필요하다. Row5 의 경우 standby 모드에서 wake up 하게 할 수 없는 pin 이다. 따라서  COL3 가 사용하는 PE6(INT6) 핀과 exchange 되었다.




'DIY keyboard' 카테고리의 다른 글

Wireless GH60 Satan Keyboard Project #2  (0) 2016.11.06
Posted by 장손1
,