DIYのArduinoとBluetoothで制御されるロボットアームを作る方法は?

最近の世紀では、ロボット工学は最も新しい研究分野です。ロボットは、人間が行っていたほとんどすべてのことを制御してきました。自律型ロボットが私たちの社会でさまざまなタスクを実行しているのを見ることができます。さまざまな操作を実行するのに役立つリモート制御ロボットもいくつかあります。工学の分野でナノ回路を作ることから、医療の分野で複雑な手術を行うことまで、ロボットは人間よりも信頼性があります。



ロボットアーム

このプロジェクトでは、Arduinoマイクロコントローラーによって制御されるロボットアームを作成します。それはアンドロイドリモコンアプリの助けを借りてBluetooth経由で制御されます。



Arduinoを使用してロボットアームを制御する方法は?

これで、プロジェクトの概要がわかりました。回路に関する詳細情報を収集し、Bluetooth制御のロボットアームの構築を開始して、Bluetooth経由で制御しましょう。



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

プロジェクトを開始するための最良のアプローチは、コンポーネントの完全なリストを作成することです。これは、プロジェクトを開始するためのインテリジェントな方法であるだけでなく、プロジェクトの途中で多くの不便を感じることから私たちを救います。このプロジェクトのコンポーネントのリストを以下に示します。



  • HC-05ワイヤレスBluetoothシリアルトランシーバー
  • 6Vアダプター
  • ジャンパー線
  • ブレッドボード

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

使用するすべてのコンポーネントの完全なリストがあるので、一歩先に進んで、すべてのコンポーネントについて簡単に説明します。

Arduino Nano は、さまざまな回路でさまざまな操作を実行するマイクロコントローラボードです。それは必要です Cコード これは、実行するタスクとその方法をボードに指示します。 13個のデジタルI / Oピンがあり、13個の異なるデバイスを操作できることを意味します。 Arduino Nanoは、Arduino Unoとまったく同じ機能を備えていますが、サイズが非常に小さいです。 ArduinoNanoボードのマイクロコントローラーは ATmega328p。 13を超えるデバイスを制御する場合は、ArduinoMegaを使用してください。

Arduino Nano



HC-05ワイヤレスBluetoothシリアルトランシーバー :このプロジェクトでは無線通信が必要なので、Bluetooth技術を使用し、そのモジュールに使用するのはHC-05です。このモジュールにはいくつかのプログラム可能なボーレートがありますが、デフォルトのボーレートは9600bpsです。マスターまたはスレーブとして構成できますが、別のモジュールHC-06はスレーブモードでのみ動作します。このモジュールには4つのピンがあります。 1つはVCC(5V)用で、残りの3つはGND、TX、およびRX用です。このモジュールのデフォルトのパスワードは 1234 または 0000 。 2つのマイクロコントローラー間で通信したり、電話やラップトップHC-05などのBluetooth機能を備えたデバイスと通信したりする場合は、それが役立ちます。このプロセスをはるかに簡単にするいくつかのAndroidアプリケーションがすでに利用可能です。

HC-05Bluetoothモジュール

典型的な ロボットアーム はいくつかのセグメントで構成されており、通常は6つのジョイントがあります。これには、コンピューターによって制御される最低4つのステッピングモーターが含まれています。ステッピングモーターは他のDCモーターとは異なります。それらは正確な増分で正確に移動します。これらのロボットアームは、さまざまな操作を実行するために使用されます。リモコンを使って手動で操作することも、自律的に動作するようにプログラムすることもできます。

ロボットアーム。

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

使用されているすべての主要コンポーネントの動作について知っているようになりました。それらの組み立てを開始し、リモート制御のロボットアームを構築するための回路を作成しましょう。

  1. 。ブレッドボードにArduinoNanoボードを取り付けます。 Arduinoは、アダプターのプラス線とマイナス線を介して電力が供給されます。
  2. Bluetoothモジュールもブレッドボードに配置します。 Arduinoを介してBluetoothモジュールの電源を入れます。 BluetoothモジュールのTxピンをArduinoNanボードのRxピンに接続し、BluetoothモジュールのRxピンをArduinoNanoボードのTxピンに接続します。
  3. 私たちが知っているように、4つのステッピングモーターがあります。それぞれに技術的な名前があります。という ショルダーベース、 そして グリッパー 。すべてのモーターのVccとグラウンドは共通であり、6Vアダプターの正と負に接続されます。 4つのモーターすべての信号ピンは、Arduino Nanoのピン5、ピン6、ピン9、およびピン11に接続されます。
  4. 行った接続が次の回路図に従っていることを確認してください。

    回路図

ステップ4:Arduino入門

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

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

    ポートを見つける

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

    セッティングボード

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

    設定ポート

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

    プロセッサー

  6. サーボモーターを操作するコードを書くには、サーボモーターのいくつかの関数を書くのに役立つ特別なライブラリが必要です。このライブラリは、以下のリンクにコードとともに添付されています。ライブラリを含めるには、をクリックします スケッチ>ライブラリを含める> ZIPを追加します。図書館。

    ライブラリを含める

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

    アップロード

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

ステップ5:アプリをダウンロードする

