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

Pathfinder: Arduino UNO障害物回避ロボットキット - 部品と仕様

キット構成部品

部品数量備考
Arduino UNO1メインコントローラー
超音波距離センサー HC-SR041障害物検知用
Li-ionバッテリー 1000mAh2電源
RGB LED (共通カソード、拡散型)1状態表示用
ブザー1警告音用
330Ω 抵抗3LED電流制限
USB A-Bケーブル1書き込み/給電用
ジャンパワイヤ20配線用

必要な工具

使用ソフトウェア

プロジェクト概要

概要

Arduino UNOとAdafruit Motor Shieldをベースに、超音波センサーをサーボモーターに搭載して180度スキャンし、障害物を検知して自律回避するロボットです。磁気ブザーとRGB LEDで検知状態とモーター速度を4段階で表示します。

動作仕様

ライブラリとピン定義

#include <AFMotor.h>
#include <Servo.h>

#define BuzzPIN A0
#define TrigPIN A1
#define EchoPIN A2
#define LEDBPIN A3
#define LEDGPIN A4
#define LEDRPIN A5
#define DCMROFF 25  // モーター差補正

動作ロジック (距離による4段階制御)

距離動作LED色ブザー速度
< 30cm後退→回避旋回赤ON100 (低速)
30-60cm前進青OFF150
60-90cm前進緑OFF200
≥ 90cm前進白 (全点灯)OFF250 (最高速)

回避アルゴリズム

  1. 障害物検知で停止・後退
  2. サーボを右(12°)→左(160°)に振って距離測定
  3. 距離が長い方へ旋回 (同程度なら180°旋回)
  4. 中央(80°)に戻して前進再開

ソースコード (全文)

#include <AFMotor.h>
#include <Servo.h>
#define BuzzPIN A0
#define TrigPIN A1
#define EchoPIN A2
#define LEDBPIN A3
#define LEDGPIN A4
#define LEDRPIN A5
#define DCMROFF 25

AF_DCMotor M1(1, MOTOR12_64KHZ);
AF_DCMotor M2(2, MOTOR12_64KHZ);
Servo SER1;

int Search() {
  float Duration = 0.0, CM = 0.0;
  digitalWrite(TrigPIN, LOW); delayMicroseconds(2);
  digitalWrite(TrigPIN, HIGH); delayMicroseconds(10);
  digitalWrite(TrigPIN, LOW);
  Duration = pulseIn(EchoPIN, HIGH);
  CM = Duration / 58.8;
  return (int)CM;
}

int RightDistance, LeftDistance;
float Distance = 0.00;

void setup() {
  pinMode(BuzzPIN, OUTPUT);
  pinMode(TrigPIN, OUTPUT);
  pinMode(EchoPIN, INPUT);
  pinMode(LEDBPIN, OUTPUT);
  pinMode(LEDGPIN, OUTPUT);
  pinMode(LEDRPIN, OUTPUT);
  SER1.attach(10);
}

void loop() {
  SER1.write(80); delay(100);
  Distance = Search();
  if (Distance < 30) {
    digitalWrite(BuzzPIN, HIGH);
    digitalWrite(LEDBPIN, LOW); digitalWrite(LEDGPIN, LOW); digitalWrite(LEDRPIN, HIGH);
    M1.setSpeed(100); M2.setSpeed(100);
    ChangePath();
  } else if (Distance >= 30 && Distance < 60) {
    digitalWrite(BuzzPIN, LOW);
    digitalWrite(LEDBPIN, HIGH); digitalWrite(LEDGPIN, LOW); digitalWrite(LEDRPIN, LOW);
    M1.setSpeed(150); M2.setSpeed(150);
    Forward();
  } else if (Distance >= 60 && Distance < 90) {
    digitalWrite(BuzzPIN, LOW);
    digitalWrite(LEDBPIN, LOW); digitalWrite(LEDGPIN, HIGH); digitalWrite(LEDRPIN, LOW);
    M1.setSpeed(200); M2.setSpeed(200);
    Forward();
  } else {
    digitalWrite(BuzzPIN, LOW);
    digitalWrite(LEDBPIN, HIGH); digitalWrite(LEDGPIN, HIGH); digitalWrite(LEDRPIN, HIGH);
    M1.setSpeed(250); M2.setSpeed(250);
    Forward();
  }
}

void ChangePath() {
  Stop(); Backward(); Stop();
  SER1.write(12); delay(500); RightDistance = Search(); delay(500);
  SER1.write(160); delay(1000); LeftDistance = Search(); delay(500);
  SER1.write(80); delay(500);
  CompareDistance();
}

void CompareDistance() {
  if (RightDistance > LeftDistance) TurnRight();
  else if (LeftDistance > RightDistance) TurnLeft();
  else TurnAround();
}

void Forward() { M1.run(FORWARD); M2.run(FORWARD); }
void Backward() { M1.run(BACKWARD); M2.run(BACKWARD); delay(500); }
void TurnRight() { M1.run(BACKWARD); M2.run(FORWARD); M1.setSpeed(100+DCMROFF); delay(300); }
void TurnLeft() { M1.run(FORWARD); M2.run(BACKWARD); M2.setSpeed(100+DCMROFF); delay(300); }
void TurnAround() { M1.run(FORWARD); M2.run(BACKWARD); M2.setSpeed(100+DCMROFF); delay(700); }
void Stop() { M1.run(RELEASE); M2.run(RELEASE); delay(100); }

シャーシと回路図

3Dプリント用シャーシデータと回路図はプロジェクトページで公開予定。

製造プロセス

  1. 集積回路(IC):現代エレクトロニクスを支える微小強力チップ
  2. Firebase経由で2台のArduino間を温湿度データで連携するIoTチュートリアル
  3. Arduinoデジタルダイス: LCD表示の乱数ジェネレーター自作
  4. スマートホーム連携向けマルチポジション温度センサーシステム
  5. DIY Arduino USBゲームコントローラー - 高性能ゲームパッドを自作
  6. MotionSense: ArduinoとESP8266で作るスマート侵入検知システム
  7. MOSMusicプロジェクトキット: MOSFET、Arduinoで音楽同期照明制御
  8. ボール盤の主要構成部品と機能:ベースからモーターまで完全解説
  9. 内燃機関の主要コンポーネント:構造と機能
  10. SPICEネットリスト構文マスター:コンポーネント命名、受動・能動素子、電源定義
  11. マイクロエレクトロニクス:微小化電子技術の科学