今回は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コントローラーコンバータセットアップ編><コンバータアプリ設定初級編>ブラウザによってはビデオを再生できません。ブラウザによってはビデオを再生できません。<コンバータアプリ設定初級編><続編動画作成中>動画が完成したらRSSフィードにて配信報告します!http://southernwav.com/SW/rss20.xmlこのシステムにはPIC18F14K50を搭載した自作コンバータボードが必要です。<PS3コンバータボード回路図>PS3コンバータをPS3へUSB接続した際に、10uFの電解コンデンサが悪さすることがあるようです。10uF電解コンデンサを接続するシーンがあるので注意)。PIC・・知らない人が聞けば一体何者なのか想像もつかないでしょう。<零号機プロトタイプ>赤枠で囲まれた20ピンの足を持つICが”PIC18F14K50”です。このICの中にはPC上で作成されたプログラムが書き込まれているのです。配線によって浮いているのは”USBミニBプラグ”です。写真だと分かり辛いですがPS3コントローラーに差し込むUSBケーブルと同型です。右上に見えるのはD-SUB9ピンコネクタとスイッチです。PICの左側には、16ピンの”RS232Cコンバータ”というシリアル通信に欠かせないICが載っています。思い起こせばこの試作機には何度となく泣かされました。通信不良が発生するし、いきなり起動しなくなるし、ICは抜き辛いし、持ち運びにも神経使うし・・・・でも、完成までの一喜一憂が詰まった、まさに我が魂が込められた作品なのです。<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で使用できるようにしました。XP(x86ベース)とVISTA(x86ベース)、そしてWindows7(Ver2.22以降)とWindows8(Ver2.22以降)で動作確認済みです。ゲームによっては、キーボードのカーソルキーで操作する方が、PS3コントローラーでプレイするよりもやり易いものがあるのは驚きでした。PS3コントローラーが無敵の万能ゲーム操作機器というわけではないようです。SlimDXを動作させる場合は(ジョイパッド等も含むコントローラー類を接続する場合)、”SlimDXのRuntime”のインストールが必須です。PCにPS3コントローラーを認識させるためのドライバのインストールも必要となります。セットアップ編動画を参考にしてPC環境を整えましょう。ツイートこの”PS3コントロールコンバータシステム”はその名の通りPS3をPCでコントロールするものです。自作基盤はPS3にダイレクトに接続するため、自作基盤に大きな問題があるとPS3本体を壊しかねません。お決まりの断り文句ではありますが”自己責任”でお願いします。このシステムのプログラムに関わる部分の無断配信を禁止します。自作にトライする方は、制作動画をよく見てからにした方がいいと思います。動画内で赤字表示となっている部分には特に気を付けて下さい。上図はハンダ配線図です。グレーラインはハンダが盛ってある部分になります。赤い○や赤線は部品のピンや配線の縒り線を表しています。下図は実際の基盤のハンダ面です。配線図を元にして同じ様にハンダ付けしてあることが分かると思います。各図はクリックして拡大して見ることができます。動画は画質が粗いので、これらの配線図と見比べてみることをお勧めしておきます。5部構成の動画で全1時間45分となってしまいました・・動画容量を減らすために画質のクオリティを下げることにしました。<PS3コンバータボード制作動画>制作動画はフルスクリーンで視聴することをお勧めします!<その1:D-SUBコネクタの取り付けとコネクタ周りのハンダライン作成><その2:IC台周りのハンダライン作成と部品の取り付け><その3:発振子等の部品の取り付け><その4:USBミニBジャック等の取り付け><その5:仕上げ><その1:D-SUBコネクタの取り付けとコネクタ周りのハンダライン作成><その2:IC台周りのハンダライン作成と部品の取り付け><その3:発振子等の部品の取り付け><その4:USBミニBジャック等の取り付け><その5:仕上げ>ボード制作に必要な部品リストです。他にも制作工具であるハンダやコテ、配線等が必要です。自作基盤を繋がなくても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へのセットアップ方法や使い方は下記リンク先を参考にして下さい。Keyboard.exe”の実行ファイルのみを上書き(もしくはコピー)してください。Keyboard_3.20”のように、実行ファイルの名前を変更しました。同じ名前の実行ファイルのプログラム容量が変わってしまうと、セキュリティソフトにロックオンされてしまうことがあるからです。Keyboard_3.50”の方をコピーして実行するようにしてください。<録動編(自動再生マクロ機能)>PS3コントローラー接続設定の説明<DirectXアプリをプレイできる>Windows7等でこのアプリを動作させるためには、既述したSlimDXのインストールが必須です。Runtime.NET4.0x86をインストール)SlimDXが入っていない場合は、PS3コンバータアプリの起動と同時に強制的に終了させられてしまうといった現象が起きることがあります。”PS3コンバータセットアップ編”動画を参照してSlimDXをインストールしてみましょう。SlimDXダウンロードまた、セキュリティソフトのNortonを使用している場合は、”SONAR”に反応してメインのプログラムが削除されてしまうことがあります。このPS3コンバータシステムはC#で開発したのですが・・恐らく、NetFrameworkベースで作られた未知のウィルスに対応するために、シマンテック社が考えた苦渋の対応策のように思います。API等にもアクセスできるようになっており、処理速度は遅いものの結構深い所までいじくれるようになっているので、新種の凶悪なウィルスを作ることも可能なのでしょうね(私めはそんなことはしませんが)。”SONAR”が反応する場合は、”設定”→”ウィルス対策”→”リスクを自動的に削除”のところを”確実性が高い場合のみ”から”確認”に変更してコンバータアプリを起動してみてください(正常起動後は、SONARの設定を元へ戻しておくことをお勧めします)。なにかの問題が発生した場合にこのコンバータアプリを全面使用停止にするため、ネット上のパスワードを参照しにいくようにプログラムされています。SONARはこの辺りも指摘してくるはずですので、コンバータアプリ内の”接続コントローラー設定”ボタンが押せなくなった時には、ネット参照を一時許可してあげてください。お決まりの文句ではありますが、自己責任において実行していただきますようお願いします。ここまでは誰にでも到達できるのではないかと思います。エンジニアの方達であれば経験済みであろう”PICへのプログラムの書き込み”は経験のない人々が本格的に取り組むに当たっては”いばらの道”となりましょう。できるだけ簡潔にいきましょう!PICへの書き込みの説明の始まりです。@NANJUN_48さんをフォローSouthernwave。