PICを使ってPCからPS3をコントロールしてみる
サザンの神様
今回はPIC18F14K50というマイコンを使い、PCをPS3のコントローラーの代わりにしてみようと考えました。

片腕を負傷した知り合いから”片手でもPS3で遊ぶことができるような方法がないかな”という相談がありました。
さすがに片手でPS3コントローラーを操作するのは無理だろうと答えましたが、ここである考えが頭に浮かんだのです。
PCをコントローラーの代わりに使えば可能かもしれない・・・

しかし、そのためにはかなり自由自在な設定ができる制御用のアプリが必要です。
そして、2013年5月・・作ってしまいました。
それは・・・USBの制御に長けたPICを使って自作基盤とPS3を通信させ、PCアプリからは必要なキーデータをRS232C通信を使って自作基盤に送り込むというものです。
これを”PS3コントロールコンバータシステム”と呼ぶことにします。
   
まずはこのシステムがどんなものなのかをイメージするための動画を用意しました。
 
 
 
   
   
 
   このシステムへのチャレンジに当たり、ちょっとした特典を用意しました。
 PS3コントローラーをPCへ接続して使用できるようにしました。 (Ver2.02以上)
 具体的には、
PS3コントローラーのUSBケーブルをPCに差し込んで、DirectXを使ったゲームをPS3コントローラーでプレイできるということです。
ゲームで使用するキーボード上のキーは、自由にコントローラーへ宛がうことが可能です。また、
PCのゲーム等に対してマクロ再生を使うこともできます(Ver2.22以降)。
Ver3.00以降からは最大で10ケのマクロを登録できるようにしました。
好きなコントローラーボタンやレバーの組み合わせにより10種類のマクロを発動させることができます。
マクロにはマウスカーソルの移動も一緒に組み込まれるようになっていて、実マウス操作をマクロによって再生することや、PC画面自体に対してではなく
プレイしているアクティブウィンドウ内に対してのマウスカーソル移動をマクロ再生できるのです。
 PCで動作させるためのPS3コントローラードライバには色々なものがありますが、カーソルキーがアナログジョイスティックに宛がわれていたりして不便に思いました。
 そこで、ネット上で公開されているPS3コントローラードライバを使い、ここからSlimDXを使ってデータを取得、更にデータを変換してPC上でプログラマブルに使用できるようにしました。
連射機能や再生マクロ機能等、PS3コントローラーをPCに接続して自由自在に使えるのです!!!

PS3コントローラー接続設定の説明

 
バグ抜きも進んだところで、そろそろDirectX関連の一部をリリースしましょう!!!今まで入ることができなかった設定部に入ることができるようにしました。Ver3.00より、自作基盤がなくてもPC上のアプリに対してPS3コントローラー操作をプログラマブルに設定できます。
  只今、続編アプリ設定方法動画を作成しています。
 まずは、”セットアップ編”と”アプリ設定初級編”を製作しました!
 
 
PS3コンバータのセットアップ動画
<PS3コントローラーコンバータセットアップ編>
PS3コンバータアプリ設定初級編動画
<コンバータアプリ設定初級編>

 
 
<PS3コンバータセットアップ編> <コンバータアプリ設定初級編>
 
 

<続編動画作成中>

動画が完成したらRSSフィードにて配信報告します!

http://southernwav.com/SW/rss20.xml

 
   
このシステムにはPIC18F14K50を搭載した
自作コンバータボードが必要です。
PS3コンバータ回路図1
<PS3コンバータボード回路図>
PS3コンバータをPS3へUSB接続した際に、10uFの電解コンデンサが悪さすることがあるようです。
USBケーブルを非常にゆっくりと差しこめば問題はないようですが、通常実用的に問題がありそうなので、上図の赤×が付いている10uF電解コンデンサは外してしまった方がいいようです(自作基盤作成動画内には10uF電解コンデンサを接続するシーンがあるので注意)。
 
 
PIC・・知らない人が聞けば一体何者なのか想像もつかないでしょう。
 PS3コンバータ零号機<零号機プロトタイプ>

