done_happyhacking.JPG : HAPPY Hacking pro 2 bluetooth  개조기 (1/4) (작성중)

HAPPY Hacking pro 2 bluetooth  개조기.

 

===========================================================

목차

1.  HHKB2를 개조에 장단점 및 필요한 부품들


2.  HHKB2에게 Arduino 및 RN-42 HID 연결하자.
    * HHKB2를 아두이노와 연결 방법
      1) HHKB2 열기
      2)전선 준비 및 HHKB pro2 상판 connector에 전선 연결하기.

    * RN-42 HID를 아두이노에 연결 하자.
      1) RN-42 HID 에 대해서..

    * HHKB pro 2   <--> Arduino mini por   <--> RN-42 HID 연결회로도


3.  about Arduino Programming 
    * Key map 설정은 각자 입맛에 맞게….



4.  HHKB2 조립 및 완성하기
    * 각 모듈 배치 및 전원회로 해결하기 
    * 디버깅 및 테스트

===========================================================



개조에 따라 HHKB2의 고장은 본인의 책임을 알려 드립니다.




 




 

이번 회에서는 HHKB2에 아두이노 및 RN-42 HID를 연결하는 방법을 사진과 함께 설명을 드리겠습니다.

 

 

준비물

 

HHKB2 프로

아두이노 미니 프로

RN-42 HID

전선, 점퍼선, LAN 케이블

스트리퍼 (전선 피복 벗기는 용도)



 

 

 

 

 

 

  1. HHKB2 열기

 

준비물을 챙겨두시고요. 이제 HHKB  + 드라이버로 열면 됩니다.

happy_back.jpg : HAPPY Hacking pro 2 bluetooth  개조기 (1/4) (작성중)

="">

 

위에 빨강 네모 부분을 +자 드라이버로 풀어 줍니다.  그리고  뒷부분에서부터 들어 올려 주시면 살포시 해피해킹이 열립니다.

손 떨 필요 없이 과감하게 열어주면 되요.

 

!!!

열었다면 아래 A에 연결된 케이블을 뽑아서 키보드가 2개로 쪼개 지도록 만듭니다.

 

happyhacking_inside.jpg : HAPPY Hacking pro 2 bluetooth  개조기 (1/4) (작성중)

="">

< 사진 1  : 해피해킹 프로 상판 / 하판 모습 >

 

위에 모습은 해피해킹을 반으로 열어 놓은 사진입니다.   

 

HHKB는 두개의 파트로 구성이 됩니다.

컨트롤러 PCB (하판) / 키 스위치 (상판)

 

상판 : 실제 키 스위치가 포함된  부분 입니다.

하판 : HHKB pro 2의 컨트롤러가  부분 입니다.

      키를 위한 컨트롤러와 USB Host  USB port 이 있습니다.

 

 (아두이노가 하판의 HHKB pro 2의 컨트롤러를 대신 해주는 역할을 하게 됩니다. ^^)

 


HHKB 2의 자세한 정보는 git hub에 tmk님을 참고한 내용 입니다. 

