반응형

전에 젤다의 전설 무한 루피 메크로 만들기에 대해 메모 같은 느낌으로 간단히 적었는데

이번에 펌웨어 빌드 과정은 생략하고


이미 만들어진 메크로 펌웨어 파일을 아두이노에 올리는 방법에 대해 좀더 자세히 적어보겠습니다.





준비물



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만 루피정도 벌어들이는 것 같습니다.






반응형
반응형


젤다의 전설에서 눈덩어리를 자동으로 굴리는 메크로를 짜 볼까 생각을 하였지만

혹시나 하는 생각에 Fork리스트를 보니...




https://github.com/bertrandom/snowball-thrower

https://medium.com/@bertrandom/automating-zelda-3b37127e24c8



이미 만든 사람이 있었...






코드도 enum으로 보기 좋게 잘 꾸미고 딜레이도 만들고...

스크립트? 도 보아하니 예외처리 잘 하면서 신경써서 만든듯




직접 빌드해서 넣어보니 문제없이 잘 동작함




가끔 스트라이크를 못 할 때가 있어도 시간 낭비는 하지만

계속 반복하는데에는 문제가 없이 잘 짜져있었음



개발자 블로그에서는 한시간에 5827 에서 12007 정도 얻을 수 있다고 적혀있는데

시간당 만 루피정도 벌어들이는 것 같음




컴파일 다한 펌웨어 파일과 아두이노에 집어넣는 과정만 간추려서 새로 포스팅하였습니다. 

http://bit.ly/botw_macro_simple





반응형
반응형



펌웨어를 올리고 컴퓨터에 다시 꽂아보니 게임 컨트롤러로 잘 잡힌것을 확인




스위치에 TV독에 USB를 연결하고 무사히 인식 완료





이제 원하는 동작을 하도록 코딩을 할 차례만 남았는데


사실 프로젝트가 재미있어 보여서 따라 해 보았는데 딱히 뭔가를 만들어보고 싶은게 없음...

일단은 젤다에서 가장 노가다라고 할 만한것을 꼽자면 역시 눈 볼링으로 루피 모으기이므로

이걸 만들어 볼까 함




이 프로젝트 자체가 범용적으로 쉽게 쓰기에는 불편하므로 쉽게 사용할 수 있도록

처음에 구상한 이런걸 만들려면 debounce해서 입력을 만들어 내는 개념의 

https://github.com/progmem/Switch-Fightstick

이 브랜치를 기반으로 하면 좋고


배열에 움직임을 넣고 그냥 재생용으로 쓸 거면

https://github.com/progmem/Switch-Fightstick/tree/splatoon-2-printer

이 브랜치를 기반으로 하면 좋겠다 생각하고

대충 구조 파악하고 코딩을 하고 있었는데...




https://github.com/arduino/Arduino/tree/master/hardware/arduino/avr/firmwares/atmegaxxu2/arduino-usbserial

만약 원래의 아두이노로 되돌리고 싶으면 이 펌웨어가 필요




반응형
반응형



Funduino라는 아두이노 클론을 사용중...


아두이노에 업로드 하기 위해서는 DFU모드에 진입해야 한다는데

위의 저 RESET과 GND를 점프시켜도

장치 관리자를 봐도 DFU모드의 아두이노가 보이지 않음...


인터넷을 찾아 보니 정품이 아닌 경우 그럴 수 있다는 글과 해결법을 발견

(사실 점프한 다음에 빼내야 된다는걸 몰랐음...

처음부터 잘 되었을 지도...)



여튼 필수는 아니였을지도 모르지만


아래에 잘 정리된 블로그를 따라해서

ICSP를 사용해 새로운 펌웨어를 올려줌

http://pichachu.tistory.com/21




RESET GND를 계속 연결시킨 상태로 연결해놓고서는

그래도 안된다고 상심하고있다 포기하고 정리하기 위해 선을 뽑았더니 새로운 장치를 발견함...


드라이버를 못 찾은 상태지만



아래의 블로그를 참조해서 드라이버를 잡고 새로 만든 펌웨어를 dfu-programmer를 사용해서 업로드 성공 

http://courage59.blogspot.kr/2015/06/arduino-uno-dfu.html


dfu-programmer atmega16u2 erase

dfu-programmer atmega16u2 flash Joystick.hex

dfu-programmer atmega16u2 reset




반응형
반응형


먼저 프로젝트를 다운 받고



LUFA를 다운받고 

http://www.fourwalledcubicle.com/LUFA.php


AVR toolchain 설치하고(회원 가입 필요) 구글링하면 다른 자료가 나오기도...

http://www.atmel.com/tools/atmelavrtoolchainforwindows.aspx


윈도우에서 빌드를 하기 위해 mingw를 설치하고 gcc나 make등 여러 필요할만한 것들 마구 설치

https://sourceforge.net/projects/mingw/



(분야는 다르지만 평소에 코딩하던 개발환경에서 작업하느라

클린 상태에서는 달리 더 설치해야 하는게 있을 수 있습니다.)