赤枠で囲まれた20ピンの足を持つICが”PIC18F14K50”です。
このICの中にはPC上で作成されたプログラムが書き込まれているのです。ICに電源が入ると書き込まれたプログラムが動き始めてシステムが起動します。
画面中心部右付近に配線によって浮いているのは”USBミニBプラグ”です。写真だと分かり辛いですがPS3コントローラーに差し込むUSBケーブルと同型です。
右上に見えるのはD-SUB9ピンコネクタとスイッチです。更にPICの左側には、16ピンの”RS232Cコンバータ”というシリアル通信に欠かせないICが載っています。
思い起こせばこの試作機には何度となく泣かされました。すぐに通信不良が発生するし、いきなり起動しなくなるし、ICは抜き辛いし、持ち運びにも神経使うし・・・・でも、完成までの一喜一憂が詰まった、まさに我が魂が込められた作品なのです。
 
 
PS3コンバータ初号機
<PS3コンバータボード初号機>
 
 
アプリケーションの部分に関してはページ下方にダウンロードリンクがあります。システムにチャレンジする前に、解凍したアプリをシミュレーションで実行してみることをお勧めします。
今回制作するボードは上図の”初号機”と同タイプのものです。
回路図を見ると複雑そうで、経験のない人には”絶対無理”と感じられるでしょう。
でも作ってしまえば、”なんだこんなもん?”くらいにしか感じないはずです・・何事も”案ずるより産むがやすし”ということですね(制作動画も用意しました)。

どこでも手に入るユニバーサル基盤を始め、基盤に実装できるD-SUB9ピンコネクタおよびUSBミニBプラグ、ICやコンデンサ、抵抗、12MHzの発振子等を手に入れる必要があります。

ユニバーサル基盤は必ずガラスエポキシ等の高周波数でも安定動作するタイプを選びます。
セラミック発振子も必ず12MHz且つコンデンサ内蔵タイプのものを選びます。

回路はUSB2.0フルスピードモードで動作します。PICのコア部では12MHzをPLLによって4倍の48MHzまで上げて処理しています。12MHzでやりとりするためにはコア部はそれ以上のスピードでなければならないからです。
12MHz以外の発振子を使用しても動作しません(ホスト側とUSB通信接続できません)。

よく海外のオンラインゲームをやっていると、いきなりキーが反応しなくなったり一定方向に入りっ放しになったりすることがあります。
これは、同時押しできるキーボード上のキー数に関係していることが多く、各PCに付属しているキーボード種に依存します。
100個近くあるキーボード上のキーはスイッチなので、1つ1つから線を伸ばすのは大変なことです。そこで、いくつかのキーに共通するラインを設け、でも決して2つのキーが2ラインを共有することがないように配線してあるのです。
2つのキーでは共有されることがない配線ラインでも、たくさんのキーを同時押しすれば様々なラインが共有されることになり、どのキーを押しているのかがPC側で理解できなくなってしまいます。
ゲームで使用する同時押しキー数は、指の数や脳のパフォーマンスを考えると5、6個というところでしょう。最近は”Nキーロールオーバー”と呼ばれる非常に多数の複数キー同時押しが可能なキーボードも販売されています。
このPS3コンバータでは、ソフト上で”同時押”を設定できるようになっていることもあり、同時押し判別可能キー数をオーバーしないように注意する必要があります。
また、ソフト上での押下キーの判定は”グローバルフック”を使っています。スタートしているPS3コンバータアプリを最小化してもキー入力を拾うのでこちらも注意する必要があります。

Ver2.02(2013年10月公開)では、SlimDXを使用してジョイパッド等やPS3コントローラーをPCで使用できるようにしました。今のところ、Windows XP(x86ベース)とVISTA(x86ベース)、そしてWindows7(Ver2.22以降)とWindows8(Ver2.22以降)で動作確認済みです。

ゲームによっては、キーボードのカーソルキーで操作する方が、PS3コントローラーでプレイするよりもやり易いものがあるのは驚きでした。PS3コントローラーが無敵の万能ゲーム操作機器というわけではないようです。
SlimDXを動作させる場合は(ジョイパッド等も含むコントローラー類を接続する場合)、”SlimDXのRuntime”のインストールが必須です。また、PCにPS3コントローラーを認識させるためのドライバのインストールも必要となります。
セットアップ編動画を参考にしてPC環境を整えましょう。
 
   
     
 
  この”PS3コントロールコンバータシステム”はその名の通りPS3をPCでコントロールするものです。
自作基盤はPS3にダイレクトに接続するため、自作基盤に大きな問題があるとPS3本体を壊しかねません。
お決まりの断り文句ではありますが”
自己責任”でお願いします。
また、このシステムのプログラムに関わる部分の無断配信を禁止します。

自作にトライする方は、制作動画をよく見てからにした方がいいと思います。動画内で赤字表示となっている部分には特に気を付けて下さい。
 
  PS3コンバータ自作基盤の配線図
