in ,

Arduino İle Engelden Kaçan Robot Yapımı


Merhaba arkadaşlar arduino ile projelerimizde olabildiğince hızlı ilerlemeye çalışıyoruz. Bugün ki yazımızın konusu başlıkta da belirttiğim üzere Arduino ile Engelden Kaçan Robot nasıl yapılır nerelerde kullanılır veyahut bu sistem nerelerde işimize yarar bunlardan bahsedeceğim. Bildiğiniz üzere son zamanlarda robot yarışları oldukça arttı birden farklı kategoride binlerce robot yarıştırılıyor. Bizim bugün ki yapacağımız robot ise bir nevi labirent çözen robot adlı kategori elemanı sayılabilir, hatta öyle ama biraz ilkel hali geliştirilmesi gerek. 🙂

Ama bu haliyle ile de çok kullanışlı mesela el süpürgeleri var bilirsiniz şarjlı, onun motorunu buna takarak basit bir akıllı ev süpürgesi elde etmiş olursunuz ve böyle bir akıllı süpürgeye sahip olmak için binlerce Tl harcamanıza gerek yok 🙂

Robotumuzun sistemi basit önünde bir HC-SR04 Ultrasonik Mesafe Sensörü(Bu sensörün kullanımını şu postta anlatmıştık) bulunmakta normal durumunda robotumuz öne giderken eğer önüne bir engel çıkarsa ve bu engelle arasındaki mesafe 10 cm den az ise sensöre bağlı servo sayesinde sağa ve sola dönerek nerenin boş olduğuna bakıyor, hangi taraf boşsa o tarafa dönüyor. Eğer her iki tarafta kapalıysa geri giderek aynı şeyleri tekrar yapıyor ve ilerlemeye devam ediyor. Ve eğer yine karşısına engel çıkarsa aynı algoritmayı uyguluyor. Böylelikle bir yere çarpmadan hareket edebiliyor 🙂 Az kalsın unutuyordum üzerindeki buton sayesinde açıp kapayabiliyoruz 🙂

Ön bilgilendirmemiz tamam olduğuna göre isterseniz zaman kaybetmeden projemize geçelim 🙂

Her zamanki gibi bir kaç malzemeye ihtiyacımız var 🙂

Malzeme Listesi

1- Arduino Uno

2- L298 motor sürücü modülü

3- 2 Adet dc motorlu tekerlekler

4- Micro Servo

5- HC-SR04 ultrasonik sensör

6- Led ve 220 ohm direnç

7- buzzer

8- 9v pil ve şasi için gerekli elemanlar

Ayrıca arka destek tekerleğini yapmak için bir adet büyük (metal) ataç ve bir boncuk gerekiyor ama siz isterseniz bunu 4×4 te yapabilirsiniz 2 dc motor sayesinde 😉

Not: Tüm bu malzemeleri elektronik parça satan yerlerde bulabilirsiniz yada şu ve bu adreslerden internet üzerinden güvenle sipariş edebilirsiniz 

 Ayrıca eğer zamanım bol diyorsanız Çin’den de Aliexpress vasıtasıyla getirtebilirsiniz. Daha uygun fiyata gelecektir. 🙂

Şasinin Hazırlanması


Öncelikle pleksiglasımızı (12 x 9,5 cm) keselim. 🙂

Motorlarımızı ve pil yuvamızı silikon yada vida ile şasimize tutturalım :),

Ataç ile yaptığımız arka tekeri şasimize monte edelim 🙂

Kartları monte edelim. 🙂

Sensörü ve servo motor montajını yapalım 🙂

Arduino İle Engelden Kaçan Robot Devre Şeması

Alt tarafta çizdiğimiz devre şemasına bakarak uygun arduino modeline göre devremizi breadboard’umuza kuralım.

Gerekli bağlantıları da yaptığımızda aşağıdaki gibi bir sonuç çıkacaktır. 🙂

Montajı bitirdiğimize göre sıra yazılımda.. 🙂

Yazılım

