くるまっさのブログ

資格試験や大学院入試の対策方法の紹介を中心としたブログ、でしたが最近はいろいろ。

ラジコンを作ろう!ArduinoとPS3コントローラをBluetoothで接続する方法


突然ですが、ラジコンを作ってみたいと思ったことはないでしょうか。

今日は、プレイステーション3(以下、PS3)のコントローラをつかって操作できるラジコンの作り方をご説明します。


Arduinoという小型のコンピュータとPS3コントローラを無線で接続して、ラジコンにつかえる無線モジュールを作成します。


 

 

システム構成


めちゃくちゃ単純です。

 

PS3コントローラはBluetoothで通信しますので、ArduinoにBluetoothを受信できるパーツ(Bluetoothドングル)を接続すれば終わりです。

ただし、Bluetoothドングルは直接Arduinoに接続できないので、USBホストシールドというものを利用します。

また、今回使用するUSBホストシールドは、一般的なArduino UNOには対応しておりません。Arduino Mega 2560を使用します。


システム構成




パーツ一覧と必要な道具


最低限、以下の6つがあればできます。

  1. PS3コントローラ(DUALSHOCK3)
  2. USB(Mini-B - Standard-A)ケーブル ※コントローラをホストシールドと接続するためのもの
  3. Arduino MEGA2560 R3ボード  + USB ケーブル
  4. USBホストシールド 2.0 for Arduino
  5. Bluetooth ドングル
  6. ハンダごてとハンダ

PS3コントローラ(DUALSHOCK3)は、家に落ちていたSony純正のものを使いました。Amazonでも購入できます
※サードパーティー製品については、対応しているか確認しておりません

コントローラは、使用前にしっかり充電しておきましょう!

 

PS4がやってきてから長い眠りについていた我が家のPS3コントローラ





Arduino、ホストシールド、ドングルについては全てAmazonで購入しました。

Bluetoothドングルは、何を使っても良いというわけではなく、対応しているものとそうでないものがあるようです。

私が購入したものは利用できましたので、是非参考にしてみてください。

Arduino Mega 2560

 

USBホストシールド2.0

 

Bluetoothドングル







ちなみに、私はコントローラと接続後に、モーターも回してみたのですが、

をモータードライバとして使用しました。この方法は、また別の記事でご紹介できればと思います。

ちなみに、こちらの「ELEGOO UNO キット レベルアップ  チュートリアル付 uno mega2560 r3 nanoと互換 Arduino用」という商品は、L293DとArduino UNO R3を含む、多くのパーツがセットになっており、大変おすすめです。

私も初めてのArduinoはこのセットで始めました。

Arduinoをこれから始めるという方は、是非チェックしてみてください。




作業1 ホストシールドのハンダブリッジ


さっそく組み立ててみましょう。

まず、私の購入したホストシールドは、使用する電圧に応じて適当な部分をハンダブリッジする必要がありました。

以下の写真の通り、VBUSの5Vと、GND付近の3.3Vと5Vの、計3か所をハンダブリッジします。


3ヶ所をハンダブリッジする




作業2 Arduinoとホストシールドの接続


では、Arduinoとホストシールドを接続しましょう。6ピンの位置をしっかり合わせて差し込みます。

私の購入したホストシールドは、若干質がいまいちで横から見ると少し傾きましたが、まあ気にしないことにします。


このように差し込みます

 

微妙に傾いていますが、気にしない





作業3 Arduino IDEの準備


Arduinoの公式サイトから、Arduino IDEをダウンロードします。最新版でないと、エラーになることがありますのでご注意ください。※私は1.8.7でエラーが出て、1.8.8に変えたところ成功しました


その後、ホストシールド用のライブラリを追加します。IDEを起動し、

スケッチ > ライブラリをインクルード > ライブラリを管理

をクリックします。



USB HOST などで検索すると、USB Host Shield Library 2.0というものが見つかりますので、こちらをインストールします。




続いて、PS3コントローラ用のサンプルプログラムを開きましょう。

スケッチ例 > USB Host Shield Library 2.0 > Bluetooth > PSBT3

をクリックします。これで、サンプルプログラムが開けるはずです。

最初は、このプログラムをいじらずにそのまま書き込んでみましょう。




最後に、ボードの設定がMega 2560になっているか確認してください。

私の場合は、これがUNOになっているせいで何度かエラーになりました。




作業4 PS3コントローラの接続


プログラムも準備できたところで、さっそく接続してみましょう。

手順が少し複雑なので、注意して進めてください。

  1. ArduinoをPCに繋ぎ、プログラムを書き込む
  2. ホストシールドにドングルを差し、ドングルが青く点滅したらドングルを抜く
  3. 充電済みのPS3コントローラをUSBケーブルでホストシールドにつなぐ
  4. ちょっと待って(私は3分くらい待ったが、こんなに待たなくていい気はする)、PS3コントローラを抜く
  5. 再びドングルを指す
  6. Arduinoのリセットボタンを押す
  7. PS3コントローラのPSボタンを押す
 
これで、PS3コントローラの1番のLEDが光れば成功です。
 
 



作業5 PS3コントローラからの入力の表示


最後に、PS3コントローラからの入力をPC画面上に表示しましょう。

Arduino IDEで、シリアルモニタを開けば入力が表示されるはずです。

文字化けしている場合は、右下に表示されているbpsがプログラム(おそらく115200 bps)と合っていないことが考えられるので、修正してください。




おわりに


このように、Arduinoは非常に簡単にPS3コントローラと接続することができます。

私自身、初めて無線通信用のモジュールを作ってみましたが、このシンプルさに感動しました。

高校生のときにこれを知っていれば、もうすこしまともなロボットを作っていたかもしれません、、


今後も、気が向いたら電子工作の記事も上げていきたいと思います!

それではまた!