디지털 라이프 電子的生活 My Digital Life/아두이노 (Arduino)

플스2 패드를 아두이노에 연결하기...

미친도사 2017. 11. 23. 20:00

얼마 전에 RC의 조종기에 대한 이런저런 생각에 대해 글을 쓴 적이 있습니다.

2017/08/12 - 아두이노 기반 RC의 무선 조종기에 대한 이런저런 생각들...


그 중에 플레이스테이션2(이하 플스2)의 게임 패드인 듀얼쇼크2가 굉장히 매력적인 콘트롤러가 될 수 있음을 확인한 바 있습니다.

검색해보면 다 나오는 정보이긴 하나, 흩어져 있는 정보를 모아보는 차원에서 정리해보려 합니다.

기본적으로 아래 사이트에 있는 정보를 재구성한 것입니다.

http://www.billporter.info/2010/06/05/playstation-2-controller-arduino-library-v1-0/


준비물: 플스2 유선 게임패드, 아두이노


플스2 패드는 이렇게 생긴 커넥터가 달려 있습니다.


여기에 직접 아두이노를 연결해도 됩니다.

핀배열은 다음과 같습니다.



Image Source: CuriousInventor


이 커넥터에 아두이노를 연결해도 됩니다만, 저는 무선 개조를 염두에 두고 있어 이 케이블을 제거했습니다.


그리고, 90도 헤더(보통 right angle header라고 부르는 헤더)를 납땜하여 붙였습니다.


그러면 밖에서 연결하기 위해 케이스를 조금 잘라내야 합니다.


잘래내서 커넥터가 밖에서 보입니다. 이제 점퍼 와이어를 연결하기 좋아졌습니다.


핀배열은 위의 그림에서 다음과 같습니다. 좌로부터 1번핀

1

7.5V

 2

 GND

 3

 VDD (3.3V)

 4

 DI

 5

 DO

 6

 CS

 7

 CLK

 8

 ACK


시그널 이름들을 보니 SPI(Serial Peripheral Interface)인 것 같습니다.

DI를 보통 SPI에선 MOSI, DO는 MISO라고들 하고, 아두이노에는 특정 핀들을 SPI를 위해 지정해두었습니다만, ps2x 라이브러리에서는 이들을 그냥 모두 소프트웨어로 구현하게 해놨습니다. 적당히 연결하면 됩니다.


ps2x 라이브러리 샘플을 기준으로 설명해 봅니다.

https://github.com/madsci1016/Arduino-PS2X/blob/master/PS2X_lib/examples/PS2X_Example/PS2X_Example.ino


제일 앞쪽에 포트 지정하는 부분이 있습니다.

#define PS2_DAT 13 //14
#define PS2_CMD 11 //15
#define PS2_SEL 10 //16
#define PS2_CLK 12 //17


PS2_DAT = DI (13)

PS2_CMD = DO (11)

PS2_SEL = CS (10)

PS2_CLK = CLK (12)

각 신호를 샘플에서 포트 정의한대로 연결하면 됩니다. 포트는 원하는 대로 연결해도 됩니다. 그리고, 3.3V와 GND를 아두이노와 연결하면 되고요. 진동 기능까지 쓰려면 1번핀을 7.5V에 연결하면 된다네요.


이렇게 연결하고 ps2x 라이브러리 설치하고, 샘플 돌리면 확인 끝!


아날로그 스틱 2개, 상하좌우 버튼 4개, 4개의 모양 버튼, 패드 앞쪽에 위치한 L1/L2/R1/R2, 아날로그 스틱을 누르면 동작하는 L3/R3 및 SELECT / START 버튼 모두 동작 가능합니다.

게다가 상하좌우 버튼과 4개의 모양 버튼은 누르는 압력 센싱 기능까지 있어 그 기능 확장이 무궁무진하다 하겠습니다.


이걸 조금 활용한다면, 플스2 무선 패드를 구입하면 수신부의 핀을 아두이노에 연결해서 무선 조종이 가능하겠지요.


이렇게 하는 게 아두이노 기반으로 무선 RC로 확장 가장 쉬운 방법일 것 같습니다.

무선 패드 가격이 알리익스프레스에서 1만원 정도 하는지라 가격도 저렴하지요.

다만, 무선 수신부가 들어가기에 좁은 모형에 적용하기는 어려울 것 같습니다.

그래서, 저는 nRF24L01을 이용해서 좀 작게 구현해보고자 합니다.


그 이야기는 다음에 계속...

반응형