2014年4月14日月曜日

USBゲームパッドコントロールタンク





以前、arduinoとPCをbluetoothで接続し、仮想シリアルポート経由でターミナルソフトからコマンドを送って操作するリモコンカーを作りました。
http://cranberrytree.blogspot.jp/2012/12/bluetooth.html

今回は、タミヤのタンク工作基本セットに載せ替え、さらにUSBゲームパッドで操作できるようにします。

タミヤ タンク工作基本セット
http://www.tamiya.com/japan/products/70108tracked_vehicle/

このセットに含まれるギアボックスでは、モーター一つで両方のキャタピラを回すため、旋回等の操作ができませんので、リモコンカーで使ったツインモーターギアボックスを移植しました。
ユニバーサルプレートやツインモーターギアボックス、モーターはすでに持っている場合、「楽しい工作シリーズ No.100 トラック&ホイールセット」でもいいと思います。


arduino、モータードライバシールド、bluetoothモジュール(SBDBT:PC用bluetoothドングルを使うマイコン基板)に変わりはありません。

arduinoのスケッチに若干修正を加え、ターミナルソフト(tera term)で操作できることを確認。
QWE
ASD
ZXC で8種の移動と「S」キーでストップ、
「R」「F」キーで速度の増減、「T」「G」キーでまっすぐ走らせるためのトリム。
モーター用バッテリーは1.2Vx4。
arduino、モーターシールド、bluetoothモジュール用に9V充電池。
モータードライバTA7291Pを2個使ったモーターシールドのピンアサインは、スケッチから推測するか、「モーター」ラベルのついた過去の記事を参照ください。




◆USBゲームパッドで操作

processingでゲームパッドやジョイスティックなどを使うためのproCONTROLLライブラリを使います。
http://creativecomputing.cc/p5libs/procontroll/

processingのスケッチでのライブラリの使い方はこちらを参考にしました。
https://gist.github.com/usopyon/2068969

processing1.5.1で動作確認しました。
arduinoとprocessingのスケッチ、表示するボタン画像をまとめてgoogleドライブに置いておきます。
 -> google drive
ページを開き、ファイル - ダウンロードでzipファイルがダウンロードできます。
 processingスケッチのフォルダにbuttonフォルダをおいてください。


十字キーに8種の操作を割り当て、4つのボタン(0~3)に速度の増減とトリムを割り当てました。
ゲームパッドを接続してからスケッチを実行してください。
実行時、接続されたUSBデバイスの一覧がメッセージ欄に教示されるので
該当するデバイス番号をprocessingのスケッチに書き換える必要があります。
スケッチ16行目
gamepad = cio.getDevice(2);


シリアルポート一覧も同様に表示されるので、bluetoothの仮想シリアルポートをそこから選択しスケッチを書き換えます。
スケッチ52行目から
println( Serial.list() );                                   //シリアルポートの一覧
String portName = Serial.list()[1];                //COM10を使う
myPort = new Serial(this, portName, 2400);

この部分について、macやlinuxでは書き方が違うかもしれません。

動画の最後では、androidスマホを乗せPC間とスカイプでビデオ通話を開始、タイムラグはあるものの、タンク目線での操縦が出来ました。



環境:arduinoUNO、arduino1.0.5、processing1.5.1



0 件のコメント:

コメントを投稿