(https://github.com/tmk)


Internal of HHKB pro 2
=====================
HHKB pro has MCU and some chips on separate two PCBs.
 
 
Controller PCB
--------------
    M38K07M4    Renesas MCU with USB function
                http://documentation.renesas.com/eng/products/mpumcu/rej03b0192_38k0ds.pdf
 
 
 
Keyswitch PCB
-------------
    HC4051      Analog Multiplexer: select a row line.
                http://www.alldatasheet.com/datasheet-pdf/pdf/203989/KODENSHI/KK74HC4051A.html
 
    LS145       BCD Decoder: select a column line.
                http://www.alldatasheet.com/datasheet-pdf/pdf/27373/TI/SN74LS145D.html
 
    BU9831      Non-volatile electronic potentiometer: for calibration?
                http://www.alldatasheet.com/datasheet-pdf/pdf/36387/ROHM/BU9831.html
 
    TP1683/4    Capacitive Sensing controller: no datasheet available.
 

 

 

위에 사진이 아래 다이어그램 처럼 연결이 되어져 있다고 합니다.

Matrix diagram:

 

             +-------------------------+-+-+-+-+-+-+-+     Vcc

             |bias control?            - - - - - - - -     ---

             |                  3.9K*8 R R R R R R R R      |

    +--------^+      +--------+        - - - - - - - -      | 

    |        2|      | HC4051 <0-------|-|-|-|-|-|-|-|--|R|-+

    |         |capa. |        <1-------|-|-|-|-|-|-|-|--|R|-+

    | TP1684  |sense |        <2-------|-|-|-|-|-|-|-|--|R|-+

    |       11<------|        <3-------|-|-|-|-|-|-|-|--|R|-+

    |         |      |        <4-------|-|-|-|-|-|-|-|--|R|-+

    |         |      |        <5-------|-|-|-|-|-|-|-|--|R|-+

    |         <-+    |        <6-------|-|-|-|-|-|-|-|--|R|-+

    |   1   4 | |    |        <7-------|-|-|-|-|-|-|-|--|R|-+

    +---V---^-+ |    +-^-^-^--+        0 1 2 3 4 5 6 7  33K*8

       KEY PREV |      A B C         +-----------------+

        |   | +-^----+ | | |         |      LS145      |

    Vcc |   | |BU9831| | | |         +-^--^--^--^------+

    --- |   | +------+ | | |          A  B  C  D   +------+

     |  |   |          | | |           |  |  |  |   |      |

    1-3 4   5          6 7 8           9 10 11 12 13-15    |

    +--------------------------------------------------+   |

    |                connector                              |  ---

    +--------------------------------------------------+  GND

                    to controller

 

 

그리고 가장 중요한 핀 정보 입니다.

위에 A 부분을 보면 1 ~ 13핀으로 이루어져 있고 각 핀의 의미는 아래와 같습니다.

그리고 HHKB2의 핀은   아두이노 미니 프로에 다음 PIN 1:1 연결이 가능 합니다.

크게 뜯거나 와이어링을 하지 않아도 쉽게 아두이노와 연결이 됩니다.

 

 

    Keyswitch connector
 

    pro2           Description                               Arduino mini pro pins

    -------------------------------------------------------------

    1   Vcc(5V)                                                 5V

    2   Vcc(5V)                                                 5V

 

    3   TP1684     KEY: Low(0) when key pressed                 9 input(with pullup)

    4   TP1684     KEY_PREV: make threshold                    

    5   HC4051     A(bit0)\                                     2 output

    6   HC4051     B(bit1) > select row(0 to 7)                 3 output

    7   HC4051     C(bit2)/                                     4 output

 

    8   LS145      A(bit0)\                                     5 output

    9   LS145      B(bit1) > select column(0 to 7)              6 output

    10  LS145     C(bit2)/                                      7 output

    11  LS145     D(enable) Low(0) enables selected column      8 output

 

    12   GND                                                    GND

    13   GND                                                    GND


HHKB에 4 pin 출력을 사용하지 않았습니다.


 HHKB에 567, 891011 핀을 통해서   키보드의 row, column으로 어떤 키가 눌렸는지를 전기적으로 알수 있습니다. 

이 신호들을 아두이노에서 읽어서  PC쪽에서 알수 있는 Key code 값으로 변환 후 bluetooth로 전송하면

페어링된 PC 에서 키가 눌린 것 처럼 동작을 하게 됩니다.  

 

 

 

아두이노 미니 프로는 어떻게 생겼을 까요 ?

아래 아두이노에 핀 번호들이 보이죠 ?   pro에 핀들이 아래로 연결이 1:1로 연결 하게 됩니다.

 arduino_pin.jpg : HAPPY Hacking pro 2 bluetooth  개조기 (1/4) (작성중)




="">

우리는 땜질 싫어하고, HHKB가 상하는 것을 원치 않습니다.

따라서 HHKB2 단 한 개의 전선도 자르지 않을 것입니다.

 

 

  1. 전선 준비 및 HHKB pro2 상판의 connector 연결 하기.

위에 준비한 굴러 다니는 LAN 선을 4cm 폭으로 2개를 잘라주세요.

그리고  LAN 케이블에 6가닥을 분리해 냅니다.  그럼 총 12가닥의 전선이 나오게 되는데요. 

이 전선들을 스트리퍼로 양쪽을  끝을 잘 벗겨 냅니다.

 

이렇게 만들어낸 전선을 아래 상판의 커넥터에 살포기 꼽아 줍니다.

LAN 케이블이 HHKB  암놈 커넥터에 쏙 들어갑니다.


HHKBpro1_pin.jpg : HAPPY Hacking pro 2 bluetooth  개조기 (1/4) (작성중)

="">

<사진 2 : HHKB pro 1의 상판 커넥터 모양>


사진 2HHKB pro의 커넥터 모양입니다. 2에 비해서 2개의 핀이  많아 15개의 pin을 가지네요.


전선과 연결은 아래와 같이 합니다.

lan_to_happy.jpg : HAPPY Hacking pro 2 bluetooth  개조기 (1/4) (작성중)

< 사진 3: 분리한 HHKB pro 2  상판에 connectorlan 선 가닥을 연결한 사진 >

 

위에 커넥터에  속 들어가도록 랜 가닥선을 밀어 주면 됩니다. 

왜 LAN 케이블이냐!! 

 connector에 암놈 구멍이 작아서  큰 핀을 연결하게 되면  connector 부분이  헐거져 나중에  접지불량이 발생할까봐 

얇은 랜선 가닥선을 이용했습니다.

(튜닝의 끝은 순정이라고 하지 않았습니까!!!!) 





3. RN-42 HID 모듈에 대해서...


데이터 시트 : https://www.sparkfun.com/datasheets/Wireless/Bluetooth/rn-42-ds.pdf


RN-42 HID를 통해 아두이노로 입력받은 키보드 값을 bluetooth로 전송하기 위해서 필요한 모듈입니다.

호스트 PC에 따로 드라이버 설치를 하지 않기 위해서 HID profile을 사용하게 됩니다.



간단하게 핀을 보도록 하겠습니다.  

3.jpg : HAPPY Hacking pro 2 bluetooth  개조기 (2/4) (작성중)




rn_42_pin.jpg : HAPPY Hacking pro 2 bluetooth  개조기 (2/4) (작성중)

<그림 4  RN-42  HID >



우리가 사용할 PIN 정보

=================================================

핀번호

13 pin       :  UART_RX   <---> 아두이노에 TX pin과 시리얼 통신으로 아두이노에서 던저 주는, 키보드 값을 받는 PIN 입니다.

14 pin        : 사용하지 않았습니다.

29 pin       :  gnd      

11 pin       :  VCC

34 pin       :  PIO11  중요한 PIN이에요.


rn-42 HID  (버전)에서  GPIO11 (34번 핀을)에  High (3.3v)를 주게 되면 자동으로 HID 모드로 실행이된다고 합니다. 

그렇지 않으면 보통은 명령어로 변경해야 한답니다.


제가 선택한 방법은 아래 2번째 방법으로  34번핀에 3.3v를 주었습니다.




아래는 그냥 참고 내용 입니다.  

(https://www.sparkfun.com/products/10938)


영어가 짧아 원하는 것만 보였습니다.


Gav.


Just a heads up. I recently got the ‘HID611’ version of this board, and it needs some changes.

From p3 of the manual it says: “In firmware version 6.10 and higher, the SPP profile is enabled by default” (http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Wireless/Bluetooth/RN-HID-User%20Guide-1.1r.pdf) Which is a bummer since people buy this module specifically to use the firmware as a keyboard, not a serial port.


So you can either set it back to HID mode two ways:

1) using serial ‘$$$’ and entering CMD mode, and send some further commands to change to HID and reboot.

This needs to be done each powerup, and is tricky as it’ll only enter CMD mode within a minute of the bluesmirf being powered up. I.e. if you use an arduino, which gets reset, the bluesmirf ignores config requests, and send those strings to your keyboard instead, which is either messy or disastrous depending on your application.


2) Wire from GPIO11 to high.

