아두이노를 이용한 ADB-USB 컨버터 제작

안녕하세요. 기계식흑설탕이라고 합니다.


직접 만들 수 있는 ADB-USB 컨버터를 소개해드리려 합니다.


바로 아래에 Settle님도 만드셨지만 사실 제가 먼저 만들고 Settle님에게 전수(?)해드렸습니다.


ADB란 애플 데스크탑 버스의 약자로 애플 IIGS에 처음 탑재된 애플의 전용 규격입니다.

단자 자체는 PS/2와 유사하고 S-Video하고 동일합니다만 바로 꽂아서 쓸 수 없는 관계로 컨버터가 필요합니다.

시중에 iMate라는 컨버터가 있긴 하지만 나온지 오래되어 구하기가 어렵습니다.


Settle님이 애플디자인 키보드(M2980)을 입수하셔서 보관중이던걸 낼름 집어와서 검색해보니

GitHub에 Teensy 보드를 이용한 컨버터 소스가 있어 도전하였고 성공했습니다.


robomecha_254.jpg


기본적으로 PJRC Teensy 2.0를 사용하지만 동일 컨트롤러를 사용하는 아두이노 클론 보드도 사용할 수 있습니다.

저는 아두이노 레오나르도 클론 보드인 DFRobot Beetle을 사용하였습니다. 크기도 작고 저렴합니다. 1.2만원 정도.


필수 준비물-

ADB 키보드

ATmega32u4를 사용하는 USB AVR 보드

1K 저항

(탈착식인 경우)자투리 전선

납땜 도구

리얼머신/가상머신에 설치된 리눅스/유닉스 기반 운영체제(ex. 우분투, OS X...)


옵션-

세척 용구

USB (연장) 케이블


대부분의 내용은 https://github.com/tmk/tmk_keyboard가 원본입니다. 같이 보시면 좀 더 수월합니다.


이 글은 터미널을 만져본적이 없는 평범한 윈도우 사용자 입장에서 쓰여졌습니다....


필요하다면 먼저 키보드를 세척합니다. 전 락스에 담궈버렸습니다.


와이어링-


세가닥을 연결해야 합니다. +5V(VCC), GND, DATA(ADB). POWER는 쓰이지 않으므로 연결하지 않으셔도 됩니다.


Apple_Desktop_Bus_Connector_Pinout.png


사진은 암 커넥터이니 수 커넥터는 방향이 반대임을 유의하세요.


보드에 +,-로 표시된 부분에 각각 VCC와 GND를 연결하시고 DATA는 원하시는 곳에 연결하세요. 비틀 기준 D9을 추천합니다.


그리고 DATA와 VCC 선 사이에 병렬로 1K 저항을 연결해주셔야 합니다. 풀업 저항이라는데 이유와 원리는 잘 모르겠습니다 -_-;


펌웨어 빌드-


위에 리눅스/유닉스라 적었는데 윈도우에서도 cygwin같은 프로그램으로도 가능하지만 번거롭고 어렵습니다. 저는 말이죠...ㅜㅜ


저는 해킨토시로 작업했지만 여전히 어렵더군요.


https://github.com/tmk/tmk_keyboard로 접속하셔서 오른쪽 메뉴의 Download ZIP를 눌러 다운 받으세요.


압축을 푸시고 해당 폴더\converter\adb_usb로 들어가 config.h를 텍스트 에디터로 열어 다음 부분을 수정해주세요.


/* ADB port setting */

#define ADB_PORT        PORTB

#define ADB_PIN         PINB

#define ADB_DDR         DDRB

#define ADB_DATA_BIT    5


D,9 대신 B, 5를 쓴 이유는 아두이노의 경우 보드에 프린팅된 이름이 실제 이름과 다르기 때문입니다. 각 보드의 회로도를 참고하세요.

비틀의 회로도는 http://www.dfrobot.com/image/data/DFR0282/Beetle%20Sch.pdf


저장 하시고 터미널로 다시 해당 폴더로 들어가 make clean과 make를 입력하면 폴더에 hex파일이 생성됩니다.

(에러가 발생하면 구글링하여 해당 에러를 해결하셔야 합니다. 죄송합니다 어떻게 했는지 기억이 나질 않네요)


보드에 이 파일을 업로드하려면 별도의 프로그램이 필요합니다. 윈도우즈에서는 X-Loader, OS X에서는 AVR Tools를 이용하시면 됩니다.

