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

以前構築した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を起動して以下のように操作する。
設定画面の起動
1 |
$ 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
再起動
1 |
$ sudo reboot |
コントローラアクセステスト
GPIOセット
PSXは7番でGPIO4とGPIO7に設置するので、下記のようにコマンドする。
1 2 3 4 5 6 7 |
$ 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日半ぐらい悩まされました。
1 2 |
$ 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を自動認識
1 |
$ sudo vi /etc/modules |
ファミコンコントローラと同じ感じで以下のように修正
1 2 |
#uinput #コメント合うとする gamecon_gpio_rpi map=0,0,7,7,0,0 |
これで一通りの設定が完了です。
再起動して動作させてみましょう。
Pingback: スーパーファミコンのコントローラーの中にRaspberry Zero W + Retropie を入れたコントローラー兼レトロゲーム機 – ラズパイダ
起動時にどうしてもGPIOが認識されない場合で、コマンドでmodprobeを叩くと認識する場合は、下記の操作を行なってみてください。
このように記述する事で起動後に強制的にコマンドを叩くことができます。