Ana Sayfa Arduino Arduino ile Temizlik Robotu Yapımı

Arduino ile Temizlik Robotu Yapımı

11 min read
9
3
46,411

Öncelikle bu projenin basit ve yapımı kolay bir proje olduğunu belirterek başlamalıyım. Projeye başlamadan önce bazı tavsiyelerde bulunacağım. Öncelikle projede kullanacağınız sensörleri , motorları , modülleri bread-board yardımı ile test ediniz. Örneğin; l293n motor sürücüsünü kullanarak motorları pwm ile sürmeyi, daha sonra sensörler ile mesafe ölçmenin mantığını öğrenmelisiniz. Öğrendiğiniz iki durumu koşul ifadeleri ile kodlamayı deneyiniz. Board üzerinde yaptığınız temel testlerden sonra tasarım ve kodlama mantığı hayal gücünüze kalıyor.

Projede Kullanılan Malzemeler:

Aletler:

Arduino nano kullanmamızın sebebi , küçük ve bizim işimizi görecek kadar pin sayısına sahip olmasıdır. Alternatif olarak da uno kullanabilirsiniz ama dediğim gibi küçük olması yararınıza olacaktır. Dört adet motor kullanmamıza rağmen sadece 2 motorun hızlarını ve yönlerini kontrol edeceğimiz için L293N motor sürücüsü bize yeterli olacaktır. Modül üzerinde bulunan soğutucu blokta motor sürücülerinin aşırı ısınmasını engelleyerek uzun süre çalışmasını sağlamaktadır.

Ön taraftaki motorlar ve fan direk olarak bataryaya bağlanmalı, motorların dönüş yönü aşağıdaki gibi olmalıdır. (+,- bağlantı şeklini değiştirerek dönüş yönlerini değiştirebilirsiniz.)

Birazda kasanın yapımından bahsedeyim. Kasa için plastik ekmek kabı kullanıldı.Çünkü ucuz ve istediğim ölçülerdeydi. Ancak zamanla kutunun esnediğini fark ettim. Bu sebepten dolayı esnemeyen veya içini metal bir iskeletle destekleyeceğiniz bir gövde yapın. Kutuyu delme ve kesme işleri için bıçak falçata vs. yerine havya kullanırsanız daha rahat olacaktır. Bu işler için ayrı bir havyanız yoksa bir parça teli ısıtarak da kullanabilirsiniz. Zira lehim yaptığınız havya ile plastik eritmek havyanıza zarar verir. Yapıştırma işlemler için de sıcak silikon ve bazı sabitleme işleri için de kablo bağları kullanıldı.

Kasanın yapımında dikkat etmeniz gereken bir nokta da sarhoş tekerin ve yön tekerlerinin(arkadaki tekerler) yüksekliğidir. Bu yüksekliği iyi ayarlarsanız hem halıda hem de fayans üzerinde rahatça çalışacaktır.

Vakum kısmında ise normal elektrikli süpürgelerdeki sistemin aynısı kullanıldı. Yani fanın önüne koyulan tül parçasına tozlar yapışıyor, çöpler ise haznede birikiyor. gövdenin alt tarafından küçük bir delik açıp motorunuzun gücüne göre açtığınız yeri genişletirsiniz veya dudak ekleyebilirsiniz. Burada dikkat etmeniz gereken 2 husus var. Fan hesabı notlarını incelerseniz, yaptığınız vakumlama sisteminde olabildiğince az dirsek kullanılmalı ve gövde altına açtığınız deliği küçük tutmaya özen gösterin yani acele etmeden küçük bir delik ile motor gücüne göre genişletmelisiniz.

Kullanacağınız jumperler, kablo bağları ve bread-board sizi lehimleme işinden kurtaracaktır.

Önemli olan bir diğer noktada L293N modulünün kullanımı. Bu modülün kullanımı kolaydır ancak dikkat edeceğiniz nokta enable pinleridir. Eneable A ve B pinleri normalde 5v kısadevredir ancak biz buraya pwm vererek motorun hız kontrolünü sağlayabiliriz.

Devre Şeması

Arduino Kodları

// Made by Fatih Mehmet Yılmaz
//ön

int trigPin = 5;
int echoPin = 4;
//sağ
int trigPin2 = 13;
int echoPin2 = 6;
//sol
int trigPin3 = 8;
int echoPin3 = 7;

// motor 1
int enA = 9;//ok
int in1 = 2;
int in2 = 10;
// motor 2
int enB = 3;//ok
int in3 = 11;
int in4 = 12;

void setup()
{
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);

pinMode(trigPin2, OUTPUT);
pinMode(echoPin2, INPUT);

