2022-03-26

라즈베리파이 피코를 이용한 조이스틱 제작기

조이스틱 만들 때 흔히 제로딜레이보드를 쓰는데, ‘라즈베리파이 피코’가 그 역할을 대신하고도 남는다. 제로딜레이보드보다 좋은 점은 가격이 싸고 입력 딜레이가 짧다는 것이다. 수치(평균 0.85ms) 상으론 조이스틱 보드 중 가장 빠르다는 Brook 유니버셜 파이팅보드보다도 앞선다고 하니 조이스틱 만들 때 최우선이 되지 않을까 싶다.
궁금해서 기존에 제로딜레이보드로 만든 스틱이 이미 있지만, 하나 더 만들어보기로 했다.

편의상 1300원 정도 비싼 핀헤더 납땜 버전을 구입했다. 납땜 버전이 아닌 경우엔 버튼과 레버 연결선을 직접 피코에 납땜해야 한다.
우선, 피코에 조이스틱 펌웨어를 올려야 한다. 아래 링크에서 펌웨어를 내려받을 수 있다.

https://github.com/FeralAI/GP2040/releases

나는 네이버 라즈겜동에서 배포한 GP2040-PICOFB_v0.4.3kr.uf2 펌웨어를 올렸다.

올리는 방법은 피코 보드의 bootsel 버튼을 누른 상태로 PC USB에 연결하면 RPI-RP2라는 드라이브가 뜨는데, 거기다 펌웨어를 복사하면 자동으로 재시작되고 피코에 펌웨어가 적용된다.

기본은 XBOX360 컨트롤러(Xinput)로 잡힌다. 아래처럼 특정 버튼을 누른 상태로 USB에 연결하면 해당 모드로 부팅된다고 한다.

입력 모드 변경
A : 닌텐도 스위치
B : Xinput (xbox360 컨트롤러)
X : DirectInput (PS3 모드)

D패드 모드 변경
다음 버튼 조합으로 변경가능(기본값은 D패드-HAT)
셀렉트 + 스타트 + 아래 : D패드모드 (HAT)
셀렉트 + 스타트 + 좌   : 아날로그(좌)
셀렉트 + 스타트 + 우   : 아날로그(우)

펌웨어 올린 뒤, 케이블만 연결하면 될 줄 알았는데, 문제가 생겼다. 가지고 있는 케이블들이 제로딜레이보드에는 맞지만, 피코에는 맞지 않았다. 따로 또 케이블을 사기엔 배송비가 아까워서 가지고 있는 선을 각각 자른 뒤 필요한 부분을 납땜해서 이어붙이기로 했다. 핀이 납땜된 피코를 산 의미가 사라졌다.

납땜 열댓번쯤 해서 필요한 케이블을 만들었다. 이제 케이스 장착하고 선만 연결하면 된다. 레버, 버튼, 케이스는 중국산 저렴이 제품이다. 셀렉트, 스타트 버튼만 24mm 권바 버튼인데, 딱히 알리 중국산보다 좋은 줄은 모르겠다.

버튼을 하나 연결해서 테스트해봤는데, 인식 안 되는 경우가 있었다. 피코, 버튼, 케이블 중 어디가 이상이 있는지 의심했다. 알고 보니 내가 버튼 위치를 잘못 보고 끼운 탓이었다. 배선 그림은 윗면을 보여주고 있는데, 밑면이라고 생각하고 버튼을 연결했으니 반대로 끼우고 있었던 것이다. 제대로 꼽으니 잘 작동했다.

위 그림에 표시된 핀에 해당하는 버튼 선을 각각 끼우고, GND도 모든 버튼과 레버에 연결해줘야 작동한다. 난 문어발처럼 연결된 케이블을 만들어서 GND 하나에 여러 버튼이 연결되도록 했다.

레버에 5핀 케이블 끼우는 건, 그냥 끼우면 방향이 제대로 인식 안 될 수 있기 때문에 배선표를 보고 정확히 끼워야 한다. 산와 호환 레버라서 산와 배선표를 보고 연결했다.

예상보다 시간이 꽤 걸려서 완성했다. 상판이 투명 재질이라서 폼은 안 난다. 나중에 스킨이나 스티커를 붙이거나 다른 상판으로 교체하고 싶다. 케이스 안엔 공간이 많아서 라즈베리파이 같은 보드를 넣으면 독립된 게임기로 만드는 것도 가능하다.

댓글 없음:

댓글 쓰기