上図はハンダ配線図です。グレーラインはハンダが盛ってある部分になります。また、赤い○や赤線は部品のピンや配線の縒り線を表しています。そして下図は実際の基盤のハンダ面です。配線図を元にして同じ様にハンダ付けしてあることが分かると思います。各図はクリックして拡大して見ることができます。動画は画質が粗いので、これらの配線図と見比べてみることをお勧めしておきます。5部構成の動画で全1時間45分となってしまいました・・動画容量を減らすために画質のクオリティを下げることにしました。
PS3コンバータ自作基盤のハンダ面

 
  <PS3コンバータボード制作動画>
制作動画はフルスクリーンで視聴することをお勧めします!

 
   
   
  <その1:D-SUBコネクタの取り付けとコネクタ周りのハンダライン作成>

 
 
   
   <その2:IC台周りのハンダライン作成と部品の取り付け>

 
   
   <その3:発振子等の部品の取り付け>

 
   
    <その4:USBミニBジャック等の取り付け>

 
   
   <その5:仕上げ>
 
 
ボード制作に必要な部品リストです。他にも制作工具であるハンダやコテ、配線等が必要です。
ユニバーサル基盤 約4.5cm×約7.5cm程度以上の大きさの
ガラスエポキシタイプを使用します 
 1個
写真_ユニバーサル基盤
 PIC18F14K50 秋月電子通商で手に入れることもできます  1個
写真_PIC18F14K50
 ADM232A RS232CコンバータIC   1個
写真_RS232CコンバータIC
 セラミック発振子 必ず12MHzで内蔵コンデンサタイプのものを使用します   1個
写真_12MHzオシレータ
16ピンIC台  IC(ADM232A)の脱着を可能にするICの差し込み台  1個
写真_18ピン端子台
20ピンIC台  IC(PIC)の脱着を可能にするICの差し込み台  1個
写真_20ピン端子台
0.1uFコンデンサ 耐圧30V以上のセラミックコンデンサ
(”104”と表記されている) 
 5個
写真_0.1uFコンデンサ
0.47uFコンデンサ 耐圧30V以上のセラミックコンデンサ
(”474”と表記されている) 
 1個
写真_0.47uFコンデンサ
 電界コンデンサ 耐圧30V以上で10uF以上のタイプ
(±の極性があります) 
 1個
写真_10uF電解コンデンサ
金属皮膜抵抗 1/4W以上の1KΩ(1000Ω)抵抗   1個
写真_1KΩ抵抗
マイクロインダクタ 1mHの抵抗型コイル   1個
写真_マイクロインダクタ
D-SUBコネクタ ♀型9ピンで基板実装できるタイプを使用   1個
写真_D-SUB9ピンコネクタ
 USBミニBプラグ 基板実装できるタイプ
秋月電子でも手に入れることができます 
 1個
写真_USBミニB
<PS3コンバータボード制作に必要な部品リスト>

 
  PS3コントロールコンバータシステムアプリ”PS3コンバータ”のダウンロード!
PS3コントロールコンバーターシステムのDownload(Ver3.80)
PCモードの時間分解能を改善

PS3コントロールコンバーターシステムのDownload(Ver3.70)
コントローラー設定画面内にテーブルSave&Loadを追加した
マウス動作を録動せずにマウスボタンだけを録動できる機能を追加
録動&再生時のボタン動作の改善
PS3録動モードの録動開始ボタン2度押しのリセット問題を改善

PS3コントロールコンバーターシステムのDownload(Ver3.50)
コントーラーでLogicをプレイするための”Logicモード”を追加した
録動されていない状態での再生時の問題等を改善


PS3コントロールコンバーターシステムのDownload(Ver3.20)
マクロ再生の正確性を改善した
PS3モードでのマクロ再生に”連続再生”を追加した


PS3コントロールコンバーターシステムのDownload(Ver3.11)
コントローラージョイスティックとメインエディタ側のジョイスティック動作を重複できるようにした
マウス動作のエリアモードを追加
ウィンドウの大きさや位置を記憶&復元する機能を追加

PS3コントロールコンバーターシステムのDownload(Ver3.10)
マウス動作のバグを修正
様々なマクロを自由に組み合わせることができる”マルチマクロ機能”を追加

PS3コントロールコンバーターシステムのDownload(Ver3.00)
細かいバグの修正
自作基盤を繋がなくてもPC上のDirectXで動作するアプリをコントローラーで使用できるようにした
マクロの登録数とマウス位置復元ポイント数を増やした
アクティブウィンドウに対してアナログレバーによるマウス動作を行うことができるようにした

