工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

パスファインダー

コンポーネントと消耗品

>
Arduino UNO
主要コンポーネントの1つ。
× 1
超音波センサー-HC-SR04(汎用)
主要コンポーネントの1つ。
× 1
リチウムイオン電池1000mAh
主要コンポーネントの1つ。
× 2
RGB拡散コモンカソード
主要コンポーネントの1つ。
× 1
ブザー
必要な備品の1つ。
× 1
抵抗330オーム
必要な備品の1つ。
× 3
USB-AからBへのケーブル
必要な備品の1つ。
× 1
ジャンパー線(汎用)
必要な備品の1つ。
× 20

必要なツールとマシン

>
Arduino Materia 101
プライマリマシンの1つ。
頑丈なドライバー
必要なツールの1つ。

アプリとオンラインサービス

>
Arduino IDE
主要なアプリの1つ。
Autodesk Fusion 360
オンラインサービスの1つ。

このプロジェクトについて

あらすじ

このペーパーは、障害物回避ロボットの設計を表しており、コース内のオブジェクトを検出し、適切な決定を行うことでそれらのオブジェクトをナビゲートする機能を備えています。これは、コードがArduinoIDEソフトウェアで記述されているArduinoUNOとAdafruitMotorShieldに基づくロボットユニットを示しています。障害物の回避は、移動ロボットを開発するための重要な要素の1つです。マイクロサーボモーターに超音波距離センサーを搭載することで、周囲の物体をより正確に検出できるようになりました。この設計されたロボットは、磁気ブザーとCC RGB拡散LEDが統合されているため、他の利用可能なロボットとは異なります。これにより、物体の検出手順を示し、4種類の状況でDCギアモーターの速度を制御できます。自律型ロボットとして、影響を与えることなく未知の条件を操作する可能性が実行されました。さらに、この設計されたテクノロジーは、さまざまな環境でのオブジェクト検出の能力を向上させることにより、軍事作戦や人道支援に展開できます。

マルチメディア

<図> <図> <図> <図> <図> <図>

解釈

ブロックコードに追加された付属ライブラリは次のとおりです

  AFMotor.h 
Servo.h

インラインコードで割り当てられた定義済みの接続は次のとおりです

BuzzPINA0を定義する

TrigPINA1を定義する

EchoPINA2を定義する

LEDBPINA3を定義する

LEDGPINA4を定義する

LEDRPINA5を定義する

DCMROFF25を定義

ロボットのアーキテクチャで提供されると予想されるプログラムは次のとおりです。

  • 所定の距離範囲で経路内のオブジェクトを検出する機能。
  • オープンな方向と比較して、新しいパスを探します。
  • オブジェクトの検出を示し、その速度を制御します。

すべての操作は、外部制御を必要とせずに自律的に実行されます。

このプロジェクトでは、障害物を回避し、自力でナビゲートし、4つの異なる状況でCC RGB拡散LEDの選択色をオンにすることで、DCギアモーターの動きを示す機能を備えた移動ロボットを設計するための基本的な詳細を示しました。設計されたロボットは、ロボットの前にある180度の範囲の障害物を検出することにより、光音の表示、モーター速度の制御、および強烈な操作技術の点で、他の障害物回避ロボットとは異なります。これは、適切なプログラミングで組み合わせるのが難しい作業でした。ロボットは、必要な機能を取得するための適切なアセンブリコードの統合のために、Arduino IDEv1.8.5ソフトウェアの助けを借りてArduinoUNORev3プラットフォーム上に構築されました。この統合により、ロボットは人間の介入なしに、かなりの精度で必要な操作を実行できるようになりました。放送用カメラと無線技術を組み合わせたさらなる開発により、このロボットはさまざまな種類の活動を検出するための軍事作戦に効果的に使用できますが、その基本ユニットは、視覚的または聴覚的に障害のある人間が周囲の物体の位置を通知するのを支援するのに役立ちます。

<図>

ユースゼストプロジェクトショーケース

コード

  • プログラム
