Arduino UNOの互換ボードとUSB Host Shield 2.0互換ボードをAmazonで入手。
Arduino + USB Host Shield 2.0 + USB Bluetoothドングルと、ここのライブラリを使うと、PS3コントローラやWiiリモコンがArduinoで使えるようになるらしいので試してみた。
PS4 controllerも対応してるらしい。
・felis-USB_Host_Shield_2.0 · GitHub
”USB Host Library”を使うための手順。(2014.03.13追記)
1.ここからファイルをダウンロードする。
・https://github.com/felis/USB_Host_Shield_2.0/archive/master.zip
2.ダウンロードしたファイルを適当な所に解凍し、フォルダ名を"USB_Host_Shield_20"に変更する。
3."USB_Host_Shield_20"フォルダを”arduino-1.0.5\libraries”にコピーする。(arduino-1.0.5の場合)
4.arduino IDEを起動するとメニューの
ファイルー>スケッチの例ー>USB_Host_Shield_20
に、サンプルプログラムが表示されるようになる。
まず、Wiiリモコンの接続を試してみた。
接続できた。
ただし、接続がうまくいくBluetoothドングルとうまくいかないドングルがあるので注意。
うまくいったのはこれ。
・PLANEX BT-MICRO4
・iBUFFALO BSBT4D09BK
使用したのはライブラリ付属のサンプルプログラム”Wii”
PS3コントローラを試そうと思ったがずっと放置してたので充電不能になってる。orz
仕方がないので有線で接続してみた。
うまくいった。
使用したのはライブラリ付属のサンプルプログラム”PS3USB”
なんとかPS3コントローラの充電が出来たのでBT接続を試してみたらこちらもうまく行った。
ただし、接続がうまくいくBluetoothドングルとうまくいかないドングルがあるので注意。
うまくいったのはiBUFFALO BSBT4D09BK 。(PLANEX BT-MICRO4は試していない)
使用したのはライブラリ付属のサンプルプログラム”PS3BT”
PS3コントローラをBT接続で使うには、PS3コントローラにBluetoothドングルのMACアドレスを書き込む必要がある。
手順は、これ。
1.Arduinoに”PS3BT”を書き込んでおく。
2.USBホストシールドにBluetoothドングルを挿してArduinoの電源を入れる。
3.電源を切らずにBluetoothドングルを抜き、代わりにPS3コントローラをUSBケーブルで接続する。
(この時BluetoothドングルのMACアドレスがPS3コントローラに書き込まれる)
4.PS3コントローラのUSBケーブルを抜き、再度Bluetoothドングル挿す。
5.念のためArduinoをリセットし、PS3コントローラのPSボタンを押す。
6.PS3コントローラのLEDがしばらく点滅して止まれば接続できているはず。
この動画が参考になるが、長いので12分あたりから見るのがいいと思う。(^^;)
(ただし、この動画と違って書き込みに関するログがシリアルに出力されなかった。何か設定を見落としたか...)
・How to Connect a PS3 controller to an Arduino with a USB host shield and Bluetooth dongle
”settings.h”のENABLE_UHS_DEBUGGING を 1 にするとデバッグ情報が出力されるようだが、メモリ不足になって書き込めなかった。(2014.3.13追記)
Arduino Leonardoでも”PS3BT”を試してみたが、メモリ不足で書き込めなかった。
Leonardoは使えるメモリがUNOより若干少ないようだ。
PS3コントローラでRCサーボを動かしてみた。
RCサーボの電源は写真のようにArduinoから取ると電流不足で誤動作する可能性があるので注意。
使用したプログラムはこれ。(無保証)
動画はこちら。こちらはちゃんとRCサーボの電源を外部からとるようにしている。
Bluetooth SPP接続、Win7の時はmbedやGR-SAKURA相手でもうまくいっていたのに、Win8にしてからうまくいかなくなってしまった。(BluetoothのドライバはWin8標準の物を使用)
SBDBTのSPPはWin8でもうまくいく。何が違うのかな。
Auduino + USBホストシールドでもWin8でBleutooth SPP接続を試したがこれもNG。
ペアリングはできるが、TeraTermから接続しようとするとエラーになる。mbedのときと同じ現象。
PS3コントローラでモータを回してみた。
Arduinoとシールドを組み合わせれば超簡単。
Adruino + Mortorシールド + USBホストシールド + USB Bluetoothドングル使用。
今回は、”Arduino Duemilanove”を使ってみた。
使用したMortorシールドはこれ。
使用したプログラムはこれ。(無保証)
動画はこちら。
PS3コントローラで操縦するクローラロボットも簡単。
Arduino用にはモバイルバッテリーを使っている。
参考リンク
・felis-USB_Host_Shield_2.0 · GitHub
・How to Connect a PS3 controller to an Arduino with a USB host shield and Bluetooth dongle