Arduinoを使用して障害物回避ロボットを作成する方法は?

世界は急速に動いており、ロボット工学の分野でもテクノロジーはそれに伴って動いています。ロボット工学の応用は世界中どこでも見られます。外部の助けなしに動く移動ロボットまたは自律ロボットの概念は、最も没入型の研究分野です。移動ロボットには、自己位置特定とマッピング(SLAM)インタープリター、ラインフォロー、相撲ボットなど、非常に多くの種類があります。障害物回避ロボットもその1つです。途中で障害物を検出した場合、パスを変更する手法を使用します。



(写真提供:サーキットダイジェスト)

このプロジェクトでは、超音波センサーを使用して経路内のすべての障害物を検出するArduinoベースの障害物回避ロボットを設計します。



超音波センサーを使用して障害物を回避する方法は?

プロジェクトの概要がわかったので、一歩先に進んで、プロジェクトを開始するための情報を収集しましょう。



ステップ1:コンポーネントの収集

プロジェクトを開始するための最良のアプローチは、開始時に完全なコンポーネントのリストを作成し、各コンポーネントの簡単な調査を行うことです。これは、プロジェクトの途中での不便を回避するのに役立ちます。このプロジェクトで使用されるすべてのコンポーネントの完全なリストを以下に示します。



  • 車のホイールシャーシ
  • 電池

ステップ2:コンポーネントの調査

これで、すべてのコンポーネントの完全なリストができたので、一歩進んで、すべてのコンポーネントの動作について簡単に説明します。

Arduino nanoは、回路内のさまざまなタスクを制御または実行するために使用される、ブレッドボードに適したマイクロコントローラーボードです。私たちは燃やす Cコード Arduino Nanoで、マイクロコントローラーボードにどのようにどのような操作を実行するかを指示します。 Arduino Nanoは、Arduino Unoとまったく同じ機能を備えていますが、サイズが非常に小さいです。 ArduinoNanoボードのマイクロコントローラーは ATmega328p。

Arduino Nano



L298Nは、高電流および高電圧の集積回路です。これは、標準のTTLロジックを受け入れるように設計されたデュアルフルブリッジです。デバイスが独立して動作できるようにする2つのイネーブル入力があります。 2つのモーターを同時に接続して操作することができます。モーターの速度は、PWMピンを介して変化します。パルス幅変調(PWM)は、任意の電子部品の電圧の流れを制御できる手法です。このモジュールには、電流の方向を反転させることによってモーターの回転方向を制御するHブリッジがあります。イネーブルピンAとイネーブルピンBは、両方のモーターの速度を変更するために使用されます。このモジュールは、5〜35Vで動作し、ピーク電流は最大2Aです。入力ピン1と入力ピン2、および第1モーター用、入力ピン3と入力ピン4は第2モーター用です。

L298Nモータードライバー

HC-SR04ボードは、2つの物体間の距離を測定するために使用される超音波センサーです。送信機と受信機で構成されています。送信機は電気信号を超音波信号に変換し、受信機は超音波信号を電気信号に変換し直します。送信機が超音波を送ると、特定の物体に衝突して反射します。距離は、超音波信号が送信機から受信機に戻るまでにかかる時間を使用して計算されます。

超音波センサー

ステップ3:コンポーネントを組み立てる

使用されているほとんどのコンポーネントの動作がわかったので、すべてのコンポーネントの組み立てを開始して、障害物回避ロボットを作成しましょう。

  1. 車のホイールチェイスを取り、その上にブレッドボードを貼り付けます。チェイスの前に超音波センサーを取り付け、チェイスの後ろにバッテリーキャップを取り付けます。
  2. ブレッドボードにArduinoNanoボードを固定し、モータードライバーをブレッドボードのすぐ後ろのチェイスに取り付けます。両方のモーターのイネーブルピンをArduinonanoのPin6とPin9に接続します。モータードライバーモジュールのIn1、In2、In3、およびIn4ピンは、Arduino nanoのピン2、ピン3、ピン4、およびピン5にそれぞれ接続されています。
  3. 超音波センサーのトリガーピンとエコーピンは、Arduinonanoのピン11とin10にそれぞれ接続されています。超音波センサーのVccとアースピンは、ArduinoNanoの5Vとアースに接続されています。
  4. モーターコントローラーモジュールはバッテリーから電力を供給されます。 Arduino Nanoボードはモータードライバーモジュールの5Vポートから電力を受け取り、超音波センサーはArduinonanoボードから電力を受け取ります。バッテリーの重量とエネルギーが、バッテリーの性能を決定する要因になる可能性があります。
  5. 接続が以下の回路図に示されているものと同じであることを確認してください。

    回路図

ステップ4:Arduino入門

