Robotik
OKUDUĞUNUZ KONU
Engel Algılayan Robot Yapımı
36

Engel Algılayan Robot Yapımı

Yazar : Murat Duran25 Haziran 2015

Son zamanlarda Arduino çok fazla kullanılan bir elektronik kart oldu hemen hemen her elektronik projenizi kolaylıkla yapabileceğinizi bu kart ile şimdi basit bir robot yapacağız.Robotumuz da bir adet ardunio kalkan kiti kullanıyoruz bu kit sayesinde robotumuz duvara çarpmayacak.Gelişmiş engel algılayan algoritması sayesinde duvar gördüğünde hangi yön daha uzun mesafedeyse o yöne doğru hareket gerçekleştirir.

Malzemelerimiz

1- Arduino Uno
2- Arduino Prototype Shield
3- HC-SR04 sensör
4- Büyük Servo Motor (2 adet)
5- Mikro servo motor
6- L293D motor sürücü
7- 9V Pil ve 6V pil
8- Plastik malzeme ve tekerlekler

Öncelikle robotumuzu gövdesini aşağıda resimlerde görüldüğü gibi kesip gerekli montajları aynen yapıyoruz.Projemizi yaparken resimlerdeki boyutları göz önünde bulundurarak yapınız aksi halde yüklediğiniz kod ile robotunuz da bir uyuşmazlık meydana gelecektir ve sağlıklı çalışmayacaktır.

Projenin Arduino Kodunu İndir

Gövdeyi kesip gerekli montajı yaptıktan sonra sıra arduino montajına geliyor.Aşağıdaki resimlerde görüldüğü gibi arduino nuzu yerleştirin üzerine motor sürücü entegresini ekleyin ve jumper kablolar ile pinleri arduinoda kodlarda belirtilen pinlere yerleştirin.

Bağlantı şeması aşağıdaki gibidir.

engel-robot-devre

#include <Servo.h>
#include <NewPing.h>

#define LeftMotorForward 9
#define LeftMotorBackward 10
#define RightMotorForward 11
#define RightMotorBackward 12
#define USTrigger 6
#define USEcho 7
#define MaxDistance 100
#define LED 13

Servo servo;
NewPing sonar(USTrigger, USEcho, MaxDistance);

unsigned int duration;
unsigned int distance;
unsigned int FrontDistance;
unsigned int LeftDistance;
unsigned int RightDistance;
unsigned int Time;

void setup()                                           
{pinMode(LeftMotorForward, OUTPUT);
  pinMode(LeftMotorBackward, OUTPUT);
  pinMode(RightMotorForward, OUTPUT);
  pinMode(RightMotorBackward, OUTPUT);
  pinMode(LED, OUTPUT);
  servo.attach(4);                                    
}

void loop()                                          
{
  delay(500);
  servo.write(90);                                                 
  scan();                                            
  FrontDistance = distance;                           
  if(FrontDistance > 40 || FrontDistance == 0)        
  {
   moveForward();                                     
  } 
  else                                               
  {
    moveStop();                                       
    servo.write(167);                                
    delay(500);                                      
    scan();                                         
    LeftDistance = distance;                         
    servo.write(0);                                  
    delay(500);                                    
    scan();                                           
    RightDistance = distance;                         
    if(RightDistance < LeftDistance)                  
    {
     moveLeft();                                      
     delay(500);                                      
    }
    else if(LeftDistance < RightDistance)            
    {
     moveRight();                                    
     delay(500);                                     
    }
    else                                              
    {
     moveBackward();                                 
     delay(200);                                      
     moveRight();                                    
     delay(200);                                      
    }
  }
}

void moveForward()                                    
{
  digitalWrite(LeftMotorBackward, LOW);
  digitalWrite(LeftMotorForward, HIGH);
  digitalWrite(RightMotorBackward, LOW);
  digitalWrite(RightMotorForward, HIGH);
}

void moveBackward()                                  
{
  digitalWrite(LeftMotorForward, LOW);
  digitalWrite(LeftMotorBackward, HIGH);
  digitalWrite(RightMotorForward, LOW);
  digitalWrite(RightMotorBackward, HIGH);
}