Bu proje için yazılımın kendisinde barındıran kütüphaneye ihtiyaç duyuyoruz.. Bunları aşağıda vereceğim.. Alttan kopyalarsanız kütüphaneyi de kendiniz alttan kopyalayıp oluşturmanız gerekecek ama ben size bütün bir halini aşağıda bir linkte vereceğim.. 🙂

// DONANIM PLUS ELEKTRONİK
// MODİFİKASYON TOLGA SOYTEPE
// İNSTAGRAM tolgasytp
// TWİTTER TSytpp
// 2019
#include <Servo.h> 
#include "Ultrasonic.h"


const int button = 2;     
const int led    = 3;     
const int buzzer = 4;     
const int motorA1= 6;     // Giriş pinlerini tanımladık
const int motorA2= 9;         
const int motorB1=10;    
const int motorB2=11;   

Ultrasonic ultrasonic(A4 ,A5); //Ultrasensörün trig ve echo pinini atadık
Servo sensorservo;          //servomusu tanımladık


int mesafe;         //Variable to store mesafe from an object
int sagkontrol;
int solkontrol;
int fonksiyon=0;        
int buttonState=0;            
int pos=90;             
int flag=0;           


void setup()
{
    sensorservo.attach(5);      //Servomuzu 5. pine bağladık
    sensorservo.write(pos);        // pos değişkenimizi servomuza yazdırdık
  pinMode(button, INPUT_PULLUP);
  pinMode(led,  OUTPUT);
  pinMode(buzzer, OUTPUT);
  pinMode(motorA1,OUTPUT);           // Çıkış pinlerini tanımladık
  pinMode(motorA2,OUTPUT);
  pinMode(motorB1,OUTPUT);
  pinMode(motorB2,OUTPUT);
  
}

void loop()
{
  
  buttonState = digitalRead(button);
  unsigned long currentMillis = millis();

 
    if (buttonState == LOW) {
      delay(500);
      if ( flag == 0){               //Düğmeye bastığımızda durduran yada çalıştıran bölüm
          fonksiyon = 1;
          flag=1; 
      }
      else if ( flag == 1){  
        fonksiyon = 0;
        flag=0; 
      }    
    }
    
  if (fonksiyon == 0){  
    sensorservo.write(90);  
    stop();        
    noTone(buzzer);    
    digitalWrite(led, HIGH);
    
  }
  else if (fonksiyon == 1){
    //mesafeyi oku
    mesafe = ultrasonic.Ranging(CM); //cm yada inç seçimi biz cm seçtik
    
    if (mesafe > 10){
       ileri(); //All clear, move  ileri!
      noTone(buzzer);
      digitalWrite(led,LOW);
    }
    else if (mesafe <=10){
      stop();
      tone(buzzer,500); 
      digitalWrite(led,HIGH); 
      //Start scanning... 
      for(pos = 0; pos < 180; pos += 1){   
                sensorservo.write(pos);            
                delay(10);                    
            } 
            
            solkontrol = ultrasonic.Ranging(CM);   
            
            for(pos = 180; pos>=0; pos-=1){                             
                sensorservo.write(pos);            
                delay(10);                   
            }
            
            sagkontrol= ultrasonic.Ranging(CM);
            
            sensorservo.write(90);                  
            
           
            if (solkontrol < sagkontrol){
              sol();
              delay(400);            
              }
            else if (solkontrol > sagkontrol){
              sag();
              delay(400); 
            }
            else if (solkontrol <=10 && sagkontrol <=10){
              geri();
              sol();
            }
    }
  }

}


void  ileri(){
  digitalWrite(motorA1, HIGH);
  digitalWrite(motorA2, LOW);
  digitalWrite(motorB1, HIGH);
  digitalWrite(motorB2, LOW); 
}

void geri(){
  digitalWrite(motorA1, LOW);
  digitalWrite(motorA2, HIGH);
  digitalWrite(motorB1, LOW);
  digitalWrite(motorB2, HIGH);
}

void sol(){
  digitalWrite(motorA1, HIGH);
  digitalWrite(motorA2, LOW);
  digitalWrite(motorB1, LOW);
  digitalWrite(motorB2, HIGH);
}