makefile에서

MCU를 atmega16u2로 설정하고

LUFA_PATH도 압축 푼 경로로 설정




https://github.com/shinyquagsire23/Switch-Fightstick/commit/27886258840737dbd37319d6cd63278b17fe5af9


LUFA 버젼업에 따라 코드 수정도 좀 필요하고...

(다른 포크들을 보고 수정을 함...)




그리고 make를 하니

Joystick.hex 파일이 무사히 생성됨!


이제 아두이노에 올려야 하는데...







반응형
반응형



http://bit.ly/tis_switch_usb_controller


최초의 계획은 usb 호환 키보드를 구해서

스위치의 접점에 선을 연결해서 아두이노에 연결을 할까 생각을 했지만

미루고 미루고 있던 어느날...




6월 20일의 업데이트로

호리의 Pokken Tournament Pro Pad가 사용이 가능하게 되었고

이 컨트롤러를 리버싱해서 분석한 사람이 나타남


LUFA라이브러리를 사용해서 코드를 깃허브에 공개가 됨

https://github.com/progmem/Switch-Fightstick




https://github.com/progmem/Switch-Fightstick/tree/splatoon-2-printer

이걸 이용해서 스플라툰의 그림을 입력하는 걸 만들어 내거나...



매번 움직임을 펌웨어로 만들어서 보드에 업로드 하는게 불편할것 같아서

다른 아두이노에서는 sd메모리로 스크립트를 읽어서 usb조이스틱 아두이노로 신호를 보내면

그 신호를 받아서 스위치로 보내주는것을 만들어 볼까 했는데

코드는 알기 쉽게 잘 정리되어있어보이지만 

PIND나 PINB의 debounce에 대해 하드웨어에 대한 이해도 전혀 없다보니 일단 보류하고

일단 기본 형태를 만들어 보기로...





준비물


보통 아두이노로 USB HID를 만들 때에는 레오나르드나 마이크로 보드를 사용하는데

이 코드는 LUFA를 사용해서 펌웨어를 만들고 업로드해야 하기에

그냥 설명대로 아두이노 우노를 사용하기로



아두이노도 보통 중국제 클론 버젼을 보면



이런 CH340이 많은데 이런 애 말고




http://static.cactus.io/img/arduino/arduino-uno-rev3-function-diagram.jpg





정품이나 ATMEGA16U2를 사용하는 아두이노가 필요

직접 구매하지는 않았지만 알리에서 보니 약 $5정도 하는듯

http://bit.ly/ali_ATMEGA16U2




클론을 사용할 경우에는 다른 아두이노가 하나 더 필요한 경우가 생길지도 모른다고함...
























반응형
반응형

유튜브 영상이나 여러 블로그의 글들도 많지만

자신에게 편한 방법을 사용하는 것이 가장 좋은 방법이지만

일단 자주 사용하는 두 방법을 사진으로 정리...





동상이 보는 방향과 사람이 보는 방향의 중앙에 서서




카메라를 회전 시켜서 핀이 화면 중앙에 오도록 하고

(스샷을 보니 좌측으로 치우쳐져 있음...)



R버튼으로 던지면 높은 확률로 스트라이크 발생






뒤에 딱 붙어서 같은 방향을 보는데

약간 오른쪽에 비스듬이 서서 A버튼으로 놓으면


]


머리에 부딛친 눈덩이가 뒤를 굴러 돌아가서




높은 확률로 스트라이크 발생




반응형
반응형

암호화 키는 공유하지 않습니다.








인터넷을 보다 아미보를 복제가 가능하다는 이야기를 보고 테스트 해보기로...



rfid리더,라이트 기와

http://bit.ly/tis_nfc_reader


NTAG215 10개 세트를 구매

http://bit.ly/tis_ntag215



이때까지만 해도 아두이도 + nfc라이터 + 태그를 하나로 묶어서

아두이노에 자그만한 lcd에 버튼 붙여서 원할때마다 아미보를 바꾸어가면서 리드가 가능한 장치를 만들려고 했지만...





TagMo라는 안드로이드 앱이 있다고 함...

https://github.com/HiddenRamblings/TagMo


안드로이드 빔 샘플앱 하나 만들어본 이후로 안드로이드로 NFC를 한번도 써본적이 없어서

핸드폰 자체에 NFC기능이 있다는 것을 까맣게 잊어먹고 있었...


그리고 제한 사항들을 보니 한번 NFC에 쓰면 다른 데이터로 덮어쓰기가 안된다는듯...

NFC쓰기를 할 때에는 조심을 해야할것 같음



출시된 아미보들에 대해서는 여기에 데이터들이 있고

https://amiibo.life/


데이터들은 이쪽에들 공유가 되는듯 함

https://nfc-bank.com/bins.php?categoryid=2




만약 개발에 이해가 있으시고 아미보 api를 활용하고 싶으시면

https://github.com/N3evin/AmiiboAPI

이 유용할 듯 합니다.















반응형

+ Recent posts