void moveLeft()                                      
{
  digitalWrite(LeftMotorForward, LOW);
  digitalWrite(LeftMotorBackward, HIGH);
  digitalWrite(RightMotorBackward, LOW);
  digitalWrite(RightMotorForward, HIGH);
  
}

void moveRight()                                    
{
  digitalWrite(LeftMotorBackward, LOW);
  digitalWrite(LeftMotorForward, HIGH);
  digitalWrite(RightMotorForward, LOW);
  digitalWrite(RightMotorBackward, HIGH);
}

void moveStop()                                     
{
  digitalWrite(LeftMotorBackward, LOW);
  digitalWrite(LeftMotorForward, LOW);
  digitalWrite(RightMotorForward, LOW);
  digitalWrite(RightMotorBackward, LOW);
}
void scan()                                         
{
  delay(50); 
  Time = sonar.ping(); 
  distance = Time / US_ROUNDTRIP_CM;
}
SİZCE NASIL OLMUŞ?
Beğendim
55%
İlginç
22%
Eh İşte
6%
Anlamadım
4%
Kötü
8%
Berbat
6%
YAZAR HAKKINDA
Murat Duran
Murat Duran
Açık kaynak donanım ve yazılım geliştiricisiyim , mekanik ve robotik sistemler üzerinde çalışmalar yapmaktayım.Ayrıca bir start-up firması olan Proje Hocam 'ın kurucuyum.
36 YORUMLAR
  • Sertaç budak
    11 Ağustos 2015 at 21:44

    hocam bu projedeki motorları nerden temin edebiliriz.

  • Murat Duran
    11 Ağustos 2015 at 21:48

    oradaki motorlar servo motordan dönüştürülmüş dc motor kullanabilirsiniz.Dc motorları http://market.projehocam.com sitemizden temin edebilirsiniz.

  • 30 Ağustos 2015 at 21:06

    merhaba hayirli isler dilerim size. kusura bakma. seni rahatsiz etim.
    Engel algilayan robot yapimi. yaptim. kod indirdim. bu hatayi veriyor. ingilizce. Download.No preview available. bu hata veriyor?
    bu konudan. sizden cevap. bekliyorum. ne yapmam. gerekli. tesekkurler. sizin sayenizde. cok seyler. ögrendim. sag olun.
    bu engel. robotunuz. harika. elin koluna. saglik. sizin. sayenizde. yapayim. bu robotu. allahja emanet olun.

  • 30 Ağustos 2015 at 21:29

    merhaba. sitedeki. butun,kodlari. indiriyorum. tek bu robota. ENGEL ALGILAYAN ROBOT YAPIMI. kod. indirilince.
    bu hatayi. veriyor. Download. yapinca. bu hata. veriyor. No previen. available. connect more. apps.?
    hersey. icin tesekkurler. umarim. cevap verirsiniz. bu robotu. yaptim. tek kod kaldi? iyi aksamlar.

  • 30 Ağustos 2015 at 22:07

    merhaba. engel algilayan robot yapimi. kod indirdim. tesekkurler. iyi aksamlar.
    allaha emanet .olun.

  • 30 Ağustos 2015 at 22:24

    merhaba. engel .algilayan. robot yaptim.. hersey tamam. tek. bir sorun.?
    servo motor. 2 . arduino. hanki. pine bagli. onu . soylerseniz. cok. sevinirim. tesekkurler.
    sitenizdeki. robotlar. harika. cok guzel. calisiyor. elin. koluna saglik. allah. isinizi. rast. getirsin. mesaji. icin kusura. bakma.
    iyi geceler. isvecten selamlar.

  • 31 Ağustos 2015 at 13:22

    merhaba. senin . soyledigin. 4 pine bagli. anladim.
    kusura bakma. sunu soracaktim. size? buyuk. servo.motor. (2.)adet. ardunino. ayri. ayri. hanki. pine bagli. numaralari. soylerseniz?
    bide. Mikro servo. motor. ultrasyon. icin. arduino. hanki.pine bagli? bunu. sizden. ögrenmek. tesekkur. ederim. size.
    sizin.sayenizde. cok.seyler. ögrendim. inanki. allah. sizleri. kazadan beladan. esirgesin. bu iyiliginizi. unutmiyacam.
    sizin. sayenizde. cok robot yaptim. ve bilgi. sahibi. oldum. allah. sizden razi olsun. isvecten selamlar. boll kazanclar. dilerim. size
    mesaji. icin kusura bakma.

    • Murat Duran
      31 Ağustos 2015 at 15:16

      Projede servo motorların içi açılıp normal dc motor yapılmış.İsterseniz dc motor kullanabilirsiniz. Motor sürücü olarak da L293 kullanılmış.

      Sol motor ileri : 9
      Sol motor geri : 10
      Sağ motor ileri : 11
      Sağ motor geri : 12

      Ultrasonik sensör
      Trig : 6 Echo : 7

      Pinler dijitaldir.

  • 31 Ağustos 2015 at 18:15

    merhaba . tesekkur ederim size. bende . parallax. robot govdesi var. 2 servo motor. onde sarhos tekeri var?
    bunu kulanmak. istiyorum. nedersiniz. sizce daha iyi olmazmi. 2 .sene evel. parallax. servo . kit olarak. almistim.
    bunu govdesini. kulanmak. istiyorum. bu robota. onun icin sizden. cevap . bekliyorum. L293D . kulanmak. istemiyorum. servo. motorlu.
    olmazmi. sizce? umarim. bu konudan sizden. cevap. bekliyorum. . istedigim. servolu. motorlu. olsun.
    eger oluyorsa. arduino. uno. servo. motor baglantisi. pinleri? siz daha . iyi bilirsiniz. ( paralax. kit servo motorlu.
    var bende. kulanmak. isterdiom. nedersiniz. siz. daha iyi. bilirsiniz. tesekkurler. allaha. emanet olun

  • 1 Eylül 2015 at 12:31

    merhaba. cevap verdigin icin size cok. tesekkur ederim. servo. motorlar. senin dedigin. gibi . tam tur yapiyor. donuyor?
    bu kit. uzerinde modulde. var. aylyacagim. servo. motor tam. donuyor. DC motorlar gibi. bu konudan. ne diyorsunuz.
    islerinizden basarilar. dilerim. hersey. gonlunce. olsun. allah. isinizi. rast getirsin.

  • 1 Eylül 2015 at 12:39

    merhaba. senin dedigin sitede. parallax, robot Sheield. with arduuno. kit servolu bende aynisi. govde ve servolu. motor. kit
    aynisi bende var. bu. senin robot- engel algilayana. kulanmak. mumkunmu? islerinden. basarilar dilerim. hersey. icin cok tesekkurler.

    • Murat Duran
      2 Eylül 2015 at 15:36

      Dc motorlar gibi çalışıyorsa ve motor sürücü kullanmak istemiyorsanız. direk olarak sinyal pinlerini motora bağlayınız.Arduino üzerine biraz fazla yük binebilir o yüzden motor sürücü kullanmanızı öneririm.

  • 2 Eylül 2015 at 17:38

    merhaba. cevap verdigin icin. size cok tesekkur ederim. peki motor surucu. servo motor. icin. hankisini. tavsiye. edersiniz. onu alayim?
    Bu iyliginizi. unutmiyacam. boll kazanclar. dilerim size. ( motor surucu. sevo. icin. hankisini. alayim?
    bana. soylerseniz. onu. alirim..? hersey.icin tesekkurler sag olun . allaha emanet olun.

  • 2 Eylül 2015 at 20:59

    merhaba. verdigin bililerden. dolayi. size cok tesekkurer. ederim.size.
    islerinden. basarilar. dilerim. allah. isinizi. rast. getirsin.

  • 3 Eylül 2015 at 21:10

    merhaba tesekkurler. elin. koluna saglik. devreyi. calistirdim. harika. calisiyor.ENGEL ALGILAYAN ROBOT YAPIMI.
    sizin sayenizde. cok seyler. ögredim. verdiginiz. bilgilerden. dolayi. cok tesekkur. edrim. size. allaha emanet olun

  • fatih çakır
    15 Ekim 2015 at 18:46

    öncelikle yapmış oldugunuz projeyi cok begendim bende aynısını 2 adet dc motor ile yapmıştım rica etsem breadboar devre semasını ve servo mor-torların modellerini iletebilirmisiniz

    • Murat Duran
      15 Ekim 2015 at 22:45

      Servo motor olarak towerpro mg995 modelini kullanabilirsiniz.

      Bağlantı olarak aşağıdaki şemayı kurup pin yerlerini değiştirin.

      L293D Bağlantısı

  • fatih çakır
    16 Ekim 2015 at 19:30

    oncelikle yardımınız için teşekkur edereim fakat anlayamadıgım bir nokta var tekerleklere takılmıs olan servolardan 3 adet kablo geldiğine göre artı ve eksi olan breadboard da baglandı peki servonun veri kablosu yani her zaman aruıno pinine bagladıgımız olan sarı renkli kablo boştamı kalıyor? sensörü hareket ettirmek için kullanılan servo 4.pine baglanmış diğer servolar nasıl baglanıyor merak ediyorum yardımcı olursanız cok sevinirim

    • Murat Duran
      16 Ekim 2015 at 20:19

      Buradaki servo motorlar modifiye edilmiş normal dc motor gibi kullanılıyor.Servo içindeki sürücü sökülüp L293D ile sürülmekte

  • HİLAL GÜNGÖR
    14 Kasım 2015 at 20:46

    kardes sen ne mübarek bi insansın ya. kafayı yemiştik, yarışmaya katılamıcaktık bi sıkıntımız vardı sayende hallettik 🙂 eline koluna sağlık

  • cansu
    22 Kasım 2015 at 15:55

    merhaba biz bu robotu labirenti geçecek şekilde tasarlamak istiyoruz.bu konuda yardımcı olabilir misiniz

  • Hüseyin G
    6 Ocak 2016 at 18:56

    Rica etsem projede kullanılan plastik parçaların ölçülerini veya autocad dosyasını gönderirmisin …

  • Ahmet Emin Dilben
    28 Şubat 2016 at 20:20

    Hocam sorum acil cevaplarsanız sevinirim
    ben bu robotun ileri geri gidişini 2 motor ile yapmak istiyorum yani 2 dc motor 1 servo ile yapmak istiyorum nasıl yapıcam

  • Nusret Çarıkcı
    8 Mart 2016 at 01:54

    Merhabalar abicim ben devrenizi yapacağım proje ödevi olarak da bu kodları arduino ya girince exit status 1 hatası alıyorum

  • Nusret Çarıkcı
    8 Mart 2016 at 15:21

    tabi murat bey bir sorum daha olacak sizin verdiğiniz kodlar dc motor için de uyumlu mu ? büyük servo motor yerıne dc motor kullansam tekerler için

  • özgür saklanmaz
    26 Nisan 2016 at 18:58

    Öncelikle iyi günler dilerim. Bu projede arka tarafta dönüşleri sağlayan bir motor mu var acaba eğer öyle birşey ise devreye bağlantı şemasını aktarır mısınız rica etsem.

  • Doğukan Şenel
    29 Ocak 2017 at 13:25

    newping kütüphanisini nereden indirebilirim

  • okangndgd
    19 Nisan 2017 at 21:56

    Merhaba
    Paylaşımlarınız için teşekkürler öncelikle. Benim proje ödevimin konusu bu. Malesef ki yaptığınız çizimden dolayı karışık geldi. rica etsem https://circuits.io/ çizimini yapar mısınız. Lütfen çok acil.
    pazartesine ödevimi yetiştirmem gerekiyor. Yoksa dersten kalacam ve dolayısıyla sınıfta.
    teşekkürler.

  • Merve Çakır
    5 Ağustos 2017 at 03:27

    Merhaba, ben bilişim teknolojileri öğretmenliğinden mezunum. Ama Arduino adına okulda birşey öğretilmedi. Kendimi geliştirmek için bir proje yaparak öğrenmeyi düşünüyorum. Proje içinde; Arduino Prototype Shield ve Sparkfun Arduino motor shield birlikte kullanmam gerekiyor. Birkaç araştırma yaptım lakin birlikte entegre edilebildiğini görmedim. Acaba sadece birini kullanarak diğerinin de işlevlerini yerine getirebilir miyim?
    Şİmdiden Teşekkür Ederim…

YORUM YAP