※2024-01-03にリンク切れなどの情報を修正。
ミナサマオゲンキデショウカ。当サイトは月イチ更新のつもりで運営しているけど、気を抜くと月末更新になりそうなのが実に怖いと思う。
先月の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を半田付け
今回はブレッドボードに刺したままPro Microを使用し、ジャンパーワイヤで配線をするものとする。
PSメス端子
PSメス端子を販売している業者は限られており、購入する場合でも高くつく場合が多い。そのため、今回はジャンク品を利用する。
このPSコンバータ、ドライバーをインストールして使ってみたところ、反応が非常に悪く、途中でデバイスが認識されなくなってしまった。この様なジャンク品は精神的にも楽なので個人的にはオススメする。それで、配線の手順はというと
- コンバータを分解する
- 半田吸い取り線で半田を除去し、メス端子を取り出す
- ジャンパーワイヤをメス端子のリード線に半田付けする。
と、非常に簡単。吸い取り線を利用する場合は高出力の半田ごてが推奨される。基板の半田付けと兼用したい場合は出力切り替え機能のついた半田ごてをオススメする。
ブレッドボード
PSのオス端子のピンは左から、
- DATA
- COMMAND
- 7.5V
- GND
- 3.3V
- ATTENTION
- CLOCK
- UNKNOWN (不明)
- ACKNOWLEDGE
の9ピンで、この内の3.と8.と9.は今回は不使用。3.ピンの7.5Vは振動モーター用とのこと。
ピンアサインは以下の通り。PSマルチタップはジャンパーワイヤのメス、Arduinoは適合した端子(Leonardoのピンソケットならオス、MicroやPro Microのピンヘッダならメス)を使用すること。
PSマルチタップ | Arduino |
---|---|
1.DATA | 2 |
2.COMMAND | 3 |
4.GND | GND |
5,3.3V | 3.3V/VCC |
6.ATENTION | 4 |
7.CLOCK | 5 |
また、DATAピンとVCCピンの間に1kΩのプルアップ抵抗を挟む必要がある。100Ωでは逆に動かなくなったので1kΩは必要そうだ。どうやら、PSコントローラーは3.6Vで駆動しており、Arduinoの3.3Vではわずかに電圧が足りないらしい。プルアップ抵抗を挟まないと、ボタンと異なる入力などの誤作動が頻発して使い物にならない。
見ての通り、アイキャッチと全く同じ写真ではあるが…
制作工程 〜プログラミング編〜
事前に以下のライブラリをダウンロードする。
※2024-01-03にPSX Libraryのリンク切れを修正。
上記のライブラリ「PSX Library」「HID-Project」「TimerOne」をインストールしてからIDEを起動し、以下のスケッチを書き込む。配線を終わらせてから書き込まないと不具合が起こる点に注意。
スケッチは(TUT)氏の「【IIDX_INFINITAS】Arduinoを使って2つの方法で専コンを接続してみた」からダウンロードできる物を使用。後日Degharlが作成した、14ボタン対応のスケッチをアップロードする予定。(2024-01-03追記) ライブラリのレガシー化に伴い、新規で制作中。
制作した感想
「遅延のない環境で音ゲーがやりたい」という感情だけで突っ走った結果の産物ではあるが、快適な音ゲー環境が手に入っただけでなく、はんだごてやはんだ吸い取り線、ブレッドボードといった工具の入手や勉強も出来たため、かなりコストは掛かっているが今回はよしとしたい。
不足している情報が現段階では多いので、後々追記予定。記事の公開から4年以上の月日が経過したことにより情報やライブラリがレガシー化し、ワシよりも高度な情報を提供する方も増えてきている。ワシもワシで新たな手法などを考えたため、新しく記事を書いて公開したいと考えている。
コメント
1kΩ抵抗器は何Wのものを使っていますか?
コメントありがとうございます。
この記事で制作したコンバーターで使用した抵抗器についてですが、知り合いが使っていたパーツの余りをおすそ分けしてもらったもので、ワット数などの情報はロストしている状態です。申し訳ありません。
この抵抗器でやるコトはというとプルアップなので、ワット数などはさほど重要ではないと思います。
抵抗器云々を除いてもこの記事には不備が多いのでいずれ書き直さないとね…