サーボモーター付きロボット回避障害物
コンポーネントと消耗品
> ![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
| × | 1 | ||||
![]() |
| × | 1 | |||
![]() |
| × | 1 |
必要なツールとマシン
> ![]() |
|
アプリとオンラインサービス
> ![]() |
|
このプロジェクトについて
プロジェクトのすべて
私はマレーシアのサイバージャヤにあるマルチメディア大学で学ぶメディアアートデザインの学生です。今年はメディアアートを勉強する私のガンマ年です。インタラクションデザインは、Arduinoコンポーネントの使用方法とその仕組みについて学生に教えるテーマです。そのため、最終的な課題では、自分のプロジェクトとして障害物回避ロボットを選択し、すべてのコンポーネントがどのように機能するかを学びました。
ステップ1:
ロボットシャーシを準備して構築します。パッケージの中には、いくつかのコンポーネント、シャーシ、2つのモーター、2つのホイール、前輪、バッテリーホルダー、いくつかのネジ、スイッチ、ジャンパー線が含まれています。下の写真:
<図>
ステップ2:
両方のモーターにジャンパー線をはんだ付けする前に、すべてのコンポーネントをテストして、すべてが正常に機能していることを確認することをお勧めします。たとえば、両方のDCモーター、Arduinoボード、モーターシールド、サーボモーター、超音波センサー。次に、両方のモーターに赤と黒のワイヤーのはんだ付けを開始します。下の写真の例:
<図>
ステップ3:
バッテリーシャーシとスイッチパーツに来てください。バッテリーシャーシから黒いワイヤーの半分を切り取り、1つのワイヤー側を1つの穴にはんだ付けするだけで、別の黒いワイヤーが別の穴にはんだ付けされます。スイッチの準備ができました!
ステップ4:
Arduinoボードとモーターシールドボードをスタックする必要があります。モーターシールドはArduinoボードにスタックします。以下の例:
<図>
ステップ5:
モーターシールドボードに移ります。このシールドはモーターとサーボモーターに電力を供給し、モーターは大量の電流を必要とし、このシールドは各モーターに最大600mAの電流を供給することができます。モーターシールドボードにDCモーターワイヤーをはんだ付け/固定する必要があります。 DCモーターワイヤーがモーターシールドに到達するのに十分な長さである場合は、外部ジャンパー線を使用する必要があるかもしれません(オス/メスジャンパー線に関係なく)、ジャンパー線の頭を切り取り、内部を確認してください銅線が表示されます。 (銅線を表示するには、ジャンパー線のゴムをカットする必要があります)。また、外部ワイヤをDCモーターワイヤにはんだ付けする必要があります。例:
<図>
次に、左側のモーターワイヤーをモーターシールドのM1コネクターに接続します。右側のモーターワイヤは、モーターシールドボードからM3コネクタに接続します。例:
<図>
ステップ6:
次に、赤と黒の両方のバッテリースイッチワイヤーをモーターシールドボードに接続する必要があります。
<図>
その後、オスとメスのジャンパー線を5V、GND、アナログピン4、アナログピン5にはんだ付けする準備をする必要があります。その前に、同じ色のメスとオスのジャンパー線を見つけて半分にカットする必要があります。 。なぜ同じ色でなければならないのですか?まず、どのワイヤがどの部分に対応しているかを簡単に認識できます。次に、白いオスのジャンパー線は、5Vに接続する白いメスのジャンパー線とはんだ付けされます。黒色のオスジャンパー線はメスジャンパー線とはんだ付けされ、オスジャンパー線はGNDにはんだ付けされます。オレンジ色のオスジャンパー線はオレンジ色のメスジャンパー線ではんだ付けされ、オレンジ色のオスジャンパー線はアナログピン5ではんだ付けされます。最後に、茶色のオスジャンパー線はメスの茶色のジャンパー線ではんだ付けされ、次に茶色のオスジャンパー線はにはんだ付けされますアナログピン4。例:
<図>
ステップ7:
ロボットシャーシに両方のシールドを取り付けるために、両面テープまたはホットグルーガンを使用できます。
ステップ8:超音波センサーの部分に来てください
今はんだ付けしているメス&オスジャンパー線から、白ジャンパー線(5V)(メスサイトジャンパー線)を超音波センサーVCCピンに接続します。黒のジャンパー線(GND)(メスサイトジャンパー線)がGNDピンに接続されます。茶色のジャンパー線(アナログピン4)(メスサイトジャンパー線)がエコーピンに接続されます。オレンジ色のジャンパー線(アナログピン5)(メスサイトジャンパー線)がTRIGピンに接続されます。
<図>
ステップ9:
最後に、サーボモーターはservo_2スロットに接続します。注*(サーボモーターにはいくつかの種類があります。servo_2スロットに接続する方法については、オンラインで見つける必要がある場合があります)。以下は私自身のバージョンのサーボスロット用です。
<図>
最後のステップ:コード
この障害物回避ロボットには、モーターシールドドライバー用のモーターシールドライブラリである3つのライブラリが必要です。新しいPingライブラリは超音波センサー用です。 3番目はArduinoIDEです。以下は、ライブラリのダウンロード可能なリンクです。
-
モーターシールドライブラリ
- 新しいPingライブラリ
私のプロジェクトをご覧いただきありがとうございます。指示が十分に明確で、障害物回避ロボットを自分で作成することができれば幸いです。ありがとうございます!
テスト用のビデオ:
コード
- Arduino IDE
Arduino IDE C#
コードをコピーしてArduinoIDEに貼り付け、Arduinoボードにアップロードします#include#include #include #define TRIG_PIN A4 #define ECHO_PIN A5#define MAX_DISTANCE_POSSIBLE 1000 #define MAX_SPEED 150 // #define MOTORS_CALIBRATION_OFFSET 3#define COLL_DIST 20 #define TURN_DIST COLL_DIST + 10 NewPing sonar(TRIG_PIN、ECHO_PIN、MAX_DISTANCE_POSSIBLE); AF_DCMotor leftMotor(3、MOTOR12_8KHZ); AF_DCMotor rightMotor(1、MOTOR12_8KHZ);サーボneckControllerServoMotor; int pos =0; int maxDist =0; int maxAngle =0; int maxRight =0; int maxLeft =0; int maxFront =0; intcourse =0; int curDist =0; String motorSet =""; int speedSet =0; void setup() {neckControllerServoMotor.attach(10); NickControllerServoMotor.write(90); delay(2000); checkPath(); motorSet ="FORWARD"; NickControllerServoMotor.write(90); moveForward();} void loop(){checkForward(); checkPath();} void checkPath(){int curLeft =0; int curFront =0; int curRight =0; int curDist =0; NickControllerServoMotor.write(144); delay(120); for(pos =144; pos> =36; pos- =18){neckControllerServoMotor.write(pos); delay(90); checkForward(); curDist =readPing(); if(curDist curDist){maxAngle =pos;} if(pos> 90 &&curDist> curLeft){curLeft =curDist;} if(pos ==90 &&curDist> curFront){curFront =curDist;} if(pos <90 &&curDist> curRight){curRight =curDist;}} maxLeft =curLeft; maxRight =curRight; maxFront =curFront;} void setCourse(){if(maxAngle <90){turnRight();} if(maxAngle> 90){turnLeft();} maxLeft =0; maxRight =0; maxFront =0;} void checkCourse(){moveBackward(); delay(500); moveStop(); setCourse();} void changePath(){if(pos <90){lookLeft();} if(pos> 90){lookRight();}} int readPing(){delay(70); unsigned int uS =sonar.ping(); int cm =uS / US_ROUNDTRIP_CM; return cm;} void checkForward(){if(motorSet =="FORWARD"){leftMotor.run(FORWARD); rightMotor.run(FORWARD); }} void checkBackward(){if(motorSet =="BACKWARD"){leftMotor.run(BACKWARD); rightMotor.run(BACKWARD); }} void moveStop(){leftMotor.run(RELEASE); rightMotor.run(RELEASE);} void moveForward(){motorSet ="FORWARD"; leftMotor.run(FORWARD); rightMotor.run(FORWARD); for(speedSet =0; speedSet
回路図

製造プロセス