基本的な機能を完了したら、Arduinoロボットの機能をアップグレードする準備が整いました - ライントラッキング!
このチュートリアルでは、Arduinoのロボットを追跡するラインを作成する方法を段階的に説明します。このチュートリアルを読みやすくするために、ここでは例としてArduinoロボットキット(Pirate:Bluetooth 4.0搭載4WD Arduinoモバイルロボットキット)を使用します。
レッスンメニュー:
レッスン1:はじめに
レッスン2:基本的なArduinoロボットの製作
レッスン3:ライントラッキングArduinoロボットの構築
レッスン4:障害物を避けることができるArduinoのロボットを作る
レッスン5:光と効果音でArduinoのロボットを製作する
レッスン6:環境を監視できるArduinoロボットの構築
レッスン7:Bluetooth制御Arduinoロボットの製作
必要なハードウェア部品:
ライントラッキング(追従)Arduino用センサー×3
用品:
ステップ1:
幅2.5CMブラック電気テープ×1
ステップ2:
1M×1Mホワイトボード×1
ステップ3:
M3×30MMナイロンサポート(ネジ・ナット)×3
ステップ4:
組立説明
Arduinoロボットを組み立てることは難しくありません。次の指示に従ってください。
ステップ1:
まず、3つのナイロン製サポートとそれに付随するネジとナットが必要です。
ステップ5:
ステップ2:ナイロン製支柱の取り付け
ナットを使用して、ミニセンサーの上にナイロン製サポートを取り付けます。支柱を取り付けるときは、支柱の向きに注意してください。ナットとプローブは両方向に向けてください。
ステップ6:
ステップ3:センサーボードの組み立て
ロボットプラットフォームから上部プレートを取り外します。次に、センサーボードをプラットフォームの前面に取り付けます。
ステップ7:
ステップ4:ライントラッキングセンサーの組み立て
まず、センサーをデータ伝送用に指定されたワイヤーに接続します。次に、M3ネジを使用して、センサーをプラットフォームの前面から突き出ている拡張ボードに固定します。
ステップ8:
ハードウェアを接続する
センサーを組み立てた後は、プラットフォームの上部プレートを元に戻すことを急がないでください。その前に、まずセンサーをRomeo BLEに接続する必要があります。
左側の図は、センサーボード上のセンサーの正しいABC配置を示しています。これは、Romeo BLEのピン10、9、および8に対応しています。センサーを接続するときは、正しい順序で接続したことを確認してください。センサーを接続したら、プラットフォームの上部プレートをベースの上に取り付けます。
ステップ9:
センサーを調整する
コードをダウンロードする前に、センサーを調整する必要があります。まず、USBケーブルをRomeo BLE(Bluetooth 4.0搭載のArduinoロボットコントロールボード)に接続して電源を入れます。下の写真のように、下のセンサーにはプラスのねじが付いています。このスクリューヘッドを使用して、センサーの距離検出を調整できます。白い紙を取り、センサーのプローブの下に置きます(紙の色はキャリブレーションに使用されます)。ドライバを入手し、それを使用してPhilipsネジ頭を締めます。ネジの頭の締め付け具合に応じて、センサーのプローブが物理的に上下に動くのがわかります。締めるとすぐにセンサーのLEDも点灯します。プローブの先端が紙切れの上約2 cmになるまでネジ頭を締めます。
ステップ10:
コーディング
USBを接続してください。 GitHubから「HuntingLineBlack.ino」という名前のArduinoコードをダウンロードします。 Arduino IDEのアップロードボタンをクリックして、コードをBLEコントロールボードにアップロードします。
ステップ11:
Arduinoロボットのパスを設定する
ホワイトボードを取り出します。下の図に示すように、幅2.5 cmの電気テープを使用してホワイトボードにパスを配置します。
ステップ12:
ワイヤの幅は約2.5 cmで、センサーAとCの間のおおよその距離です。コードに関連する理由から、上記のパスを選択しました。後のセクションでこの推論をもっと徹底的に説明するでしょう。
ステップ13:
伝達:それがどのように働くのか
ロボットをどのように軌道に乗せるかロボットが常にトラックの中央に配置されるようにする必要があります。ロボットは3つのトランスミッションセンサーを使用してトラックに対する位置を調整します - 横に曲がると、ロボットは中央に向かって自己調整します。
私たちのロボットが動くとき、3つの状態が起こります。
ステップ14:
(a)ロボットが最初にトラックに沿って動き始めるとき、中央のセンサー(B)だけが黒い線を検出します - 左右のセンサーはまだ機能していません。車は線路に沿って中心に置かれたままで前進します。
ステップ15:
(b)その軌道をたどった後、ロボットは中心を外れ始めます。このような状況下では、左右のセンサーが黒い線を検出してロボットを軌道に向かって自己誘導しようとします。例えば、ロボットがトラックの右側に向かって曲がる場合、車は左に曲がることによって自分自身を中心に戻す必要があります - 左のセンサーはキックインし、それが中心に戻るまでロボットを自動的に回転させます。
ステップ16:
(c)反対に、ロボットがトラックの左側に向かって曲がっている場合は、右側のセンサーがキックインして、ロボットの軌道が中央に戻るまで調整します。
コードの概要
基本的なコードについて議論する必要はありません - 送信を含む部分を見てみましょう。
int RightValue。 // 8番ピンの右ライントラクターセンサー
int MiddleValue; // 9番ピンのミドルライントラクターセンサー
int LeftValue。 // 10番ピンの左ライントラクターセンサー
//ライントラッキングセンサーの3つのピンの値を読み取る
RightValue = digitalRead(8);
MiddleValue = digitalRead(9);
LeftValue = digitalRead(10);
3つのセンサーの読み取り値を記録するには、RightValue、MiddleValue、LeftValueの3つの変数を使用します。
digitalRead(ピン)機能は、デジタル入出力ポートの値を読むために使用されます。この部分がまだ不明な場合は、用語集またはArduinoのWebサイトをご覧ください。
真ん中の透過センサーが黒い線(トラック)を検出すると、低エネルギー出力を生成します。彼らは空白を検出すると、彼らは高エネルギー出力を生成します。
下記の例Aは、送信コードの動作原理を示しています。真ん中のセンサーが黒い線(トラック)を検出すると、低エネルギー出力を生成します。左右のセンサーが空白を検出すると、HIGH出力になります。
if(MiddleValue == LOW){//中央のRobot.Speed(100,100)の行。遅延(10);}
そうでなければ、((LeftValue == HIGH)&&(RightValue == HIGH)){Robot.Speed(100,100);遅延(10);}
センサーが左側の黒い線/トラックを検出し、右側の空白も検出すると、ロボットは左に曲がります。下記の例Bを参照してください。
そうでなければ、((LeftValue == LOW)&&(RightValue == HIGH)){Robot.Speed(-100,100); //左に曲がるdelay(10);}
逆に、センサーが右側の黒い線/トラックを検出し、左側の空白も検出すると、ロボットは右に曲がります。下記の例Cを参照してください。
そうでなければ、((LeftValue == HIGH)&&(RightValue == LOW)){Robot.Speed(100、-100); //右方向への遅延(10);}