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

Arduinoで作る自律走行ミニローバー

必要な部品と材料

必要な工具と機器

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

プロジェクト概要

背景

甥(9歳)と姪(7歳)が、以前私が作った障害物回避ロボットの動画を見て大興奮しました。

あのロボットのチュートリアルは残念ながら公開できません。ハードディスクがクラッシュし、バックアップやDropbox、GitHubの大切さを知るより前の作品だからです。 :)

そこで、教育的で楽しい、もっとシンプルなロボットを作れないかと考え、このミニローバーが生まれました。

シャーシは元々カニカマが入っていた箱です。これがちょうど良いサイズでした(父が箱買いして食べていたおかげです :D)。マーガリンの空き箱も適しています。

免責事項として、ここでは子供たちにほぼすべての作業をさせた手順を記します。私は決してそれを推奨するものではありません。保護者・保護者代理・叔父叔母・ベビーシッターなど、責任ある大人が各子供の能力を見極めて判断してください。箱は非常に柔らかいプラスチックだったので、カッターナイフを自分や自分の手足に向けないよう注意させた上で、甥と姪に切らせました。LED用の穴を開ける際は、コードレス電動ドライバーの小さなビットを使って怪我のリスクを減らしました。

幸い、スタンバイしていた救急セットは未使用のままです。:)

繰り返しますが、判断するのはあなたという大人です!

回路

サーボ2個の接続方法を少し複雑にしてしまいました。

Arduinoで作る自律走行ミニローバー

「子供たち」と言っていますが、今回の「子供たち」には妹(35歳)と母(65歳)も含まれ、彼女たちも実際の子供たちと同じくらい「ロボットと工作」の午後を楽しんでいました。:)

Arduinoで作る自律走行ミニローバー

Arduinoで作る自律走行ミニローバー

参加者には、ブレッドボードを実物大(1:1)で印刷したA4用紙と、正しい色・長さのジャンパーワイヤを配りました。

回路が組み上がったら、プログラムをArduinoに書き込みます。コードにはコメントを入れているので、必要に応じて調整できます。配線が正しければ、サーボが回り始め、LEDが点滅します。センサーの前に手をかざすと、片方のサーボが止まり、もう片方が一瞬逆回転します。

準備完了!

組み立て

いよいよ「シャーシ」に穴を開けます。

Arduinoで作る自律走行ミニローバー

Arduinoで作る自律走行ミニローバー

Arduinoで作る自律走行ミニローバー

すべてを箱に入れ、ホットボンドで固定します。

接着剤が固まったらホイールをサーボに取り付けます。

箱をデコレーション!(写真を投稿してくれたら最高です!)

Arduinoで作る自律走行ミニローバー

電池を入れて、部屋の中をランダムに動き回るミニローバーを眺めましょう。電池が切れるまで、または音がうるさくなるまで、あるいは犬に奪われるまで! :D

コード

LittleRover (Arduino)

4ピン超音波センサー用のコードです。

#include <Servo.h> 
/* 3ピンセンサーの場合は6行目を有効にし、7行目をコメントアウトしてください */
//int distanceR = A0; // Triggerピン
int distance = 6; // Triggerピン
int pingDelay = 10; // 超音波センサーのパルス長
int distanceR = A0; // Echoピン
int led1 = 8, led2 = 9; // LED
Servo leftPower;
Servo rightPower;
unsigned long flashTime;
unsigned long nextSensorTime;
float obstacleDist = 0.0f;

void setup() {
  //Serial.begin(115200);
  leftPower.attach(3);
  rightPower.attach(5);
  leftPower.write(90);
  rightPower.write(90);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  delay(1000);
}

void loop() {
  LEDs();
  /* センサーのチェックを秒5回に制限して電池消耗を防ぐ。
     この数を増やせばチェック頻度は下がるが、壁に突っ込む可能性がある。 */
  if(millis() - nextSensorTime > 200){
    nextSensorTime = millis();
    /* センサーが混乱して値を返さないことがあるため、2回読み取る */
    float reading1 = TakeReading();
    delay(100);
    float reading2 = TakeReading();
    Serial.println(reading1);
    Serial.println(reading2);
    // 大きい方の距離を採用
    obstacleDist = reading1 >= reading2 ? reading1 : reading2;
    // 距離が10cm未満なら旋回、そうでなければ直進
    if(obstacleDist < 10.0f){
      //Serial.println("turn");
      turn();
    }else{
      //Serial.println("forward");
      forward();
    }
  }
}

void LEDs(){
  if(millis() - flashTime > 1000) flashTime = millis();
  if(millis() - flashTime < 500){
    digitalWrite(led1, LOW);
    digitalWrite(led2, HIGH);
  }else if(millis() - flashTime > 500){
    digitalWrite(led1, HIGH);
    digitalWrite(led2, LOW);
  }
}

void forward(){
  /* 後退してしまう場合は 135 と 45 を入れ替えてください。 */
  leftPower.write(135);
  rightPower.write(45);
}

void turn(){
  /* 反対方向に曲がらせたい場合は、92-93行目を有効にし、95-96行目をコメントアウトしてください。 */
  //leftPower.write(90);
  //rightPower.write(135);
  leftPower.write(45);
  rightPower.write(90);
  delay(350);
}

float TakeReading(){
  unsigned long echo = 0;
  float result = 0.0f;
  pinMode(distance, OUTPUT);
  digitalWrite(distance, LOW);
  delayMicroseconds(2);
  digitalWrite(distance, HIGH);
  delayMicroseconds(pingDelay);
  digitalWrite(distance, LOW);
  pinMode(distanceR, INPUT);
  digitalWrite(distanceR, HIGH);
  echo = pulseIn(distanceR, HIGH, 38000);
  result = echo / 58.138;
  return result;
}

回路図

Fritzingファイル: littlerover_87IypZOgwm.fzz

製造プロセス

  1. Windows IoT Core搭載RoverをRaspberry Pi 2で構築 - 初心者から上級者まで
  2. Arduino UNOとMAX7219で作るUFOアタックゲーム – レトロなドットマトリクスシューティング
  3. Arduinoデジタルダイス: LCD表示の乱数ジェネレーター自作
  4. 水と光で作る疑似炎エフェクト──Arduino Uno+NeoPixel Stick
  5. 3D RGB アルドゥクロック:Bluetooth対応LED時計(RTC内蔵)
  6. 川の健康を見守る:Arduinoベース水質監視システム「MyRiver」
  7. Arduinoでアイアンマンを自作:部品・センサー・手順ガイド
  8. Arduinoとジョイスティックでインタラクティブゲーム – LEDフィードバック付き
  9. ArduinoとBluetoothで作るスマート紛失防止タグ「Find Me」
  10. Arduino駆動3Dプリントロボットアームの製作:ステップバイステップガイド
  11. ポータブル距離検出器:Arduino Nano自作キット(HC-SR04、18650電源、3Dプリントケース付き)