pinMode(trigPin3, OUTPUT);
pinMode(echoPin3, INPUT);

pinMode(9,OUTPUT);
pinMode(2,OUTPUT);
pinMode(10,OUTPUT);
pinMode(3,OUTPUT);

pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
}

void loop()

{
//sistemin 3saniye gecikmeli başlaması için
do {delay(3000);}
while(0);

//ön——————————————————————

int duration, distance;
digitalWrite (trigPin, HIGH);
delayMicroseconds (10);
digitalWrite (trigPin, LOW);
duration = pulseIn (echoPin, HIGH);
distance = (duration/2) / 29.1;

Serial.print(“sag sensor:”);
Serial.print(distance);
Serial.print(“cm”);
Serial.println();
//sağ——————————————————————-

int duration2, distance2;
digitalWrite (trigPin2, HIGH);
delayMicroseconds (10);
digitalWrite (trigPin2, LOW);
duration2 = pulseIn (echoPin2, HIGH);
distance2 = (duration2/2) / 29.1;

Serial.print(“sag sensor:”);
Serial.print(distance2);
Serial.print(“cm”);
Serial.println();
//sol——————————————————————

int duration3, distance3;
digitalWrite (trigPin3, HIGH);
delayMicroseconds (10);
digitalWrite (trigPin3, LOW);
duration3 = pulseIn (echoPin3, HIGH);
distance3 = (duration3/2) / 29.1;

Serial.print(“sag sensor:”);
Serial.print(distance3);
Serial.print(“cm”);
Serial.println();
//——————————————————————

// Motorlar sabit hızda aynı yöne dönüyorlar.
// sol motor ileri
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
// Motor 1 için 0~255 arasında bir hız değeri verelim. 255 en üst sınır
analogWrite(enA, 100);
// sağ motor ileri
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
// Motor 2 için 0~255 arasında bir hız değeri verelim. 255 en üst sınır
analogWrite(enB, 100);
delay(2000);

//——————-KOŞUL BLOĞU———————-
if(distance<10 && distance >4)//ön sensör
{
//motorlar durduruluyor
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);

delay(750);//bir üst fonksiyonun çalışma süresi

// motorlar geriye dönüyor
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);

delay(1750);//bir üst fonksiyonun çalışma süresi

digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);

delay(1750);//bir üst fonksiyonun çalışma süresi

}
//—————————————————-
if(distance2<7 && distance2 >4)//sağ sensör
{
//sol motor
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(enA, 200);

//sağ motor
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enB, 130); // sağ motorun hızı arttırıldı

delay(1500);
}

//——————————————————
if(distance3<7 && distance3 >4)//sol sensör
{

//sol motor
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(enA, 130);// sol motorun hızı arttırıldı

//sağ motor
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enB, 100);

delay(1500);
}

}
//—————————————————

Projenin Çalışma Videosu

Sakarya Üniversitesi  Mekatronik Mühendisliği Öğrencisi

Fatih Mehmet Yılmaz (https://www.facebook.com/fmyilmazz)

Buna Benzer Yazılar Göster !
Daha Fazlasını Yükle - Konuk Yazar
Daha Fazla Göster -  Arduino

9 Yorumlar

  1. hamza

    27 Temmuz 2017 at 12:42

    acaba bu projede rastgele değilde daha akıl katma adına temizlediği alandan bir daha geçmemesi adına nasıl bir algoritma ekleyebiliriz.

    Reply

  2. fatih

    30 Temmuz 2017 at 22:33

    duvar takip ekledim ama gittiği yeri hafızasında tutup bidaha gitmeme üzerine çalışılabilir.

    Reply

  3. […] 2 hafta önce Arduino ile Temizlik Robotu Yapımı […]

    Reply

  4. Feyza

    2 Ekim 2017 at 21:10

    bitirme projesi olarak yapmak istiyorum sizden yardım istiyorum size nasıl ulaşabilirim

    Reply

  5. mert esad

    16 Şubat 2018 at 21:12

    hocam ena enb girişleri nasıl takılıyor

    Reply

  6. Serhat sÖZER

    27 Şubat 2018 at 11:52

    Serial.print("sag sensor:");
    hata veriyor
    yardım eder misiniz?

    Reply

  7. Serhat SÖZER

    27 Şubat 2018 at 11:53

    Serial.print("sag sensor:");
    hata veriyor, yanlış oldu önceki…

    Reply

    • griporcun

      13 Mart 2021 at 22:37

      tırnakları sil tekrar ekle hata veren satırlara

      Reply

fatih için bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bak Bakalım ?

Lazer İşleme Makinesi Yapımı

Merhaba arkadaşlar,bu projemizde sizlerle birlikte lazer işleme makinesi yapımını göreceği…