This forced HID on startup, and you don’t need to do any software stuff. Downside is that the board has no breakout for it and you need to solder the tiny wire: http://imgur.com/wLfY7T7


Hope this helps, Gav.

  • I also got the ‘HID611’, when you set hid mode via commands it is persisted between powerups. You dont need to wire anything.

 



여기서 납땜 포인트 !!!


RN-42 HID 핀에 와이어링을 하는게 조금 짜증이  납니다.

일반 전선으로 하지 말고 꼭 와이어링 전선을 이용하세요.



그럼 4에 빨간 박스에 대해서는 최소 10cm정도의 선으로, 선을 연결 해주세요.

추후 키보드 내, 모듈 배치를 위해서 입니다.




HID키보드는 키 정보를  어떻게  연결된 컴퓨터 또 태블릿으로 넘어 갈까요 ?

HID Report라는 것을 통해서 전달이 됩니다. 그리고  아래와 같은 모습을 하고 있습니다.



 8byte 의 패킷으로 구성이 되어 있습니다. 


hid report.jpg : (작성중 3차 업데이트) HAPPY Hacking pro 2 bluetooth  개조기 (2/4)


|       0        |       1        |     2 ~ 7     |
|----------------|----------------|---------------|
| modifier keys  | reseverd(0x00) | keycode 1 ~ 6 |
|----------------|----------------|---------------|

0     : 첫 바이트는 키의 modifier의 정보를 넣어주면 됩니다.

1     : 0x00 으로 예약된 값입니다. 


2~7 : keycode 값을 넣어주게 됩니다.

이 값은 첨부해 드린  translate.pdf 에서 확인 할 수 있습니다.


실제 값들이 어떻게 만들어지는지는 아두이노 프로그래밍 때, HID Packet을 만들어 보겠습니다.


HHKB에서 눌린 키를 아두이노에서 키를 스캔 하고,

정보를 기반으로 호스트(컴퓨터, 태블릿, 등등)으로 보내 주게 됩니다.






HHKB pro 2   <--> Arduino mini por   <--> RN-42 HID 연결회로도

** 백문이 불여일견 

주구절절 이야기 보다 선을 어떻게 연결 하는지, 대략적인 회로를 그려 보겠습니다. 

이거면 선 연결 하는데 문제가 없을 것 같아요.



cir.jpg : (작성중 3차 업데이트) HAPPY Hacking pro 2 bluetooth  개조기 (2/4)


<그림 5    HHKB pro 2   <--> Arduino mini por   <--> RN-42 HID 연결회로도>

 


초록색 박스 부분은 전자회로 입니다. 옵의 법칙에 따라 5v 아두이노 출력 신호를 RN-42 HID가 입력으로 받기 위해

3.3V로 변경 해주는 부분입니다. 


전원 파트 강좌때 신경써서 설명 해드리겠습니다.



2편 강좌는 여기에서 마치고....

3편은 프로그래밍이라서  편안한 마음으로 진도를 좀 빼볼까 합니다. 



profile

유령회원