Leap Motionレーザータンク!
コンポーネントと消耗品
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
このプロジェクトについて
このプロジェクトの目標は、戦闘を行うためのロボットタンクのセットを作成することでした。そこでは、オペレーターがLeapMotionコントローラーを使用して車両を制御するためのより現実的な感覚を得ることができました。ロボットタンクを安価に作成して、プロジェクトをできるだけ簡単に複製できるようにしたかったのです。
タンク本体は、一般的なレゴのレンガとプレートで作られています。電源は単三電池4本のシンプルなブロックです。タンクのコントローラーはArduinoUnoR3です。 「推進力」は、単一のL293D集積回路を使用して、前部に単一のキャスターを備えた後部に車輪を備えた2つの単純なDCモーターです。 「武器」は単一のIRLEDライトであり、「鎧」は対向するタンクのIRLEDからのヒットを検出するIRセンサーのセットです。 「ヘッドアップディスプレイ」は、装甲の状態など、戦車で発生したアクションを示す単一のマルチカラーLEDです。最後に、タンクの「制御」は、各タンクにも装備されているRF24ワイヤレスモジュールを介して接続されたNodeJSを実行するRaspberry Pi2を介してワイヤレスで処理されます。
Leap Motionは、オペレーターの手を使用して、Leap Motion JavascriptSDKを使用してタンクを制御します。 SDKを使用して手の動きを検出するjavascriptは、Raspberry PI 2上のNodeJSサーバーと通信し、Raspberry PI2はRF24モジュールを介してタンクと通信します。両手を前方に動かすと、タンクが前方に移動します。両手を戻すと、タンクは後方に移動します。左手を前に、右手を後ろに、タンクは右に曲がります。右手を前に、左手を後ろに、タンクは左に曲がります。 「ニュートラル」位置にある両手は、タンクを停止します。片方の手を前方(左または右)に、もう一方の手を落とすと、戦車の武器が「発射」されます。
<図>これは、戦車の武器、鎧、ヘッドアップディスプレイの簡単なデモンストレーションです。
全方向性の高度な装甲と段ボール箱を避難所として使用することで、レーザー戦車は狩猟と回避のゲームになります。
プロジェクトの設定手順:
1)タンクを組み立て、以下の回路図を使用して配線します。必要なArduinolibrariesをダウンロードし(githubリポジトリのREADMEを参照)、コンパイルして、tank1のarduinoスケッチを一方のタンクにアップロードし、tank2をもう一方のタンクにアップロードします。
2)RF24トランシーバーをRaspberryPiに配線します。 RaspbianOSとノードJSをPiにインストールします。
3)Pi上のRF24ライブラリをダウンロード、構成、およびビルドします(githubリポジトリのREADMEを参照)。
4)githubサイトからNodeJSサーバーソフトウェアをダウンロードし、App Server / Webサーバーを構成して起動します(githubrepositoryのREADMEを参照)。
5)LeapMotionとドライバーをコンピューターにインストールします。ブラウザーを開き、Raspberry Pi Rest / WebサーバーへのURLをロードしてWebページ(githubリポジトリのREADMEを参照)をロードし、タンク1またはタンク2を制御します。
6)キャリブレーションボタンをクリックし、両手をリープモーションにかざして、両手を検出し、ニュートラルポジションを認識します。キャリブレーションが完了すると、手でタンクを制御できます。
タンクシャーシに関するクイックノート:
タンクの本体は、タンクの部品(モーター、ブレッドボードなど)に「ゴリラ接着」された単純なレゴで組み立てられており、タンクをまとめることができます。これがどのように行われたかを示すスライドショーです。
<図> <図> <図> <図> <図> <図> <図> <図> <図> <図> <図>赤外線LEDに関する簡単なメモ:
赤外線リモコンは、ソファ、床、または椅子に座って、どこからでもテレビのチャンネルを変更できるようにする場合に非常に機能します。赤外線LEDは、カバレッジを向上させるために、光線をできるだけ多くの方向に向けるように作られています。ただし、LEDのビームを小さく制御して、リモートセンサーに当たらないようにする場合(戦車の戦闘のゲームのように)は、もう少し難しくなります。私の読書では、チューブの端に非常に単純な拡大鏡レンズを使用することで、赤外線ビームの焦点を合わせることができることがわかりました。これが私が話していることを示す図です:
<図>
結局、ドラッグストアで非常に安価なポケット拡大鏡を購入し、レンズを取り出してその周りにチューブを作り、チューブのもう一方の端に赤外線LEDを配置しました。これは、ビームを狭くするのに最適でした。より正確にはIRLED。
360度の赤外線センサーに関する簡単なメモ
赤外線センサーは、赤外線LEDがその真正面にある場合、または約90度の焦点が合っている場合に、赤外線LEDからの信号を検出できます。赤外線LEDがセンサーの後ろにある場合、送信された信号を検出できません。
<図>完全な360度の検出角度を実現するには、赤外線ライブラリを変更して、4つの異なるセンサーからの4つの異なるピンの信号を検出するか、4つのセンサーをデイジーチェーン接続して単一のセンサーについてレポートできるようにするハードウェアソリューションを作成する必要がありました。ピン。 4つのセンサーを1つの入力ピンに接続するためのシンプルで集積回路を使用してこれを実現する方法を示すオンライン記事をいくつか見つけました。いずれかの赤外線センサーが赤外線信号を検出すると、そのピンで報告しました。これにより、赤外線ライブラリを変更したり、4つの入力ピンを使用したりすることなく、360度の検出が可能になりました。
<図>
コード
レーザータンクGithub
Leap Motion LaserTanksプロジェクトのすべてのカスタムコードファイルhttps://github.com/corky/LaserTanks 回路図
赤外線LEDを使用して、戦車は他の戦車がヒットとして識別する「コード」を発射します。 単一の赤外線センサーを使用して、タンクは赤外線信号が対向するタンクから来ることを検出し、それらを次のように登録できます。ヒット 4つの赤外線センサーを使用し、シンプルなANDゲート集積回路(74HCT21)とデイジーチェーン接続することで、タンクを使用できます。反対側のタンクのLEDからの赤外線信号を、その周囲の360度からのヒットとして識別します。 RGB LEDを使用して、タンクは色を変更することで現在のステータス(ヒット数)を識別しますLEDの。また、戦車は発射するショットごとにLEDの色を緑色に変更します。 L293D集積回路といくつかの単純なDCモーターを使用して、タンクは前進、後退、回転することができます左または右。 シンプルで安価なRF24トランシーバーを使用して、タンクは通信し、オペレーターからのコマンドを受信できます。 Raspberry Pi2、シンプルで安価なRF24トランシーバー、およびNode JSを使用して、オペレーターはRESTAPI呼び出しを介した各タンク。 製造プロセス