전에 젤다의 전설 무한 루피 메크로 만들기에 대해 메모 같은 느낌으로 간단히 적었는데
이번에 펌웨어 빌드 과정은 생략하고
이미 만들어진 메크로 펌웨어 파일을 아두이노에 올리는 방법에 대해 좀더 자세히 적어보겠습니다.
준비물
1. ATMega16U2를 사용하는 아두이노 우노 보드
좌측 상단의 USB포트 뒤에 보면 보통 정사각형 모양으로 되어있는 칩이 ATMega16U2입니다.(USB to Serial)
(우측 아래에 있는 긴 칩은 ATMega328 MCU로 ATMega16U2랑 별개입니다.)
http://bit.ly/ali_ATMEGA16U2
이런 애가 16U2입니다.
저렴한 아두이노 보드를 보면 보통 이런 직사각형의 CH340이 사용되는데
이번 메크로 만들기에서는 사용하지 못합니다.
2. 정품 아두이노 우노가 아닐경우
정품 아두이노가 아닐경우 운이 나쁘면 DFU모드에 진입하기 위해
ICSP를 사용해 펌웨어를 새로 깔아줘야 한다는 애기가 있습니다.
http://pichachu.tistory.com/21
저는 아직 검증하지 못했지만 만약 클론 보드로 하실때에는 주의가 필요해 보입니다.
(정품을 사용하시면 좋긴 하지만 클론 우노 보드는 저렴한건 $3달러 ATMega16U2는 $5달러
하지만 정품은 $22로 보통 3~4배 차이가 나므로 클론 보드를 여러개 사고 남은것은 다른곳에 활용하는것도 좋은 방법이 아닐지...)
3. 드라이버, 업로드 프로그램 펌웨어 파일 다운로드
https://sourceforge.net/projects/dfu-programmer/
https://sourceforge.net/projects/libusb-win32/
Joystick.hex
이렇게 3가지 파일을 다운받고 압축도 풀어줍니다.
1.DFU모드 진입, 드라이버 설치
일단 제가 DFU진입을 할때 사용하는 방법으로는
먼저 사진처럼 아두이노의 RESET과 GND를 쇼트시킵니다.
컴퓨터와 USB연결을 하고
1초정도 있다가 쇼트를 풀어줍니다.
장치 관리자에서 보면 알 수 없는 장치로 뜨는데
오른쪽 버튼으로 드라이버 업데이트를 누르고
수동으로 드라이버를 찾아 줍니다.
드라이버의 위치는 위의 DFU-Programmer의 압축을 푼 폴더 안에 있습니다.
(https://sourceforge.net/projects/dfu-programmer/)
드라이버를 다 설치하면 ATmega16U2로 표시가 됩니다.
2.펌웨어 업데이트
위에서 다운 받았던 libusb폴더 안에 bin -> x86에 들어가면 libusb0_x86.dll 파일이 있습니다.
(https://sourceforge.net/projects/libusb-win32/)
dll파일을 dfu-programmer폴더에 복사하고 이름을 libusb0.dll로 바꾸어줍니다.
Joystick.hex파일도 같은 폴더에 복사합니다.
Joystick.hex
메모장을 열고
dfu-programmer atmega16u2 erase
dfu-programmer atmega16u2 flash Joystick.hex
dfu-programmer atmega16u2 reset
pause
를 적어줍니다.
dfu-programemr폴더에 파일명으로 upload.bat
파일 형식으로는 모든 파일로 설정하고 저장합니다.
upload.bat파일을 실행하면 펌웨어가 업로드 됩니다.
아두이노의 연결을 해제했다가 컴퓨터에 다시 연결하면 게임 컨트롤러로 인식이 되고
자동으로 버튼이 눌려지는 모습도 볼 수 있습니다.
3.메크로 동작 시키기
마침 한글 업데이트가 이루어진 날...
폰드씨 앞에 다가가서
TV독에 아두이노를 연결하였습니다.
(USB-C어뎁터가 있으면 본체에 직접 연결해도 됩니다.)
USB 입력기기로 인식을 하고...
허공에 칼만 휘두르고 전혀 동작을 하지 않습니다...
원인을 찾기 위해서 고생하다 보니...
한글판이 되면서 영문에 비해 대사가 한줄이 더 늘어나면서 메크로가 안맞았습니다...
여기에 대사 한 분량만큼 더 추가해주면 될텐데
스트라이크, 스페어시의 대사 분석이나 테스트를 매번 컴파일 하면서 해보기에는 지쳐서...
그냥 본체 시스템 언어를 영어로 바꾸어서 다시 시도 합니다.
다시 Pondo씨에게 다가가서...
잘 동작 합니다...
가끔 스페어도 나오지만 계속 놔두면 문제없이 진행됩니다.
시간당 1만 루피정도 벌어들이는 것 같습니다.