마음 속 하늘은 항상 맑음~!

알리 부품으로 조이패드 만들기 본문

하드웨어

알리 부품으로 조이패드 만들기

파르셀수스 2024. 3. 7. 13:04

 인터넷 서핑 중에  https://gp2040-ce.info/ 라는 조이패드를 만드는 RP2040 기반의 프로젝트를 발견했다.

 그래서 만들기로 하고 알리에서 RP2040-ZERO라는 미니 보드와 그냥 아무런 싼 조이스틱을 구입해서 바로 제작. 설명에 보면 반응 속도와 기능이 좋고 매크로도 지원한다.

 

 구입한 조이스틱은 예측한 것처럼 당연하게도 그대로의 기능에는 XInput가 지원이 안된다. 그냥 USB 조이스틱의 기능만을 가졌다. 이를 XInput가 지원되는 조이스틱으로 만들려고 하는 작업이다.

 

 

 그리고 RP2040-ZERO를 선택한 이유는 너무 보드가 크면 조이스틱 안에 구겨넣을 수 없다. 그래서 큰 크기를 가진 원래 RP2040을 사용하기 어렵다.

 

 GP2040-CE는 많은 RP2040 호환 보드를 지원하는데 그 펌웨어는 다운로드에서 선택해서 찾을 수 있다. 친절하게 보드의 사진을 첨부해서 선택하도록 하고 있다.

 

 WAVESHARE RP2040-ZERO용을 다운로드해서 플래싱을 한다. 일반 RP2040 보드를 플래싱하는 방법과 똑같다.

 다운로드 하는 곳에 링크로 핀아웃도 상당히 중요하다.

 A1, A2는 사용하지 않으므로 무시한다.

 

 그렇게 수정된 핀맵은 다음과 같다.

(주) 방향키 버튼 -> 스틱 버튼

 

이 중에 꼭 제대로 연결해야 하는 버튼은 S2이다. 이는 웹설정을 활성화할 때 사용하는데 반드시 제대로 연결해야 한다.

 

 연결만으로 끝나는게 아니고 웹설정으로 들어가서 일부 설정을 조정해야 한다. S2 버튼을 누른 채 연결하면 바로 웹설정 모드로 전환되고, 거기서 방향키 설정을 해야 한다. 전원 연결 후에도 S2+B3+B4를 5초간 눌러도 웹설정으로 들어갈 수 있다.

 

 안타깝게도 Zero보드는 29, 28, 27, 26만 ADC로 사용할 수 있고, 29와 28은 좌측의 스틱으로 설정할 수 있지만, 우측의 스틱은 A1, A2를 없애고 R3와 L3를 A1, A2 핀에 넣고, 27과 26을 스틱 축 ADC 핀으로 설정해야 한다.

 

http://192.168.7.1/ 로 접속하면 많은 메뉴들이 있는데, 연결시 조이스틱 모드를 설정하는 단축키 등등이 있다. 기본적으로 조이스틱은 연결시 XInput모드로 연결하도록 설정되어 있다.

 

애드온 설정에서 Analog를 선택하고 Enabled를 시킨다. 그리고 각각의 좌우 스틱 연결 핀 번호를 입력한다.

페이지 맨아래의 SAVE 버튼을 누르면 스틱의 아날로그핀 설정은 끝난다.

 

다음은 A1, A2핀 옮긴 R3, L3핀의 설정이다.

메뉴의 핀맵핑을 찾아 PIN14PIN15의 설정을 아래와 같이 바꾼다. 그리고 SAVE 버튼을 눌러 저장한다.

 

이렇게 간단히 설정은 끝나고, 페이지의 Reboot 버튼을 누르고 Controller를 선택하면 설정한 내용이 적용되어 다시 부팅한다. 설정은 전원이 연결되지 않아도 바로 이전 설정이 저장되어 매번 그대로 사용된다.

 

Settings 메뉴에 보면 Boot Input Modes라는게 있는데, 이는 전원 연결시 버튼을 누르면 여러가지 조이스틱 모드로 사용할 수 있게 해준다.

  A(B1) : 닌텐도 모드

  B(B2) : XInput 모드, PC에서 사용하는 엑박 조이스틱 호환 모드

  X(B3) : PS3/다이렉트인푸트, 일반적인 USB 조이스틱

  Y(B4) : PS4

  R2      : 키보드 모드, 버튼을 누르면 키보드 해당 버튼이 눌리는 에뮬레이션 모드.

               keyboard-mapping에서 키를 지정할 수 있다.

 

 단, 부팅시에 선택한 모드는 저장되어 다음 전원 연결시에 다시 사용하게 된다.

 

기존 조이스틱의 전원과 연결선들을 제거했고, 버튼들을 연결하기 위해 기판의 버튼 근처의 단자에 구멍을 뚫어서 연결했다.

버튼 핀들은 GND와 핀만 연결하면 제대로 동작한다. RP2040보드의 핀이 풀업 모드로 되어 있어서 누를 때 GND에 연결되어 0신호를 받는 방식이다.

아래 스틱은 아날로그 방식이라 +전원을 연결해야 하는데, RP2040은 5V를 연결하면 오동작할 수 있어서 반드시 3.3V(3v3 핀)에 연결해야 한다.

 

작업의 결과물.

 

'하드웨어' 카테고리의 다른 글

라이젠 그리고 마이크론 램.  (0) 2020.01.11
M사 SMU 46.49 패치 바이오스.  (0) 2019.09.24
라이젠 ComboPi 1.0.0.1  (0) 2019.05.24
PinnaclePi 1.0.0.6  (0) 2018.11.23
하드디스크 스핀다운업 현상.  (0) 2018.11.20