PS3コントロールコンバーターシステムのDownload(Ver2.30)
ネットパスのバグを修正
アナログジョイスティックの動作をレバー(POV)に割り振れるようにした
PS3コントローラーからマクロを発動できるようにした

PS3コントロールコンバーターシステムのDownload(Ver2.22)
DirectXで動作するゲームに対してマクロ機能が使用できるようにした
アナログジョイスティック高速回転機能を付けた
アナログジョイスティックをマウス動作できるようにした

PS3コントロールコンバーターシステムのDownload(Ver2.02)
PS3コントローラー等をPCに接続して、PC上のDirectXで動作するアプリやゲームをプログラマブルにキー設定して扱うことができるようにした

PS3コントロールコンバーターシステムのDownload(Ver1.12)
修正内容その1:アナログボタン感度を設定できるようにした(ゲームによっては、常に指がかかっているLRボタンの誤押下を防ぐために、押し感度を確認しにいくものがあるため)
修正内容その2:ポジ感光基盤制作用のパターン図を変更

PS3コントロールコンバーターシステムのDownload(Ver1.11)
修正内容その1:一時再生時の動作不良を修正

PS3コントロールコンバーターシステムのDownload(Ver1.01)

上のリンクから最新Zipファイル(現在Ver3.70)をダウンロードして解凍して下さい。

アプリのPCへのセットアップ方法や使い方は下記リンク先を参考にして下さい。

新しいVersionのPS3コンバータをダウンロードしてのアップデートの際には、”PS3 Keyboard.exe”の実行ファイルのみを上書き(もしくはコピー)してください。尚、Ver3.20からは”PS3 Keyboard_3.20”のように、実行ファイルの名前を変更しました。
同じ名前の実行ファイルのプログラム容量が変わってしまうと、セキュリティソフトにロックオンされてしまうことがあるからです。
したがって、ダウンロード後に解凍した”PS3 Keyboard_3.50”の方をコピーして実行するようにしてください。
(PS3 Keyboard.exeやPS3 Keyboard.exe_3.20をPS3 Keyboard_3.50.exeと入れ替える)

PS3コンバータのセットアップ
PS3コンバータの使い方 <メインエディタ編>
PS3コンバータの使い方 <ジョイスティックエディタ編>
PS3コンバータの使い方 <録動編(自動再生マクロ機能)>

PS3コントローラー接続設定の説明<DirectXアプリをプレイできる>
 

  Windows7等でこのアプリを動作させるためには、既述したSlimDXのインストールが必須です。
(SlimDX Runtime.NET4.0x86をインストール)
SlimDXが入っていない場合は、
PS3コンバータアプリの起動と同時に強制的に終了させられてしまうといった現象が起きることがあります。 
”PS3コンバータセットアップ編”動画を参照してSlimDXをインストールしてみましょう。
SlimDXダウンロード

また、セキュリティソフトのNortonを使用している場合は、”SONAR”に反応してメインのプログラムが削除されてしまうことがあります。
このPS3コンバータシステムはC#で開発したのですが・・恐らく、NetFrameworkベースで作られた未知のウィルスに対応するために、シマンテック社が考えた苦渋の対応策のように思います。
C#による開発環境ではWindows API等にもアクセスできるようになっており、処理速度は遅いものの結構深い所までいじくれるようになっているので、新種の凶悪なウィルスを作ることも可能なのでしょうね(私めはそんなことはしませんが)。
もし”SONAR”が反応する場合は、”設定”→”ウィルス対策”→”リスクを自動的に削除”のところを”確実性が高い場合のみ”から”確認”に変更してコンバータアプリを起動してみてください(正常起動後は、SONARの設定を元へ戻しておくことをお勧めします)。
また、なにかの問題が発生した場合にこのコンバータアプリを全面使用停止にするため、ネット上のパスワードを参照しにいくようにプログラムされています。SONARはこの辺りも指摘してくるはずですので、コンバータアプリ内の”接続コントローラー設定”ボタンが押せなくなった時には、ネット参照を一時許可してあげてください。
お決まりの文句ではありますが、自己責任において実行していただきますようお願いします。
 
さて、ここまでは誰にでも到達できるのではないかと思います。
しかし、エンジニアの方達であれば経験済みであろう”PICへのプログラムの書き込み”は経験のない人々が本格的に取り組むに当たっては”いばらの道”となりましょう。

ではでは、できるだけ簡潔にいきましょう!PICへの書き込みの説明の始まりです。
PIC18F14K50にプログラムを書き込む編
 
   ホームへ  
   Southernwave