HAPPY Hacking pro2 bluetooth 개조기 (3/4 )

done_happyhacking.JPG : (수정중 -_-;; HAPPY Hacking pro2 bluetooth 개조기 (3/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의 고장은 본인의 책임을 알려 드립니다.
 

 

 

 

 

 

 

3회 준비물

 

아두이노 미니 프로

아두이노 개발환경

 

 

 

 

 

용어설명 :

 

펌웨어 :

 

 

 


프로그래밍에 대한 모든 설명은 하지 않겠습니다.

딱!! 해피해킹의 키맵을 변경하는 정도로만 이야기 드리겠습니다.



 

 

1. 아두이노 개발 환경 구성

 

개발환경 및 펌웨어 다운로드 방법은 아래 링크를 통해서 익숙해 지시면 됩니다.

링크 내용을 다 알 필요는 없지만, 최소한 아두이노 미니 프로에 펌웨어를 올리는 방법만 알아 두시면 됩니다.

 

궁금한 점은 언제든지 질문 주세면 아는 범위에서 답변 드리겠습니다.

 

 

http://blog.daum.net/junebug11/10

 

http://blog.naver.com/PostView.nhn?blogId=avredu&logNo=140205996484

 

 

 

2. 아두이노 해피해킹 펌웨어 수정.

 

제가 기본적으로 사용하고 있는 펌웨어는  강좌 1편에도 링크 걸어 드린

Addsict (http://addsict.hatenablog.com/) 님이 github에 올려 놓은 펌웨어를 사용했습니다.

 

펌웨어 출처 (아래 소스는 에러 없이 쓸수 있는  스입니다. )

https://github.com/addsict/YetAnotherHHKBController/blob/master/hhkb/hhkb.ino


 

      정 사항이 있으면 git hub를 통해서 업데이트가 되니 가끔? 확인 해보는 것도 좋을 것 같습니다.

     

      펌웨어 링크를 열어서 그냥 훓터 봐 주세요.


 

 

3. 아두이노 프로그램 실행 순서

 

       스케치 (IDE)로 프로그래밍을 하게 되면, setup()함수가 불리고, 반복적인 일을 처리하는 loop()가 자동적으로 불리게 됩니다
       Setup
은 아두이노가 켜지면 한번 불리게 되고,  loop는 반복을 하게 됩니다.

 

 

       아래 기본 함수를 기반으로 아두이노 프로그램이 실행되게 됩니다.

 

     void setup() {

     }

        void loop() {


        }

 

 

4. 아두이노에 핀정보 설정

 

         아래 핀은 실제 물리적으로 연결된 핀 정보입니다. 

 

 

/* Arduino Pins */

int muxRowControlPin[] = {2, 3, 4};

int muxColControlPin[] = {5, 6, 7};

int enableColPin = 8;

int keyReadPin = 9;

 


아래 핀정보와  일치되는 것을 알수 있습니다.

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

    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

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





5. Happy Hacking Key 배열

프로그램에서  일반 사용자가 눈 여겨 보야 할 곳은 KEYMAP_NORMAL_MODE KEYMAP_FN_MODE 배열 입니다.

개의 배열은 동일한 크기를 가집니다.

 

 

KEYMAP_NORMAL_MODE FN키가 눌리지 않았을 키가 눌리는 위치에 값을 의미 합니다.

(큰변화 없이 그냥 쓰도록 하겠습니다.)

 

 

KEYMAP_FN_MODE FN 눌려졌을 때의 어떤 값을 선택할지에 대한 배열입니다.

배열에 값을 추가 / 삭제 하여 원하는 FN 조합으로 원하는 키보드 동작을 있습니다.

 

 

 

키 배열에서 보이는 UNUSED 아무런 동작이 없는 값입니다.

이런경우 OS 맞는 키가 동작하게 됩니다.

 

 

따라서,  위에 두 가지 배열에 값을 (16진수) 변경하면 원하는 키보드 값으로 쓸수 있습니다.


KEYMAP_NORMAL_MODE 0, 0 숫자 2 값으로 0x1F 가지게 됩니다.

0x1f 지난번 첨부 드린 코드표 (transrate.pdf)   보면 2 @   0x1F 값을 가지게 되고,

shift 의해서 구분이 됩니다.

 

 

 

https://github.com/addsict/YetAnotherHHKBController/blob/master/hhkb/hhkb.ino

< 전체 코드 링크 : 스케치에 전체를 복사하여 붙여넣고 빌드를 할 수 있습니다. >

 


 

/* KEYMAP KEY TO HID KEYCODE*/

uint8_t KEYMAP_NORMAL_MODE[MAX_ROWS][MAX_COLS] = {

    {0x1F/* 2 */, 0x14/* q */,   0x1A/* w */,    0x16/* s */,       0x04/* a */,       0x1D/* z */,       0x1B/* x */,     0x06/* c */},

    {0x20/* 3 */, 0x21/* 4 */,   0x15/* r */,    0x08/* e */,       0x07/* d */,       0x09/* f */,       0x19/* v */,     0x05/* b */},

    {0x22/* 5 */, 0x23/* 6 */,   0x1C/* y */,    0x17/* t */,       0x0A/* g */,       0x0B/* h */,       0x11/* n */,     UNUSED},

    {0x1E/* 1 */, 0x29/*ESC*/, 0x2B/* TAB */,   0xE0/* CONTROL*/, 0xE1/* L-SHIFT*/, 0xE2/* L-Alt */,   0xE3/* L-GUI */,   0x2C/*SPACE */},

    {0x24/* 7 */, 0x25/* 8 */,   0x18/* u */,  0x0C/* i */,        0x0E/* k */,          0x0D/* j */,    0x10/* m */,     UNUSED},

    {0x31/* \*/, 0x35 /* `*/,  0x2A/* DELETE */, 0x28/* RETURN */, UNUSED/* Fn */, 0xE5/* R-SHIFT */, 0xE6/* R-Alt */,    0xE7/* R-GUI */},

    {0x26/* 9 */, 0x27/* 0 */,   0x12/* o */,  0x13/* p */,       0x33/* ; */,       0x0F/* l */,       0x36/* , */,     UNUSED},

    {0x2D/* - */, 0x2E/* = */,   0x30/* ] */,  0x2F/* [ */,       0x34/* ' */,       0x38/* / */,       0x37/* . */,     UNUSED}

};

< KEYMAP_NORMAL_MODE 키보드  맵 >

 

 

그럼 아래 FN 대한 키맵을 입맛에 맛게 고쳐 보겠습니다.

 

transrate.pdf를 보게 되면  volum dn / up, mute, 값이 있는데 이것을 FN키가 눌린 상태에서

a , s ,d 키를 누르면,  기능이 수행 되도록 FN의 키맵을 수정 해보겠습니다.

 

우선,

  1. KEYMAP_NORMAL_MODE에서  a, s, d   위치를 찾습니다.
  2. 그리고 volum dn / up, mute, Eject에 대한 값을 transrate.pdf값을 찾습니다.
    Keyboard volume up   : 0x80
    Keyboard volume down  : 0x81
    Keyboard mute         : 0x7F
  3.  KEYMAP_FN_MODE 동일한 위치에 위에 값으로 변경 해줍니다. 값으로 변경 해줍니다.
    아래 코드를 보니 a, s, d 이미 leftArrow, downArrow, rightArrow 맵핑 시켜놔 있네요.
    그값을 지우고  위에 볼륨 값으로 변경 합니다.

 



 

/* KEYMAP KEY TO HID KEYCODE(Function Mode)*/

uint8_t KEYMAP_FN_MODE[MAX_ROWS][MAX_COLS] = {

    {0x3B/* F2 */,  UNUSED,        0x52/* UpArrow */,   0x51/* DownArrow */,  0x50/* LeftArrow */,  UNUSED, UNUSED, UNUSED},

    {0x3C/* F3 */,  0x3D/* F4 */,  UNUSED,              UNUSED,               0x4F/* RightArrow */, UNUSED, UNUSED, UNUSED},

    {0x3E/* F5 */,  0x3F/* F6 */,  UNUSED,              UNUSED,               UNUSED,               UNUSED, UNUSED, UNUSED},

    {0x3A/* F1 */,  UNUSED,        UNUSED,              UNUSED,               UNUSED,               UNUSED, UNUSED, UNUSED},

    {0x40/* F7 */,  0x41/* F8 */,  UNUSED,              UNUSED,               UNUSED,               UNUSED, UNUSED, UNUSED},

    {UNUSED,        UNUSED,        UNUSED,              UNUSED,               UNUSED,               UNUSED, UNUSED, UNUSED},

    {0x42/* F9 */,  0x43/* F10 */, UNUSED,              UNUSED,               UNUSED,               UNUSED, UNUSED, UNUSED},

    {0x44/* F11 */, 0x45/* F12 */, UNUSED,              UNUSED,               UNUSED,               UNUSED, UNUSED, UNUSED}

};


< 수정전 >

 

 

 

 

 KEYMAP KEY TO HID KEYCODE(Function Mode)*/

uint8_t KEYMAP_FN_MODE[MAX_ROWS][MAX_COLS] = {

    {0x3B/* F2 */,  UNUSED,        UNUSED,               0x80/* Vol up*/,    0x81/* Vol Down*/,  UNUSED, UNUSED, UNUSED},

    {0x3C/* F3 */,  0x3D/* F4 */,  UNUSED,              UNUSED,               0x7F /* Mute */, UNUSED, UNUSED, UNUSED},

    {0x3E/* F5 */,  0x3F/* F6 */,  UNUSED,              UNUSED,               UNUSED,               UNUSED, UNUSED, UNUSED},

    {0x3A/* F1 */,  UNUSED,        UNUSED,              UNUSED,               UNUSED,               UNUSED, UNUSED, UNUSED},

    {0x40/* F7 */,  0x41/* F8 */,  UNUSED,              UNUSED,               UNUSED,               UNUSED, UNUSED, UNUSED},

    {UNUSED,        UNUSED,        UNUSED,              UNUSED,               UNUSED,               UNUSED, UNUSED, UNUSED},

    {0x42/* F9 */,  0x43/* F10 */, UNUSED,              UNUSED,               UNUSED,               UNUSED, UNUSED, UNUSED},

    {0x44/* F11 */, 0x45/* F12 */, UNUSED,              UNUSED,               UNUSED,               UNUSED, UNUSED, UNUSED}

};

< 수정한 키맵 >

 

 

감이 오십니까 ?   FN키를 본인이 입맛에 맞게 구성할 있게 되었습니다.

 

이제 링크를 통해서 배운 펌웨어를 컴파일하여 아두이노 미니에 전송하면 사용자 맵을 구성이 완료가 됩니다.

 

 


참고로 제가 사용하는 캡은 아래와 같습니다.

윈도우에서 한글 변환을  R-GUI 키로

윈도우 키를 오른쪽 alt키로 변경 하였습니다.


FN이 눌린 상태에서 space enter 등등등 동시에 눌리도록 약간의 수정을 하였습니다.

/* KEYMAP KEY TO HID KEYCODE*/

uint8_t KEYMAP_NORMAL_MODE[MAX_ROWS][MAX_COLS] = {

    {0x1F/* 2 */, 0x14/* q */,   0x1A/* w */,      0x16/* s */,       0x04/* a */,       0x1D/* z */,       0x1B/* x */,     0x06/* c */},

    {0x20/* 3 */, 0x21/* 4 */,   0x15/* r */,      0x08/* e */,       0x07/* d */,       0x09/* f */,       0x19/* v */,     0x05/* b */},

    {0x22/* 5 */, 0x23/* 6 */,   0x1C/* y */,      0x17/* t */,       0x0A/* g */,       0x0B/* h */,       0x11/* n */,     UNUSED},

    {0x1E/* 1 */, 0x29/* ESC */, 0x2B/* TAB */,    0xE0/* CONTROL */, 0xE1/*L-SHIFT*/, 0xE2/* L-Alt */,   0xE3 /*L-GUI*/, 0x2C/ *SPACE */},

    {0x24/* 7 */, 0x25/* 8 */,   0x18/* u */,      0x0C/* i */,       0x0E/* k */,       0x0D/* j */,       0x10/* m */,     UNUSED},

    {0x31/*\*/, 0x35 /*`*/,  0x2A/*DELETE*/, 0x28/*RETURN*/,  UNUSED/*Fn*/, 0xE5/*R-SHIFT*/, 0xE7 /*0xE6 R-Alt*/, 0xE6/*0xE7 R-GUI */},

    {0x26/* 9 */, 0x27/* 0 */,   0x12/* o */,      0x13/* p */,       0x33/* ; */,       0x0F/* l */,       0x36/* , */,     UNUSED},

    {0x2D/* - */, 0x2E/* = */,   0x30/* ] */,      0x2F/* [ */,       0x34/* ' */,       0x38/* / */,       0x37/* . */,     UNUSED}

};

 

 

 

/* KEYMAP KEY TO HID KEYCODE(Function Mode)*/

uint8_t KEYMAP_FN_MODE[MAX_ROWS][MAX_COLS] = {

    {0x3B/* F2 */,  UNUSED,        UNUSED/* Up */,    0x80/* Down */, 0x81/* Left */,    UNUSED,           UNUSED,           UNUSED},

    {0x3C/* F3 */,  0x3D/* F4 */,  UNUSED,            UNUSED,         0x7F/* Right */,  UNUSED,            UNUSED,           UNUSED},

    {0x3E/* F5 */,  0x3F/* F6 */,  UNUSED,            UNUSED,         UNUSED,            UNUSED,           UNUSED,           UNUSED},

    {0x3A/* F1 */,  UNUSED,        0x39 /*Casp*/,     UNUSED,         UNUSED,            UNUSED,           UNUSED,           0x2C},

    {0x40/* F7 */,  0x41/* F8 */,  UNUSED,            0x46,           0x4A,              UNUSED,           UNUSED,           UNUSED},

    {0x49,          0x4C,          0x2A/* DELETE */,  0x28,           UNUSED,            UNUSED,           UNUSED,           UNUSED},

    {0x42/* F9 */,  0x43/* F10 */, 0x47 /*scrLock*/,  0x48,           0x50,              0x4B,             0x4D,             UNUSED},

    {0x44/* F11 */, 0x45/* F12 */, UNUSED,            0x52,           0x4F,              0x51,             0x4E,             UNUSED}

 

}; 







아두이노에서 RN-42로 눌려진 키보드 값을 보낼때는 아래 와 같이 serial.write로 만들어 보내주면 됩니다.


    //Sends a raw report for a keyboard HID

    Serial.write(0xFD);        // Raw Report Mode
    Serial.write(0x09);        // Length
    Serial.write(0x01);        // Descriptor 0x01=Keyboard

    // send key codes(8 bytes all)
    Serial.write(modifiers);   // modifier keys    
    Serial.write(0x00, 1);     // reserved
    Serial.write(keycode0);    // keycode0
    Serial.write(keycode1);    // keycode1
    Serial.write(keycode2);    // keycode2
    Serial.write(keycode3);    // keycode3
    Serial.write(keycode4);    // keycode4
    Serial.write(keycode5);    // keycode5



프로그래밍 관련 업데이트는 추후에도 계속 하겠습니다.

ㅜㅜ;;; 급 마무리...


 


첨부파일 (2)

댓글 74
행인09 2014-03-05 16:58

딱히 해피는 없지만 기다리고 있었습니다.


소스는 짤려서 github 에서..

으르중이 2014-03-05 19:49

감사합니다.

업데이트 목 빠지게 기다리고 있었습니다..

박병규(76) 2014-03-05 20:18
잘 보고 있습니다~
강선영 2014-03-05 21:04

글  편집이 더 어렵네요 ㅜㅜ


강선영 2014-03-05 21:04

허접한 강좌를 기다려주시니 ㅜㅜ

죄송스럽네요.


게으름 피우지 말아야겠어요.



강선영 2014-03-05 21:05

산만한 강좌를  읽어주시니 감사 드립니다.


박병규(76) 2014-03-06 00:18
그런데 왜! USB to Bluetooth 안쓰신거에요????
강선영 2014-03-06 11:51

USB to bluetooth 를 사용하려면, HHKB 기본 컨트롤러를 그대로 이용해야 하는데요.


그러기에는  HHKB 내부에 공간이 나오지 않습니다.




박병규(76) 2014-03-06 22:35
그렀군요! 안에다 집어 넣으시려는 거군요~
박병규(76) 2014-03-06 22:35
에이스미노 2014-03-07 01:37

굿

 

에이스미노 2014-03-07 01:37

굿

 

muggs 2014-03-07 17:24

대단하십니다.와.......

MoEn 2014-03-08 16:18

우와 이건 정말 대단하네요!!

강한량 2014-03-09 08:47

매회 보면서 대리만족을 느끼는중... 저도 언젠가 용기내어 제 해피를 뜯어보는 날이..

과학칩 2014-03-09 17:58

진짜 대단하세요..

흑백을삼킨공 2014-03-09 23:59
능력자분이시다..
JoYoungJun 2014-03-11 06:55
우와...대단하시네요!!
jTango 2014-03-13 01:25

이거 보니까 좀만 더 조작하시면 왼쪽에 펑션키 하나 더 놓으셔도 되겠네요.

재밌게 읽고 있습니다. 고맙습니다.

그런데 저 위에 코드는 다 C 언어죠?

강선영 2014-03-13 22:00

거의  C에 가깝습니다.


그리고... 왼쪽 L-GUI키도 fn키로 맵핑 해뒀습니다. ^^


sylar 2014-03-13 23:15

와우.. 작년 6월에 구상중이라고 글만 올리구선... 바쁘다는 핑계로 작업 하다 말았었는데...멋지십니다!!!

혹시 DC step up module 어떤거 사용 하셨는지 알 수있을까요??

진중하게 2014-03-14 11:50

대박이네여..

강선영 2014-03-14 17:38

저도  DC Step up module을 부품 사다가 만들거나,  모듈을 써야 하나 생각하다...


가지고 있던, 

cosy mini bluetooth 키보드의 컨트롤러를 그냥 가져다 사용 했습니다.  BT 부분은 짤라 버리고요. 

cosy mini  BT 키보드는 내부 배터리가 3.7V ~ 4.1v정도였구요.


http://www.kbdmania.net/xe/files/attach/images/6138/221/152/008/68efed7b647c1dcfdb3ca92bc28b578f.png


내부  배터리 vcc로 흘려 아래쪽으로 넣어주고.....

http://www.kbdmania.net/xe/files/attach/images/6138/221/152/008/8ca02c995cf1764982a8edb6cd28dbb4.png


3V를 BT 모듈로

5V를 아두이노 raw pin에 주었고

아두이노에 vcc쪽에서 해피해킹  키스위치쪽으로 연결 해줬습니다.



기성품을 이용하여 결국!!!

충전도 되는 HHKB pro 2 BT가 되었습니다.


Sep 2014-03-14 18:18

요즘 블루투스 개조를 하나 하고 싶어서 이것저것 보고 있었는데 강좌 올려주셔서 감사합니다.

드라고나 2014-03-14 18:19

이거 대박이군요.. 저도 나중에 한대.. 부탁좀..ㅜㅜ

ribbon play 2014-03-14 21:21

워 능력이 대단하시네요...

sylar 2014-03-14 23:06

자세히는 아두이노에 쓰인 칩 데이터쉬트나 코시 전원 회로를 봐야 알겠지만.. 쓸데 없는 기능은 최대한 끄고 블루투스 모듈 전원 관리 및... 코시전원 회로에서 쓸모 없는 칩에 들어가는 전원을 끊거나 아예 떼내시면 최대한 파워 세이빙이 될거 같네요. 아두이노 와 블루투스 모듈 전원 관리만 해줘도 훌륭 할듯 합니다!!!


오늘부로 퇴직을 하여 주말부터 작업 해볼 생각인데 도움 주실거죠?^^ㅋㅋ


와우...아두이노에 들어간 ATMEL 칩 스펙을 보니...완전 저전력이네요....제가 원래 쓰려고 했던 칩보다 훨씬 저전력 이네요...제가 쓰려고 했던건 Cotex-M3 코어라...아두이노 까진 아니네요...아.. 아두이노 쓰는게 현명 할까요...ㅋㅋㅋ

김정기 2014-03-16 00:18

이런거 하시는 분들의 능력이 부럽....

강선영 2014-03-16 11:55

안녕하세요 답변이 늦었네용 ^^


전 아두이노 추천 해드려요.

아두이노 나름 저전력이에요 > <;;;;;  그리고 전원관리를 어느정도 할 수 있습니다. 



코지 컨틀로러에서  블루투스를 제거 했습니다.  

그리고 rn-42 HID에쪽 전원 관리는 보질 못 했어요 ㅜㅜ;;; 



제 활동 지역을 말씀 드리면 

회사는 강남역 근처,  사는 곳은 경기도 성남 쪽입니다. 


직접 뵙고 도움을 드릴 수 있는 방법?

(제가 도움을 받을지도 모르겠어요!!!)



덧..... 

320mAh  *2  완충해서  실사용 시간이 대략 10~ 12시간 정도 되네요.

배터리가 문제에요 ....ㅜㅜ



sylar 2014-03-16 13:16

네 뭐 전원 관리도 중요 하지만 배터리 사이즈도 중요 하죠. 사이즈가 크면 클수록 좋으니... 오픈마켓에서 배터리로 검색하면 적당한 사이즈의 배터리가 있을 겁니다... 제가 대충 쓸 수 있을 만한 배터리 사이즈를 찾아보니 604055 이하의 사이즈로 구매 하시는게 좋을 듯 합니다. 604055(두께,세로,가로) 해피해킹 오른쪽 지지대쪽 공간에 들어갈만한 사이즈 입니다. 제가 대충 보니까 이정도 사이즈면 1000mA 정도의 배터리 사이즈더군요!


그리고... 아두이노에 쓰인 칩 데이터북을 보니... 5V 16MHz면 전력을 어느정도 소모 하더라구요..ㅠㅠ 그런데 보니까 아두이노 에서는 클럭조정이 안되는거 같더라구요...(자세히는 확인 못했습니다만...) 그래서 일단 저는 다른 칩을 써서 구현을 해 볼 생각입니다...


그리고 코지 컨트롤러에 블루투스 말고도 메인컨트롤러 있지 않나요...? 그것도 제거를 해야 할텐데...칩을 떼기는 힘드시다면.. 칩쪽에 전원핀 근처 비드소자가 있을텐데..그걸 떼는 것도 방법 일 듯합니다..


(제가 말씀 드린 도움은.. 만나는 것까진 아니구.. 그냥 글 정도라도 해주십사 부탁드린거예요^^;)

강선영 2014-03-16 16:09

오른쪽은 아직 쓰지 않고 있는데요 그쪽에 추가 배터리를 넣어 보도록 하겠습니다.

앗 그리고  오늘 코지의 컨트롤러에 전원을 차단 시도 해봐야겠어요 ^^

쿨팁 주셔서 감사 합니다.


참 !!

클럭 조정과 관련하여 아래 링크를 참조 해보시면 될 것 같습니다.

One way to save power is to change the frequency the chip runs at :::

http://playground.arduino.cc/Main/PowerSaving#.UyVKEbmKDwp


그리고.... set_sleep_mode를  이용하는 방법있는 것 같습니다.

http://www.gammon.com.au/forum/?id=11497



얼마동안 키 입력이 없으면 SLEEP_MODE_PWR_DOWN 

키보드 키 눌림 인터럽트가 발생하는걸 가지고 아두이노를 깨우는 걸 만들어 보려고하는데...제가 소프트웨어 쟁이라서.... ..

스터디가 좀더 필요하네요.


그럼 좋은하루 되세요.


sylar 2014-03-16 17:53

ATmega328 datasheet를 보니 슬립 모드가 여러개 존재 하고 그에 따른 wakeUp source 들이 다르네요...


아마 아두이노 9번핀에 연결된 소스를 활용하면 가능 할 겁니다. 만약 그 핀을 소스로 사용 하기 어렵다면 GPIO pin 번호를 바꾸셔도 되구...^^

고구마군 2014-03-16 22:58

정말대단하십니다

sylar 2014-03-17 20:30

하하하하;;; 동작 방식을 확인해 보니 제가 생각 하던 방식이 전혀 아니군요...ㅠㅠ

3번(key_pressed)이 키가 눌리면 level의 변화가 있을거라 생각 했는데... 그게 아니고 계속 폴링 해줘야 하는구만요...

머 이래..ㅠㅠ 이 키보드가 무선으로 안나오는 결정적인 이유겠네요..ㅋㅋㅋ 무선으로 나오려면 절대적으로 다시 설계 되어야 하겠네요.


흐어..ㅋㅋㅋ

강선영 2014-03-17 20:33

ㅎㅎ 맞아유..

 일정 시간마다 폴링을 해야 합니다. ㅜㅜ


sylar 2014-03-17 20:44

이건 뭐 슬립 들어가는 것보다는 전원 많이 잡아 먹는 놈을 족치는게 더 좋겠네요.


전 아직 보드가 없어 못하는데 이렇게 한번 해보세요 Internal RC Oscillator를 쓰시고 클럭을 1MHz로 낮춰 보는거예요 ㅋㅋㅋ


데이터쉬트보니  IRC, 1MHz를 사용 하고 5V 일 경우에 Active current가 1mA ~1.1mA 정도 나오네요.


5V 16MHz (아마 EXT 쓸텐데) 8mA ~ 9mA를 쓰네요...

주뇽s 2014-03-20 01:34

와우 대단하시네요!

BRyeon 2014-03-23 18:30

완성품이 언능 기대됩니다!

hanagun 2014-03-24 09:39

정말 대리만족입니다.. 다음편 완성편이 완전 기대됩니다~!

cknism 2014-03-31 15:18

대박이네요 멋집니다!!!

rayhue 2014-04-01 02:57
그동안 목빠지게 찾던 자료네요. ^^;; 
혹시 그냥 usb에 키맵만 변경하고 싶으면 아두이노 프로 킷만 가지고 가능한가요? 
저도 그냥 소프트웨어 쟁이라 이쪽에 많이 무식합니다. ㅠㅠ;;
들고 댕기면서 키맵 안바꾸고 쓰고 싶은데 사용하는 환경이 여러개다 보니 매번 키맵 등록하는 것도 귀찮고 그래서 
아는것은 전무 하지만 도전해보려고 합니다.

일단 제가 이해한 바로는 
1. 해피상판(with connector)--> 아두이노 --> breakout with usb mini
이 구성이 맞는 건가요 ?
만일 해피컨트롤러 없이 아두이노로만 컨트롤이 가능하다면 breakout 단자는 어떻게 연결하는 건지도 궁금하구요 ㅠㅠ. 
breakout 단자의 usb로 키입력을 전달할 수 있는건가요 ?
Arduino Pro Mini 328 - 3.3V/8MHz 가 있는데, 이걸 쓰면 전원 변환(3.3 --> 5v)을 안써도 되는건가요 ?
위에 일본사람이 개조한 글을 보니깐 해피 자체가 5v 로 동작한다는 말이 있던데 그렇다면 Arduino Pro Mini 328 - 5V/16MHz 만 사용가능한건가요?

혹시 arduino nano v3.0 이나 arduino micro를 구입해서 보드에 있는 usb mini를 그냥 사용하고, 위의 코드를 수정해서 사용하면 바로 동작하는 건지도 궁금해요 ^^;; 오늘 하루 종일 이리저리 알아봤는데 왠지 이게 가장 편한 방법 같아서요. 

두서없이 말씀드리다 보니 진짜 아는게 전무하네요. 부끄럽습니다. 
염치없지만, 답변 부탁 드릴께요. ^^;;

데덴네 2014-04-03 00:48

유선 키보드를 블루투스 키보드로 바꾸고 싶은 마음은 항상 가지고 있었는데 실제로 보니 엄청 어려운 거군요 ㅠㅠ

대리만족 하고 갑니다! 이런거 뚝딱 하시는 분들 보면 정말 부러워요

마크 2014-04-05 00:38

전문적인 정보 감사드립니다. ^^

리힌 2014-04-06 11:13

좋은 정보 감사합니다.


그냥 전 블투 키보드를 따로 구매해서 써야겠어요 ㅠㅠ

Housmile 2014-04-08 09:44

이건 뭐.. 대박이라고 말씀드릴 수 밖에..

얼른 강좌가 나오길 기다리고 있었습니다.

나중에 시간내어 저도 도전해보려고요.

빠르게 스크랩해놔야지요. 하하하하하하 :)

근두운타고1 2014-04-10 18:17

잘보았습니다 좋은정보 감사합니다

박병규(76) 2014-04-12 03:06
4편을 애타게 기다리고 있답니다~
안녕님 2014-04-15 19:09

제가 전혀 모르는 놀라운 세상이군요; 능력자시네요..

거인의별 2014-04-17 15:02

저도 해피당 가입하면 꼭 도전해보고 싶네요.

tuna8611 2014-04-18 00:17

대단하십니다..

아스팔트 2014-04-18 09:43

손재주가 좋으시네요.

코드버드 2014-04-20 07:26

대단하시네요 ㄷㄷ

훈민정흡 2014-04-20 11:34

능역자시네여

연시리 2014-04-26 03:01

오 대단하시네요..잘배웠어요..감사합니다.

titanes 2014-04-26 19:52

잘 보고 갑니다

return 2014-05-06 12:00

잘 보고 갑니다.

sankill 2014-05-08 18:16

키보드 멋있네요.

소중한시간 2014-05-09 17:30

와..능려자 분들이시네요~ -0-

sklee203 2014-05-13 05:15

좋은 정보 감사합니다.

마음으로 2014-05-19 14:37

대단 하시다는~ㅎ

카레이스 2014-05-25 16:59
능력이 엄청나시네요..
좋은자료 잘 보았습니다!
스파클 2014-06-19 14:15

손제주가 뛰어나시네요

화이트리카 2014-06-22 02:17

아 어렵습니다 

HappyCharles 2014-06-28 00:12

하...


안녕하세요1 2014-07-02 20:55

잘 봤습니다

shy 2014-07-07 03:49

아두이노는 한번 해봤는데................ 역시 어렵네요ㅠ

마늘냄새 2014-07-11 14:48
와 손재주가 정말 뛰어나시네요 배우고갑니다^^
Lego 2014-07-11 16:22

꿈의 키보드!!

수학사랑 2014-07-16 01:35

오 재주가 대단하십니다.

dojob 2014-07-20 08:11

엄청난 내공! 해피해킹 구매했는데 망치면 어쩌나 개조는 엄두를 못내겠습니다. ㅎㅎ

오파운드 2014-07-24 09:33

전 잘 이해가 안되네요 ㅠㅠㅠ

대단하시네요 ㅎㅎ

아그말리온 2014-07-24 13:56

어려워요~ㅠ 하지만 아시는분들이 보신다면 유용한 정보가 되겠네요~

Xeus 2014-08-01 10:20

어렵네요..

차카다키보드 2014-08-24 15:49
여기서 끈고 머리온도좀 낮추야겟네요
Cool 짱짱