プログラム Arduino
それに応じてこの自律型マシンをセットアップするためのアセンブリプログラム。
 #include  // Arduinoキットライブラリ用のAdafruitモーターシールドを追加します。#include  //サーボモーターライブラリを追加します。#defineBuzzPIN A0 // PIN A0をBuzzPINとして割り当てます(Arduino UNO "A0" PINをブザー "+" PINに接続します)。#defineTrigPIN A1 // PIN A1をTrigPINとして割り当てます(Arduino UNO "A1" PINを超音波ソナーセンサー "Trig"に接続しますPIN)。#define EchoPIN A2 // PIN A2をEchoPINとして割り当てます(Arduino UNO "A2" PINを超音波ソナーセンサー "Trig" PINに接続します)。#defineLEDBPIN A3 // PIN A3をLEDBPINとして割り当てます(Arduino UNO "A3"を接続します) PINとRGB拡散共通カソード「LEDB」PIN)。#defineLEDGPIN A4 // PIN A4をLEDGPINとして割り当てます(Arduino UNO「A4」PINをRGB拡散共通カソード「LEDG」PINに接続します)。#defineLEDRPIN A5 // PINを割り当てます。 LEDRPINとしてのA5(Arduino UNO "A5" PINをRGB拡散共通カソード "LEDR" PINに接続します)。#defineDCMROFF 25 //これにより、2つのDCトラクションMotの違いを許容するようにオフセットが設定されます。 ors.AF_DCMotor M1(1、MOTOR12_64KHZ); // M1出力を使用してDCMotor#1を作成し、64kHz PWM周波数に設定します。AF_DCMotorM2(2、MOTOR12_64KHZ); // M2出力を使用してDCMotor#2を作成し、64kHzPWM周波数に設定します。ServoSER1; // Servo.int Searchを制御するServoオブジェクトを作成します(void){//整数型の変数宣言。フロート期間=0.0; //浮動小数点型の変数宣言。フロートCM =0.0; //浮動小数点型の変数宣言。 digitalWrite(TrigPIN、LOW); // TrigPIN出力を0V(ロジックローレベル)として出力します。 delayMicroseconds(2); // 2usの遅延、10usの高パルスを超音波ソナーセンサー「TrigPIN」に送信します。 digitalWrite(TrigPIN、HIGH); // TrigPIN出力を5V(ロジックハイレベル)として出力します。 delayMicroseconds(10); // 10usの遅延。 digitalWrite(TrigPIN、LOW); // TrigPIN出力を0V(ロジックローレベル)として出力します。期間=pulseIn(EchoPIN、HIGH); //時間のカウントを開始し、EchoPINをロジック「HighLevel」に戻し、「Time」を「Duration」という変数に入れます。 CM =(期間/ 58.8); //距離をCMに変換します。 CMを返します。 // CMに戻ります。} int RightDistance、LeftDistance; //両側の距離.floatDistance =0.00; //浮動小数点型変数declaration.voidsetup(){//セットアップループ。 pinMode(BuzzPIN、OUTPUT); // BuzzPINを「出力PIN」として宣言します。 pinMode(TrigPIN、OUTPUT); // TrigPINを「出力PIN」として宣言します。 pinMode(EchoPIN、INPUT); // EchoPINを「出力PIN」として宣言します。 pinMode(LEDBPIN、OUTPUT); // LEDBPINを「出力PIN」として宣言します。 pinMode(LEDGPIN、OUTPUT); // LEDGPINを「出力PIN」として宣言します。 pinMode(LEDRPIN、OUTPUT); // LEDRPINを「出力PIN」として宣言します。 SER1.attach(10); //サーボをピン10に接続します(ArduinoキットのAdafruitモーターシールドのSER1をサーボオブジェクトに接続します)。} void loop(){//メインループ。 SER1.write(80); //サーボに80度(前向き)に配置するように指示します。遅延(100); //0.1秒の遅延。距離=検索(); // CMで距離を測定します。 if(Distance <30){// 30cmに障害物が見つかった場合。 digitalWrite(BuzzPIN、HIGH); // BuzzPINを5V(ロジックハイレベル)として出力します。 digitalWrite(LEDBPIN、LOW); // LEDBPINを0V(ロジックローレベル)として出力します。 digitalWrite(LEDGPIN、LOW); // LEDGPINは0V(ロジックローレベル)として出力されます。 digitalWrite(LEDRPIN、HIGH); // LEDRPINを5V(ロジックハイレベル)として出力します。 M1.setSpeed(100); // 遅くする。 M2.setSpeed(100); // 遅くする。 ChangePath(); //前方がブロックされている場合方向を変更します。 } else if((Distance> =30)&&(Distance <60)){//障害物が30cmから60cmの間に見つかった場合。 digitalWrite(BuzzPIN、LOW); // BuzzPINは0V(ロジックローレベル)として出力されます。 digitalWrite(LEDBPIN、HIGH); // LEDBPINを5V(ロジックハイレベル)として出力します。 digitalWrite(LEDGPIN、LOW); // LEDGPINは0V(ロジックローレベル)として出力されます。 digitalWrite(LEDRPIN、LOW); // LEDRPINは0V(ロジックローレベル)として出力されます。 M1.setSpeed(150); //速度がわずかに増加します。 M2.setSpeed(150); //速度がわずかに増加します。前方 (); //ロボットは前進方向に移動します。 } else if((Distance> =60)&&(Distance <90)){//障害物が60cmから90cmの間に見つかった場合。 digitalWrite(BuzzPIN、LOW); // BuzzPINは0V(ロジックローレベル)として出力されます。 digitalWrite(LEDBPIN、LOW); // LEDBPINを0V(ロジックローレベル)として出力します。 digitalWrite(LEDGPIN、HIGH); // LEDGPINを5V(ロジックハイレベル)として出力します。 digitalWrite(LEDRPIN、LOW); // LEDRPINは0V(ロジックローレベル)として出力されます。 M1.setSpeed(200); // スピードアップ。 M2.setSpeed(200); // スピードアップ。前方 (); //ロボットは前進方向に移動します。 } else {// 90cmに障害物が見つからない場合。 digitalWrite(BuzzPIN、LOW); // BuzzPINは0V(ロジックローレベル)として出力されます。 digitalWrite(LEDBPIN、HIGH); // LEDBPINを5V(ロジックハイレベル)として出力します。 digitalWrite(LEDGPIN、HIGH); // LEDGPINを5V(ロジックハイレベル)として出力します。 digitalWrite(LEDRPIN、HIGH); // LEDRPINを5V(ロジックハイレベル)として出力します。 M1.setSpeed(250); //速度が完全に上がります。 M2.setSpeed(250); //速度が完全に上がります。前方 (); //ロボットは前進方向に移動します。 }} void ChangePath(){//パス変更ループ。やめる (); //ロボット停止。後方(); //ロボットは逆方向に走ります。やめる (); //ロボット停止。 SER1.write(12); //右への距離を確認します。遅延(500); //0.5秒の遅延。 RightDistance =検索(); //正しい距離を設定します。遅延(500); //0.5秒の遅延。 SER1.write(160); //左への距離を確認します。遅延(1000); // 1秒間遅延します。 LeftDistance =検索(); //左の距離を設定します。遅延(500); //0.5秒の遅延。 SER1.write(80); //中央に戻ります。遅延(500); //0.5秒の遅延。 CompareDistance(); //最長距離を検索します。} void CompareDistance(){//距離比較ループ。 if(RightDistance> LeftDistance){//右の障害が少ない場合。右折 (); //ロボットは右方向に曲がります。 } else if(LeftDistance> RightDistance){//左の障害が少ない場合。左折してください (); //ロボットは左方向に曲がります。 } else {//両方が等しく妨害されている場合。振り向く (); //ロボットのターンアラウンド。 }} void Forward(){//転送ループ。 M1.run(FORWARD); // DCMotor#1をForwardに切り替えます。 M2.run(FORWARD); // DCMotor#1をForwardに切り替えます。} void Backward(){//後方ループ。 M1.run(BACKWARD); // DCMotor#1を後方に回します。 M2.run(BACKWARD); // DCMotor#2を後方に回します。遅延(500); // 1秒の遅延。} void TurnRight(){//右折ループ。 M1.run(BACKWARD); // DCMotor#1を後方に回します。 M2.run(FORWARD); // DCMotor#2をForwardに切り替えます。 M1.setSpeed(100 + DCMROFF); // DCMotor#1の速度を調整します。遅延(300); //0.7秒の遅延。} void TurnLeft(){//左折ループ。 M1.run(FORWARD); // DCMotor#1をForwardに切り替えます。 M2.run(BACKWARD); // DCMotor#2を後方に回します。 M2.setSpeed(100 + DCMROFF); // DCMotor#2の速度を調整します。遅延(300); //0.7秒の遅延。} void TurnAround(){// TrunAroundループ。 M1.run(FORWARD); // DCMotor#1をForwardに切り替えます。 M2.run(BACKWARD); // DCMotor#2を後方に回します。 M2.setSpeed(100 + DCMROFF); // DCMotor#2の速度を調整します。遅延(700); //2.1秒の遅延。} void Stop(){//ループを停止します。 M1.run(RELEASE); // DCMotor#1をリリースします。 M2.run(RELEASE); // DCMotor#2をリリースします。遅延(100); //0.1秒の遅延。} 

カスタムパーツとエンクロージャー

シャーシ
それに応じてこの自律型マシンをセットアップするためのロボットシャーシ。

回路図

それに応じてこの自律型マシンをセットアップするための回路図。

製造プロセス

  1. 回路部品
  2. 集積回路
  3. Firebaseを使用して、あるArduinoから別のArduinoにセンサーデータを送信します
  4. Arduino Digital Dice
  5. マルチ温度センサー
  6. Arduinoゲームコントローラー
  7. MotionSense
  8. MOSMusic
  9. マイクロエレクトロニクスとは?
  10. ボール盤の部品
  11. 内燃機関のコンポーネント