忍者ブログ

≪ 前の記事次の記事 ≫

PICでPS3コントローラ。

PIC24FJ64GB002にBluetoothアダプタをつないで遊ぶ話。

SBDBTの、PS3のコントローラと接続できるファームが新しくなってました。
http://runningele.web.fc2.com/

というわけで、マイコンでUSBを扱う感覚を取り戻すのを兼ねて、PIC24FJ64GB002で動くように改変してみました。
コンパイルターゲットをPIC24FJ64GB002にして、p24FJ64GB002.gldを追加して、ソース中のPIC24FJ64GB004をPIC24FJ64GB002に書き換えて、global.hの記述をそれっぽく修正して動作確認。Heapとかいじったけど必要なかったかな?

確認した動作は、
①BluetoothでPS3コントローラと無線通信
②USBケーブルでPS3コントローラと通信
③SPPでのパソコンとの無線通信
の3つ。

対象PS3コン: sixaxis(初期の振動しないやつね)、Dualshock3

①PS3コン(Bluetooth)
PICのUSBにBluetoothのドングルを接続してPS3のコントローラの情報を読めることを確認。
ちょいとソースをいじって、加速度センサとジャイロセンサ、各ボタンのアナログ情報を得ることが出来ました。
ただし、sixaxisではジャイロセンサの情報が出ていない!なぜだっ!

②PS3コン(USBケーブル)
PICのUSBとPS3のコントローラを直接有線で接続して、コントローラの情報を読めることを確認。①と同様の情報を読み取ることが出来ました。
こちらも問題があって、PSボタンを押した後数秒しか認識しない。。。またPSボタンを押すと数秒は動くけど…
そしてDualshock3だとなぜか弱く振動し続ける謎現象。(そういえば振動機能なんてあったな。
以前やった時は普通に使えたと思ったんだけど…

③SPP
Bluetoothのプロトコルの一つでシリアル通信と同じように使えます。
PICとパソコンそれぞれにBluetoothのアダプタを接続して、仮想COMポートとして認識させます。そうするとteratermなどで通信ができます。
 パソコン→(Bluetooth)→PIC→(USBシリアル変換FT232RL)→パソコン
パソコンで2つteratermを起動して、片方のteratermで文字を入力するともう一方に同じ文字が表示されることを確認できました。逆方向の通信もおっけー。


とりあえず今回は動作確認と各種アナログ値の取り出しまで。
コントローラに何か情報を与えると振動とか制御できるんだろうなーとか思いつつPS3コンのプロトコル情報を探すのでした。
SPP使えるのはなかなか便利かも。スマホとつなげたりできそう。

拍手

PR

Comment (0) | ▲TOP

Comment

  • メールアドレスは入力しても管理画面でしか表示されません。
  • コメント投稿時にパスワードを設定していた場合のみ、名前をクリックすると編集出来ます。

Vodafone絵文字 i-mode絵文字 Ezweb絵文字