void sag(){
  digitalWrite(motorA1, LOW);
  digitalWrite(motorA2, HIGH);
  digitalWrite(motorB1, HIGH);
  digitalWrite(motorB2, LOW); 
}

void stop(){
  digitalWrite(motorA1, LOW);
  digitalWrite(motorA2, LOW);
  digitalWrite(motorB1, LOW);
  digitalWrite(motorB2, LOW);
}


Ultrasonic.h Kütüphanesi

// DONANIM PLUS ELEKTRONİK
// MODİFİKASYON TOLGA SOYTEPE
// İNSTAGRAM tolgasytp
// TWİTTER TSytpp
// 2019
#ifndef Ultrasonic_h
#define Ultrasonic_h

#include "Arduino.h"

#define CM 1
#define INC 0

class Ultrasonic
{
  public:
    Ultrasonic(int TP, int EP);
    long Timing();
    long Ranging(int sys);

    private:
    int Trig_pin;
    int Echo_pin;
    long  duration,distacne_cm,distance_inc;
    
};

#endif

Ultrasonic.cpp Kütüphanesi

// DONANIM PLUS ELEKTRONİK
// MODİFİKASYON TOLGA SOYTEPE
// İNSTAGRAM tolgasytp
// TWİTTER TSytpp
// 2019
#include "Arduino.h"
#include "Ultrasonic.h"

Ultrasonic::Ultrasonic(int TP, int EP)
{
   pinMode(TP,OUTPUT);
   pinMode(EP,INPUT);
   Trig_pin=TP;
   Echo_pin=EP;
}

long Ultrasonic::Timing()
{
  digitalWrite(Trig_pin, LOW);
  delayMicroseconds(2);
  digitalWrite(Trig_pin, HIGH);
  delayMicroseconds(10);
  digitalWrite(Trig_pin, LOW);
  duration = pulseIn(Echo_pin,HIGH);
  return duration;
}

long Ultrasonic::Ranging(int sys)
{
  Timing();
  distacne_cm = duration /29 / 2 ;
  distance_inc = duration / 74 / 2;
  if (sys)
  return distacne_cm;
  else
  return distance_inc;
}

Bunları ayrı ayrı yeni sekme açıp uzantılarıyla birlikte kaydetmeniz gerekiyor yada aşağıda vereceğim linkten direkt indirin 🙂 Ben yinede manuel yapanlar için aşamaların resimlerini aşağıya bırakıyorum.. 🙂

Aşama 1>>> yeni sekme açımı..

Aşama 2 >>>Ultrasonic.h kütüphanesi için Ultrasonic.h adlı dosya açma yukarıdaki Ultrasonic.h adlı kodları buraya yapıştırın.
Aşağıda olduğu gibi 🙂

Aşama 3 >>>Ultrasonic.cpp kütüphanesi için Ultrasonic.cpp adlı dosya açma yukarıdaki Ultrasonic.cpp adlı kodları buraya yapıştırın. Aşağıda olduğu gibi 🙂

Son olarak aşağıdaki gibi bir görüntü olacak 🙂

Ve Sonuç;

proje kodlarını aşağıdan indirebilirsiniz 🙂

Rar Şifresi: donanimplus.com

Galiba bir yazının daha sonuna geldik. Ama arkadaşlar şunu belirteyim bu tür basit şeyler bence bizim geleceğimiz gelecekte bu tür vatandaşlar hizmet edecek bize.. Yine her zamanki gibi bir kaç tiyo vermek istiyorum.. Bu projeye eski projelerimize bakarak bluetooth falan ekleyip rc araba gibi de kullanabilirsiniz yada ses komutu falan eklersiniz tamamen sizin hayal dünyanıza kalmış.. Umarım anlaşılmıştır ama olur da anlamadığınız bir yer olursa yorumdan yada kişisel sosyal medya hesaplarımdan ulaşabilirsiniz kolay gelsin.. 🙂

Bir cevap yazın

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

Arduino Uno İle 4x4x4 Led Küp Nasıl Yapılır ?

Steam’da 31 TL Değerinde Satılan Oyun Ücretsiz Oldu