Pro Microを使って音ゲー向け低遅延PSコンバータを作る

低遅延PSコンバータ配線図

ミナサマオゲンキデショウカ。当サイトは月イチ更新のつもりで運営しているけど、気を抜くと月末更新になりそうなのが実に怖いと思う。

先月のPSマルチタップコンバータPSマルチタップコンバータに引き続き、今月もArduinoを使ってPlayStationコントローラーのコンバータを制作していた。実はあの量の遅延には満足出来ず、ハードオフのジャンクコーナーを物色したり、半田ごてを買い直したり、大須でパーツを買い漁ったりと、制作内容の割には大掛かりな前準備で数多の時間や金を費やしてしまった上で今回のコンバータの制作に取り掛かることになった。手間をかけただけの価値はあったと思うが…?

※Degharlの技術不足で初心者向けのサポートにまで手が回らないので、基礎知識は各自で習得をお願いします。また、開発環境やPro Microの設定なども事前に済ませている前提で話を進めます。

コンバータの性能

今回も簡潔にマトメさせてもらうと、

  • とにかく遅延が少ない。すっごく少ない。
  • ハットスイッチの概念が無く、十字キーが独立したボタンとして認識される。
  • キーボード入力として処理される為、ゲームパッドに対応していないソフトでも別途ソフト無しで使用可能。

遅延が少ない、と書いたのは市販のコンバータと比べて遅延が少ないのもあるが、遅延自体は僅かながらに発生する為。私は音ゲーで運用しているのだが、元からbeatmania IIDXでDJ LEVEL AAAを出せるような実力を持っていない為、体感としてはPS2版と変わらない様に感じる。

PSマルチタップコンバータと比べたデメリットととしては、

  • 接続できるコントローラーは1つのみ。
  • アナログスティックは使えない。L3とR3も使えない?

このデメリットはライブラリの「PSX Library」の仕様によるもので、単体接続のみが想定され、L3とR3以外のボタン入力のみを読み取っている為と思われる。

必要なモノ

ヒンモクコストコウニュウカカクカイセツ
Arduino Leonardo及び互換品。約300円~3000円2個セット1000円今回はLeonardoの互換品のPro Micorの互換品を利用。互換品の場合、ATMega32U4が搭載されたモノを強く推奨する。
PSメス端子約300円〜2ポートジャンク540円ジャンク品からの部品取りが主。理由は後述。
ブレッドボード約300円〜1000円2個セット300円コンパクトさと価格で170穴を選択。
ジャンパーワイヤ オス-オス約200円〜500円120本セット479円ブレッドボードとPSメス端子を繋ぐ目的で使用。
1kΩ抵抗器1本5円〜、100本180円〜0円プルアップ抵抗に使用。コレが無いと動作の不具合が起こる。

制作工程 〜配線編〜

Pro Micro

ブレッドボードにPro Micro

ブレッドボードにPro Microを刺す

↑のイメージは前回使用したPro Microを流用してブレッドボードに刺しただけのモノであるが、以下の工程で同様の事が出来る。

    1. ブレッドボードにピンヘッダ を刺し込む
    2. Pro Microをピンヘッダに嵌める
    3. ピンヘッダとPro Microを半田付け

今回はブレッドボードに刺したままPro Microを使用し、ジャンパーワイヤで配線をするものとする。

PSメス端子

PSメス端子を販売している業者は限られており、購入する場合でも高くつく場合が多い。そのため、今回はジャンク品を利用する。

ジャンクPSコンバータの中身

基板丸見え~

このPSコンバータ、ドライバーをインストールして使ってみたところ、反応が非常に悪く、途中でデバイスが認識されなくなってしまった。この様なジャンク品は精神的にも楽なので個人的にはオススメする。それで、配線の手順はというと

  1. コンバータを分解する
  2. 半田吸い取り線で半田を除去し、メス端子を取り出す
  3. ジャンパーワイヤをメス端子のリード線に半田付けする。

と、非常に簡単。吸い取り線を利用する場合は高出力の半田ごてが推奨される。基板の半田付けと兼用したい場合は出力切り替え機能のついた半田ごてをオススメする。

ブレッドボード

低遅延PSコンバータ配線図

低遅延PSコンバータ配線図

PSのオス端子のピンは左から、

  1. DATA
  2. COMMAND
  3. 9V
  4. GND
  5. 3.3V
  6. ATTENTION
  7. CLOCK
  8. NC
  9. ACK

の9ピンで、この内の3.と8.と9.は今回は不使用。とあるPS2用ライブラリではほぼ全てのピンを使い、9Vは振動に使われるらしいのだが…?

ピンアサインは以下の通り。PSマルチタップはジャンパーワイヤのメス、Arduinoは適合した端子(Leonardoのピンソケットならオス、MicroやPro Microのピンヘッダならメス)を使用すること。

PSマルチタップArduino
1.DATA2
2.COMMAND3
4.GNDGND
5,3.3V3.3V/VCC
6.ATENTION4
7.CLOCK5

また、DATAピンとVCCピンの間に1kΩのプルアップ抵抗を挟む必要がある。プルアップ抵抗を挟まないと動作不具合が発生するため。

見ての通り、アイキャッチと全く同じ写真ではあるが…

制作工程 〜プログラミング編〜

事前に以下のライブラリをダウンロードする。

Arduino Playground - PSXLibrary
GitHub - NicoHood/HID: Bring enhanced HID functions to your Arduino!
Bring enhanced HID functions to your Arduino! Contribute to NicoHood/HID development by creating an account on GitHub.
Google Code Archive - Long-term storage for Google Code Project Hosting.

上記のライブラリ「PSX Library」「HID-Project」「TimerOne」をインストールしてからIDEを起動し、以下のスケッチを書き込む。配線を終わらせてから書き込まないと不具合が起こる点に注意。

このスケッチは「【IIDX_INFINITAS】Arduinoを使って2つの方法で専コンを接続してみた」からダウンロードできる物を使用。後日Degharlが作成した、14ボタン対応のスケッチをアップロードする予定。

制作した感想

「遅延のない環境で音ゲーがやりたい」という感情だけで突っ走った結果の産物ではあるが、快適な音ゲー環境が手に入っただけでなく、はんだごてやはんだ吸い取り線、ブレッドボードといった工具の入手や勉強も出来たため、かなりコストは掛かっているが今回はよしとしたい。

不足している情報が現段階では多いので、後々追記予定。

コメント

  1. かとらす より:

    1kΩ抵抗器は何Wのものを使っていますか?

  2. Degharl より:

    コメントありがとうございます。
    この記事で制作したコンバーターで使用した抵抗器についてですが、知り合いが使っていたパーツの余りをおすそ分けしてもらったもので、ワット数などの情報はロストしている状態です。申し訳ありません。
    この抵抗器でやるコトはというとプルアップなので、ワット数などはさほど重要ではないと思います。

    抵抗器云々を除いてもこの記事には不備が多いのでいずれ書き直さないとね…

タイトルとURLをコピーしました