作業備忘録

作業メモ、趣味メモを暇に任せて書きます。

Arduino Uno R3にPS4コントローラーをBluetoothで繋いでみた

昨年の半年くらい前の投稿から、場所を変えながらずっと長期出張してます。(泣)

 

そんな中、宿泊場所が秋葉原に近いので頭の片隅で弄りたいな~と思ってたArduinoに手を出しました。

プログラムはともかくハードに関しては門外漢の私ですが、Arduinoを使って簡単にモーター、サーボなど動かして遊んでます。

 

今回はタイトル通り、ArduinoにPS4コントローラーをBluetoothで繋いでみました。

PS4コンとArduinoのUSB接続での確認もうまくいってます。

最終的にはPS4コンでサーボ2個、DCモーター2個の制御まで実装する予定。

 

■使ったもの

Arduino Uno R3

サインスマート製 USBホストシールド 2.0 *1

 ※ライブラリとサンプルコードは以下ののPS4BT使ってます。感謝感謝


felis/USB_Host_Shield_2.0 · GitHub

 

Bluetoothドングル(以下、全て動作確認しました)

 ・Buffalo BSBT4D09BK

 ・ELECOM LBT-UAN05C2

 ・Princeton PTM-UBT7

PlayStation4コントローラー *2

 

手順

PS4BTを使ったペアリングはPS3と違いUSBコード抜き差し無しでペアリング可能なので楽ちんです。

 

ライブラリの取り込みは省略。IDEのある"C:\Program Files\Arduino\libraries"フォルダに突っ込むだけですから。

 

①スケッチの例から「PS4BT」

f:id:high-sider:20150214225115j:plain

 

Arduinoマイコンに「PS4BT」サンプルを書き込む。初回書き込み時のソースはそのままでいいですが、ペアリング後に赤枠をコメントアウトします。

f:id:high-sider:20150214230031j:plain

 

③シリアルモニタを開くとシステムログが出力される。ソースにも書いてあるけど、文字化けするので通信速度は115200bpsを選択しておく。

以下の画像で止まったらSHAREボタンとPSボタンを同時押しのまま2秒前後?待つとmicroUSB近くのLEDが白く点滅するので、そこからペアリング開始です。完了のログ出力まで待つ。

f:id:high-sider:20150214230406j:plain

 

④赤線部分まで来てログ出力が止まったら、PS4コンとBTドングルのペアリングは済んでいるのでPSボタンを押して繋げてみる。

f:id:high-sider:20150214230252j:plain

 

⑤PSコンのLEDが青くなり。繋がったようです。

↓ボタン押し加減等が全部出てます。2点タッチパッドの触られている位置やコントローラーの傾きも検出できるようです。

f:id:high-sider:20150214231021j:plain

とりあえずPSボタンを押してリンクを切る。

 

⑤ソースに戻り、最初の赤枠をコメントアウトし、コメントアウトされていたコードを戻す。そして、編集後のコードでマイコンに書き込むと完了です。

一度ペアリングしてPSボタンを押せばリンクできるようになっているので、このコメント編集をすることで①~③の作業を起動のたびにする必要が無くなります。

f:id:high-sider:20150214231302j:plain

 

夢が広がる~。

L293Dを使ったモータードライブシールドも買ってあるのでやっと前に進めます。

*1:amazonで買ったら実は中身が全く違うもの(サインスマート Arduino互換 leonardo R3)で返品し、再購入というトラブルが・・・w

*2:PS4持ってないのに・・・(笑) 書いた当時持ってませんでしたが、結局MGS5が出たタイミングでPS4購入しました