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


직접 만들 수 있는 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님과 기여해주신 분들에게 감사의 말씀을 드립니다.