(X-Loader의 경우 파일 수정이 필요합니다. http://russemotto.com/xloader/#comment-12316 참조)


먼저 보드를 부트로더 모드로 진입시켜야 합니다. 보드 마다 방법이 다릅니다. 비틀은 뒷면에 6개의 접점이 모여있습니다. 바깥쪽 2개를 쇼트시켜 주시면 LED가 부드럽게 점멸되며 몇초동안 부트로더 모드가 됩니다. 이 때 hex파일을 업로드하세요.


업로드가 끝나면 키보드가 작동하는지 확인하시면 됩니다.


부록-


이렇게 만들어진 컨버터는 바이오스나 도스등에서도 사용이 가능합니다.


포함된 문서를 읽어보시면 아시겠지만 키 변경, FN의 구현이나 다중 키맵(레이어) 구성이 가능합니다.


https://www.pjrc.com/teensy/hid_listen.html 이 링크의 프로그램을 이용하여 디버깅이 가능합니다.


아래는 제가 작업한 사진입니다.


IMAG0181.jpg


IMAG0198.jpg


IMAG0199.jpg


IMAG0200.jpg


이 게시물은 수정 중입니다.


궁금하신 점은 댓글을 달아주시면 답변해드리겠습니다.


hasu님과 기여해주신 분들에게 감사의 말씀을 드립니다.

첨부파일 (7)

댓글 20
묵정밭 2015-06-26 16:25

Settle 님 보다 더 구체적인 내용의 투토리얼이네요. 기계치라 어디서부터 손을 대야할 지 무모함이 앞서지만, 그래도 도전해 보고픈 

마음이 생깁니다. 비틀이 100키 이상의 키보드도 넉넉히 감당하는 거죠?

좋은 글 잘 보았고 참조하겠구요, 감사합니다^^

기계식흑설탕 2015-06-26 16:52

비틀이 컨트롤러가 아닌 컨버터가 되는 것이기 때문에 키 개수와는 상관이 없습니다...^^

제가 작업한 키보드는 108키이고 잘 작동하고 있습니다.

갈구리 2015-06-26 18:30

아 이런거 기성품으로좀 팔았으면 좋겠네요 ㅎㅎ

이해는 잘 못하겠지만 잘봤습니다.

재민아빠 2015-06-26 19:26
Tenssy까지 관련글 긱핵에서 검색해봤네요.
다행이 답을 주셨습니다. 전 맥유저라 키맵핑 없이 ADB컨버트 역활만 해주는 게 필요했습니다.

굿잡입니다.
찔레꽃향기는 2015-06-26 23:51

생각보다 너무 간단한 설명이라 놀랐네요 ^^ ADB 하나 장만하면 도전해봐야겠습니다.

기타선수 2015-06-27 06:05

와 이런걸 어찌 하시는지 대단하십니다.

ksungjae80 2015-06-30 00:53

나중에 한번 따라해봐야겠습니다! 감사합니다^^

묵정밭 2015-07-02 18:18

충분히 이 마음 아시리라 생각하며 감사를 전합니다. 덕분에 잘 해결되었습니다. 그 동안 묵은 때 때문인지 키감이 영 어색합니다만, 즐거운 키보딩 연습에 다시 박차를 가해야겠네요.

좋은 하루 되시길^^

sidney 2015-07-03 13:12

와 능력자 ㅎㄷㄷ 대단하시네요 다음에 따라해봐야겠어요 ㅎㅎ

타이비언 2015-07-05 19:29

잘보고가요~ 감사합니다^^

jin 2015-07-07 11:59

잘보고 갑니다 ^^

powerlps 2015-07-15 11:53

와... 대단하십니다. 

이장호1 2015-07-17 09:46

아두이노를 이렇게 쓸수도있군요 ㅎ

산세베리아 2015-07-26 16:39

능력자시네요. 

저는 따라하려면 내공을 많이 키워야ㅠㅠ 부럽기만 합니다.

예압 2015-08-07 02:43

잘 봤습니다. 엄청나네요..

김수염 2015-08-18 13:31

잘 보고 갑니다

jjj1989 2015-10-02 09:51

잘봤습니다

Macstall 2015-10-12 22:30

잘봤습니다^^

레몬^^ 2015-10-20 22:41

정보 감사합니다. ㅎ

될놈즈 2015-11-12 10:31

잘봤습니다~ 해볼엄두도 안나네요 ㅋㅋ