Arduinoベースのルンバのような自作お掃除ロボット

お掃除ロボットのルンバは日々にしなくてはいけない掃除を自動化してくれる魅力的なロボットだ。もしあなたが床掃除を自動化したいと思ったらアイロボット社のルンバを購入するか、お掃除ロボットを自作するか二択になる。自作なんて出来るのか?安価な材料と簡単なプログラミング・コードで製作した方がいた。

以下の自作ロボットは木製のシャーシ、arduino unoと超音波センサ、それに小型の掃除機などを組み合わせて作成している。4つのモーターを持つ四輪車が、超音波センサを用いて障害物を避け、ゴミをどんどん吸い上げていく。

製作者はインド出身のB. Aswinth Rajさん。木製のシャーシのお掃除ロボットは、短いプログラミング・コードで動作させている。

#define trigPin 12
#define echoPin 13
#define ir1 7
#define ir2 6

void setup()
{
  Serial.begin(9600);
  pinMode(8,OUTPUT);
  pinMode(9,OUTPUT);
  pinMode(10,OUTPUT);
  pinMode(11,OUTPUT);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(ir1, INPUT);
  pinMode(ir2,INPUT);
}

void loop()
{
  int duration, distance;
  int flag,val1,val2;
  val1=digitalRead(ir1);
  val2=digitalRead(ir2);
  Serial.println(val1);
  Serial.println(val2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(1000);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = (duration/2) / 29.1;
  if (distance >= 200 || distance <= 0){
    Serial.println("Out of range");
  }
  else {
    Serial.print(distance);
    Serial.println(" cm");
  }
  delay(500);

if (distance >=20)
{
  delay(100);
  Serial.println("forward");
  digitalWrite(8,HIGH);
  digitalWrite(9,LOW);
  digitalWrite(10,HIGH);
  digitalWrite(11,LOW);
  delay(150);
  Serial.println("STOP");
  digitalWrite(8,LOW);
  digitalWrite(9,LOW);
  digitalWrite(10,LOW);
  digitalWrite(11,LOW);
}

if (distance<=20)
{
  if (val1==1 )
  {  
    Serial.print("turn right");
    digitalWrite(8,LOW);
    digitalWrite(9,LOW);
    digitalWrite(10,HIGH);
    digitalWrite(11,LOW);
    delay(2000);
  }
  if (val2==1)
  {
    Serial.print("turn left");
    digitalWrite(8,HIGH);
    digitalWrite(9,LOW);
    digitalWrite(10,LOW);
    digitalWrite(11,LOW);
    delay(500);
  }
}

if(distance<=10)
{
    Serial.print("rearrange back");
    digitalWrite(8,LOW);
    digitalWrite(9,HIGH);
    digitalWrite(10,LOW);
    digitalWrite(11,HIGH);
    delay(1000);  
    Serial.print("rearranged left");
    digitalWrite(8,LOW);
    digitalWrite(9,LOW);
    digitalWrite(10,HIGH);
    digitalWrite(11,LOW);
    delay(100);
}

if (distance<=20)
{
   Serial.print("Algorithum");
   Serial.print("free right");
   digitalWrite(8,HIGH);
   digitalWrite(9,LOW);
   digitalWrite(10,LOW);
   digitalWrite(11,LOW);
   if(val2==0)
   {
    Serial.print("smart adjust");
    digitalWrite(8,LOW);
    digitalWrite(9,HIGH);
    digitalWrite(10,LOW);
    digitalWrite(11,LOW);
    delay(500);
   }
 }
}

回路図は以下のようになっているそうだ。

arduino-obstacle-avoiding-robot-vacuum-cleaner-circuit arduino-vacuum-cleaner-robot-using-ir-and-ultrasonic-sensor

つまり、安価で簡単であることの利点としてコピーしたり好きなようなデザインに改良しやすいと製作者は語っている。目的はオフィスや家庭をより快適で心地よい空間にしたいために製作したそうでだ。もちろんアイロボット社のルンバに影響を受けたプロジェクトではあるみたいだが・・・。もちろん本家アイロボット社のルンバと比較すると動きはぎこちないし、吸引能力もイマイチそうだ。改良を続けていくうちに本家のルンバを超えることもありえるかもしれない。

 

製作に興味が出た方は挑んでみてください!材料や回路図が記載されている元記事を参考にして作ってみてください!電子工作に興味が出た方はまずarduinoと教科書を購入しましょう!

元記事:DIY Smart Vacuum Cleaning Robot using Arduino

Build your own robotic vacuum from scratch