これで回路全体が組み立てられ、マイクロコントローラーボードにコードがアップロードされました。ロボットアームのリモコンとして機能するモバイルアプリをダウンロードしましょう。無料アプリはグーグルプレイストアで入手できます。アプリの名前は リトルアームロボット制御 。 Bluetooth接続を確立するには、携帯電話でBluetoothをオンにします。設定に移動し、モバイルをHC-05モジュールとペアリングします。これを行った後、アプリのBluetoothボタンを押します。緑色に変わったら、アプリが接続され、ロボットアームを操作する準備ができていることを意味します。必要に応じてロボットアームを操作するように設定するスライダーがあります。

アプリ

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

コードはよくコメントされており、理解しやすいです。それでも、以下に簡単に説明します。

1.最初に、サーボモーターを操作するためのコードを記述するためのライブラリが含まれています。別の図書館 math.h コード内でさまざまな数学演算を実行するために含まれています。 4つのオブジェクトも初期化されて4つのサーボモーターに使用されます。

#include // arduinoライブラリ#include //標準cライブラリ#definePI3.141サーボbaseServo;サーボshoulderServo;サーボelbowServo;サーボグリッパーサーボ; intコマンド;

2.次に、ベース、ショルダー、およびエルボーのサーボモーターの値を取る構造が宣言されます。

struct JointAngle {//構造体の基数を宣言します。 intショルダー; intエルボー; };

3.この後、サーボモーターの目的のグリップ、遅延、および位置を格納するために、いくつかの変数が初期化されます。速度は15に設定され、オブジェクトは構造内の角度の値を取るように作成されます。

intdesiredGrip; int GripperPos; intdesiredDelay; intservoSpeed = 15; int ready = 0;構造体jointAngledesiredAngle; //サーボの望ましい角度

四。 void setup() ArduinoのピンをINPUTまたはOUTPUTとして設定するために使用される関数です。この関数では、モーターのピンがArduinoのどのピンに接続されるかを宣言しました。また、Arduinoがシリアル入力を長時間読み取らないようにします。初期位置とボーレートもこの機能で設定されます。ボーレートは、マイクロコントローラボードが接続されているサーボおよびBluetoothモジュールと通信する速度です。

void setup(){Serial.begin(9600); baseServo.attach(9); //ピン9のベースサーボをサーボオブジェクトshoulderServo.attach(10);に接続します。 //ピン9のショルダーサーボをサーボオブジェクトelbowServo.attach(11);に接続します。 //ピン9のエルボーサーボをサーボオブジェクトgripperServo.attach(6);に接続します。 //ピン9のグリッパーサーボをサーボオブジェクトSerial.setTimeout(50);に接続します。 // arduinoがシリアルを長時間読み取らないようにしますSerial.println( 'started'); baseServo.write(90); //サーボの初期位置shoulderServo.write(150); elbowServo.write(110);準備完了= 0; }

5.5。 ServoParallelControl() は、ロボットアームの現在位置を検出し、モバイルアプリからのコマンドに従って移動する機能です。現在の位置が実際よりも小さい場合、アームは上に移動し、その逆も同様です。この関数は、現在の位置の値とサーボの速度を返します。

int ServoParallelControl(int thePos、Servo theServo、int theSpeed){int startPos = theServo.read(); //現在の位置を読み取りますintnewPos = startPos; // int theSpeed = speed; //コマンドに対して位置がどこにあるかを定義します//現在の位置が実際の移動よりも小さい場合if(startPos(thePos + 5)){newPos = newPos-1; theServo.write(newPos); delay(theSpeed); 0を返します。 } else {1を返す; }}

6.6。 void loop() ループで繰り返し実行される関数です。この関数は、シリアルに送られるデータを読み取り、各サーボの角度を構造に保存します。最初は、すべてのサーボのステータスがゼロに設定されています。ここに関数 ServoParallelControl() が呼び出され、パラメータが渡されます。この関数は値を返し、ステータスの変数に格納されます。

void loop(){if(Serial.available()){ready = 1; DesiredAngle.base = Serial.parseInt(); DesiredAngle.shoulder = Serial.parseInt(); desiredAngle.elbow = Serial.parseInt(); DesiredGrip = Serial.parseInt(); DesiredDelay = Serial.parseInt(); if(Serial.read()== ' n'){//最後のバイトが 'd'の場合、読み取りを停止してコマンドを実行します 'd'は 'done'を表しますSerial.flush(); //バッファに蓄積されている他のすべてのコマンドをクリアします//コマンドの完了を送信しますSerial.print( 'd'); }} int status1 = 0; int status2 = 0; int status3 = 0; int status4 = 0; int done = 0; while(done == 0 && ready == 1){//サーボを目的の位置に移動status1 =サーボParallelControl(desiredAngle.base、baseServo、desiredDelay); status2 = ServoParallelControl(desiredAngle.shoulder、shoulderServo、desiredDelay); status3 = ServoParallelControl(desiredAngle.elbow、elbowServo、desiredDelay); status4 = ServoParallelControl(desiredGrip、griperServo、desiredDelay); if(status1 == 1&status2 == 1&status3 == 1&status4 == 1){done = 1}} // while end}

さて、これがロボットアームを作る手順全体でした。コードを書き込んでアプリをダウンロードした後、アプリのスライダーを動かすと、ロボットは完全に正常に動作するはずです。自律的に動作して目的のタスクを実行するようにアームをプログラムすることもできます。