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 회로도
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 되었다.