Arduino IDEにまだ慣れていない場合でも、マイクロコントローラーボードでArduinoIDEをセットアップして使用するためのステップバイステップの手順を以下に説明しているので心配しないでください。

  1. ArduinoIDEの最新バージョンをからダウンロードします アルドゥイーノ。
  2. Arduino Nanoボードをラップトップに接続し、コントロールパネルを開きます。コントロールパネルで、をクリックします ハードウェアとサウンド 。今クリック デバイスとプリンター。 ここで、マイクロコントローラーボードが接続されているポートを見つけます。私の場合は COM14 しかし、それはコンピュータによって異なります。

    ポートを見つける

  3. [ツール]メニューをクリックします。ボードをに設定します Arduino Nano ドロップダウンメニューから。

    セッティングボード

  4. 同じツールメニューで、ポートを以前にで観察したポート番号に設定します。 デバイスとプリンター

    設定ポート

  5. 同じツールメニューで、プロセッサをに設定します ATmega328P(古いブートローダー)。

    プロセッサー

  6. 以下に添付されているコードをダウンロードして、ArduinoIDEに貼り付けます。クリックしてください アップロード マイクロコントローラボード上のコードを書き込むためのボタン。

    アップロード

コードをダウンロードするには、 ここをクリック。

ステップ5:コードを理解する

コードはよくコメントされており、自明です。それでも、それは以下で説明されています

1.コードの開始時に、超音波センサーとモータードライバーモジュールに接続されているArduinoNanoボードのすべてのピンが初期化されます。ピン6とピン9は、電圧の流れを変化させてロボットの速度を変化させることができるPWMピンです。 2つの変数、 デュレーション、 そして 距離 超音波センサーと障害物の距離を計算するために後で使用されるデータを格納するために初期化されます。

int enable1pin = 6; //最初のモーターのピンintmotor1pin1 = 2; int motor1pin2 = 3; int enable2pin = 9; // 2番目のモーターのピンintmotor2pin1 = 4; int motor2pin2 = 5; const int trigPin = 11; //超音波Sesnorのトリガーピンconstint echoPin = 10; //超音波Sesnorのエコーピンが長時間; //距離を計算する変数floatdistance;

2.2。 void setup() は、使用するすべてのピンを設定するために使用される関数です。 入力 そして 出力。 ボーレートはこの関数で定義されます。ボーレートは、マイクロコントローラボードが統合されたセンサーと通信するための通信速度です。

void setup(){Serial.begin(9600); pinMode(trigPin、OUTPUT); pinMode(echoPin、INPUT); pinMode(enable1pin、OUTPUT); pinMode(enable2pin、OUTPUT); pinMode(motor1pin1、OUTPUT); pinMode(motor1pin2、OUTPUT); pinMode(motor2pin1、OUTPUT); pinMode(motor2pin2、OUTPUT); }

3.3。 void loop() サイクルで繰り返し実行される関数です。この機能では、マイクロコントローラボードにどのようにどのような操作を実行するかを指示します。ここで、最初に、トリガーピンは、エコーピンによって検出される信号を送信するように設定されます。次に、超音波信号がセンサーとの間を行き来するのにかかる時間が計算され、変数に保存されます。 デュレーション。 次に、この時間を式で使用して、障害物と超音波センサーの距離を計算します。次に、距離が5ocmを超える場合、ロボットは直線で前進し、距離が50cm未満の場合、ロボットは鋭角に右折するという条件が適用されます。

void loop(){digitalWrite(trigPin、LOW); //超音波信号の送信と検出delayMicroseconds(2); digitalWrite(trigPin、HIGH); delayMicroseconds(10); digitalWrite(trigPin、LOW);期間= pulseIn(echoPin、HIGH); //超音波が反射する距離を反射するために取る時間の計算= 0.034 *(duration / 2); //ロボットと障害物の間の距離を計算します。 if(distance> 50)//距離が50cmより大きい場合は前方に移動{digitalWrite(enable1pin、HIGH); digitalWrite(enable2pin、HIGH); digitalWrite(motor1pin1、HIGH); digitalWrite(motor1pin2、LOW); digitalWrite(motor2pin1、HIGH); digitalWrite(motor2pin2、LOW); } else if(distance<50) // Sharp Right Turn if the distance is less than 50cm { digitalWrite(enable1pin, HIGH); digitalWrite(enable2pin, HIGH); digitalWrite(motor1pin1, HIGH); digitalWrite(motor1pin2, LOW); digitalWrite(motor2pin1, LOW); digitalWrite(motor2pin2, LOW); } delay(300); }

アプリケーション

そこで、障害物回避ロボットを作る手順を説明しました。この障害物回避技術は、他のアプリケーションでも使用できます。これらのアプリケーションのいくつかは次のとおりです。

  1. 追跡システム。
  2. 距離測定の目的。
  3. これは、自動掃除機ロボットで使用できます。
  4. これは、目の不自由な人のためのスティックで使用できます。