RetroPieにプレステコントローラをGPIO接続にTry

2016年5月23日

IoT RaspberryPi ゲーム テクノロジー

以前構築したPiStation(RaspberryPiをPlayStation筐体に入れ込んでRetroPieの組み込み)記事をバージョンアップさせたくて、USBコントローラ部分を使用するのではなく、プレステ筐体のコントローラを使ってできるように改造してみました。 GPIOを使って行えば、コントローラ2つに対応できると考えられるので、その方向でTryしてみました。

下準備

基盤のチェックをしてみたところ、コントローラの接続部分と基盤のハンダが同じ構造になっている事が分かったので、各ポートを対象のピンに配線するようにしてみました。 プレステコントローラの仕様も以下のページに記載があったので、参考にさせてもらいました。 Raspberry Piにプレステのコントローラをつなぐ SPIの詳細な利用方法

基盤にハンダ付け

9本の束を1コンと2コンの2束用意し、コントローラ基盤に直接ハンダ付けします。 まず、線をカットし、いい感じに剥きだして、接続できるようにします。 基盤にハンダ付けすると、こんな感じ。

psx基盤の配線

ラズパイに繋いでみて接続テストをする。 配線は色んなサイトに書かれているが、日本語サイトでは量が少ない。 GithubのRetropieページにかかれている内容でほぼ問題ないので、分かりやすく図に書いておくことにする。

GPIOの配線

GPIOの接続はGPIO4を基準に行う。2コンはGPIO7になる予定

GPIOの設定

そして、Retropieのsetting.shを起動して以下のように操作する。

設定画面の起動

$ sudo ~/RetroPie-Setup/retropie_setup.sh

「Setup / Configuration」を選択

SNESをDisable

SNESDev (Driver for the Retropie GPIO-Adapter) Disable SNESDev on boot and SNESDev keyboard mapping.

db9-gamecon ドライバのインストール

Gamecon & db9 drivers

再起動

$ sudo reboot

コントローラアクセステスト

GPIOセット

PSXは7番でGPIO4とGPIO7に設置するので、下記のようにコマンドする。 $ sudo modprobe gamecon_gpio_rpi map=0,0,7,7,0,0 $ jstest /dev/input/js0 Driver version is 2.1.0. Joystick (PSX controller) has 6 axes (X, Y, Rx, Ry, Hat0X, Hat0Y) and 12 buttons (BtnX, BtnY, BtnTL, BtnTR, BtnTR2, BtnSelect, BtnStart, BtnMode, BtnThumbL, BtnThumbR, ?, ?). Testing ... (interrupt to exit) Axes: 0: 0 1: 0 2:-32767 3:-32767 4:-32767 5:-32767 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off jstestコマンドで、キーの入力が確認できます。 パッドのボタンを押す度に画面の対象番号のON/OFFが切り替わるので、接続できているかどうかの確認ができます。 ※ここで接続ができていない場合は、コネクタが疎通していない事が多いので、確認してください。

modprobeコマンドでエラーが出る場合

下記のようにコマンドを叩いてエラーが出る場合があります。 僕もこのエラーに1日半ぐらい悩まされました。 $ sudo modprobe gamecon_gpio_rpi map=0,0,7,7,0,0 modprobe: FATAL: Module gamecon_gpio_rpi not found. まず、上記のgamecon & db9ドライバのインストールができていない場合にこのエラーが出るので setup.shを使って上記の操作を行なってください。 それでもエラーが出る場合は、RetropieのOSイメージが「RaspberryPi 1,0」のバージョンと「RaspberryPi 2,3」のバージョンがあるので 僕の環境では、このバージョンのインストールが間違っていたので、入れなおした所問題なくエラーが無くなりました。

起動時にGPIOを自動認識

$ sudo vi /etc/modules ファミコンコントローラと同じ感じで以下のように修正 #uinput #コメント合うとする gamecon_gpio_rpi map=0,0,7,7,0,0 これで一通りの設定が完了です。 再起動して動作させてみましょう。

参考ページ

Sony Playstation (PSX) joystick controller port pinout

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。