Yazılar Eğitimler Arduino Eğitimi

HC-SR04 sensörü ile engelden kaçan araç yapımı

Merhaba,

Hareketli araçlar sanayi devriminden beri hayatımızın içinde olan bir teknoloji. Bunu daha iyisi ise kendi kenidini kontrol edilen arabalar.

Bir önceki çalışmamızda kendi kendine hareket edebilen bir araç yapmıştık. Bunu biraz daha geliştirip engelleri farkeden ve engellerden kaçınan bir araç yapmaya ne dersiniz ?

Ultra sonik sensör bir ucundan gönderdiği ses dalgalarının diğer ucuna gelmesi ile arasında geçen süreyi temel alarak bir takım matematiksel işlemler gerçekleştirerek sensörün baktığı yöndeki en yakın katı cisimle arasındaki mesafe bilgisini bize cm türünden döndüren donanımımızdır.

Ne Yapacağız:

Arduino Uno ile BreadBoard üzerine L298Shield’dan oluşan bir devre kurmuştuk şimdi ona ekleme olarak HC-SR04 adlı ultrasonik sensörü ekleyeceğiz ve engellerden kaçmasını sağlayacağız.
Kullanacağmız farklı blokları tanıyacağız.

Araç hareketlerini gözlemleyeceğiz.
Gerekli Malzemeler:

1 Adet Arduino Uno.
1 Adet Breadboard.
1 Adet L298shield motor kontrolcüsü.
11 Adet iki ucu erkek jumper kablo.
8 Adet bir ucu erkek bir ucu dişi jumper kablo.
2 Adet 9V pil ve pil yatağı.
Gerekli Araçlar:

Mblock
3DRoboLab Türkçe bloklar.
MBlock uygulamasına 3DRoboLab Türkçe bloklar uzantısı ekleme.

Programı çalıştırıp üst kısımdaki araç çubuğundan uzantılar ikonuna tıklıyoruz.

Daha sonra açılan pencereden Uzantıları Yönet ikonuna tıklıyoruz.

Açılan Pencerenin Arama bölümüne 3DRoboLab yazıyoruz.

Daha sonra 3DRoboLab adlı uzantıyı indirip, Uzantı ekle ikonuna tıklıyoruz ve 3DRoboLab Türkçe Bloklar MBlock kütüphanenize eklenmiş oluyor.

basit uygulamalar için hazırlamış olduğumuz kodların çalışmasında herhangi ek bir işlem yapmanıza gerek yoktur.

MBlock Programı üzerinden Arduino kartına bağlanma.

Programı çalıştırıp üst kısımdaki araç çubuğundan Kartlar ikonuna tıklıyoruz.

Daha sonra açılan pencereden kullandığımız kartı seçiyoruz.

Kartı seçtikten sonra gene araç çubuğu üzerinde bulunan Bağlan ikonuna tıklıyoruz.

Karşımıza çıkan pencerede seri port’un üzerine geliyoruz ve yan tarafta bağlı COM’lar çıkıyor. Arduino kartı hangi COM’da bağlıysa o COM’u seçiyoruz ve program üzerinden karta bağlanmış oluyoruz.

Devremizin Kurulumuna Geçebiliriz.

 

Arduino Uno ve BreadBoard devresinin kurulması;

Bir önceki çalışmada hazırladığımız basit araç çalışmasının üzerine ultra sonik sensörü ekleyeceğiz. Sonik sensörün Vcc ucuna Arduino üzerindeki 5v çıkışına bağlıyoruz. GND ucunu ise breadboard üzerindeki çoğaltılan GNDlerden birisine bağlıyoruz.TRG(trigger) yani tetikleyici pinimizi arduinonun 13. Ve ECHO(eko) pinini arduinonun 12. Pinine bağlıyoruz

Şimdi kullanacağımız blokları tanıyalım.

Sürekli tekrarla cihazımız elektrik aldığı sürece çalışmaya devam edeceğini belirtir. Güç bağlantısı kesilene kadar veya farklı bir program yükleninceye kadar işlemine devam eder.

yön değişkeni oluşturma. Aracımızın bir engelle karşılaştığında kaçınacağı  yönü rastgele (sağ veya sol)olarak belirlemek için oluşturduğumuz bir sayı. Aracımızın belirlenen sayıya göre gideceği yönü belirlemesine yardımcı olur.

Ultrasoniksensör oku sensörümüzün okuduğu mesafe bilgisini bize cm türünden döndüren kod bloğumuz.

Karşılaştırma blokları içine girilen sayıların büyük veya küçük olma durumuna göre bizi bu duruma denk gelen sonuca götüren kod bloğu.

Bekleme bloğu aracımızdaki pinlere sinyal gittiği süreden sonra belirli bir süre boyunca aynı işlemi devam ettirmesini istediğimiz için tekrar yön belirlenene kadar,
aynı işi devam ettirmemiz için cihazı bekleten yardımcı blok.

Sayısal pin çıkışı belirleme bloğu elektrik vericeğimiz pinlerin aktiflik durumunu belirlememizi sağlayan sayısal bloklardır. Yüksek durumunda iken elektrik sağlar. Motorun pinlerinden birisi yüksek diğeri düşük ise motor hareket sağlar.
Bu özellikten yararlanarak aracımızın ileri geri sağa yada sola gitmesini sağlıyoruz.

#include <Arduino.h>
#include <Wire.h>
#include <SoftwareSerial.h>

 /* 3D Robotic Laboratory: www.3drobolab.com */
double angle_rad = PI/180.0;
double angle_deg = 180.0/PI;
double __var__121_246_110;
float getDistance(int trig,int echo){
    pinMode(trig,OUTPUT);
    digitalWrite(trig,LOW);
    delayMicroseconds(2);
    digitalWrite(trig,HIGH);
    delayMicroseconds(10);
    digitalWrite(trig,LOW);
    pinMode(echo, INPUT);
    return pulseIn(echo,HIGH,30000)/58.0;
}

void setup(){
    pinMode(11,OUTPUT);
    pinMode(10,OUTPUT);
    pinMode(9,OUTPUT);
    pinMode(6,OUTPUT);
}

void loop(){
    if(((1) < (getDistance(13,12))) && ((10) > (getDistance(13,12)))){
        __var__121_246_110 = random(1,(5)+1);
        if(((__var__121_246_110)==(1))){
            digitalWrite(11,1);
            digitalWrite(10,0);
            digitalWrite(9,0);
            digitalWrite(6,0);
            _delay(1);
        }
        if(((__var__121_246_110)==(2))){
            digitalWrite(11,0);
            digitalWrite(10,0);
            digitalWrite(9,1);
            digitalWrite(6,0);
            _delay(1);
        }
    }else{
        digitalWrite(11,1);
        digitalWrite(10,0);
        digitalWrite(9,1);
        digitalWrite(6,0);
    }
    _loop();
}

void _delay(float seconds){
    long endTime = millis() + seconds * 1000;
    while(millis() < endTime)_loop();
}

void _loop(){
}

 

Hazırladığımız kod bloklarının Arduinonun anlayacağı dile (C/C++) çevriliyor. Kodları yüklemek için Arduino’ya yükle butonuna tıklamanız yeterlidir.

Kodlar derlendikten sonra Arduino’ya 30-50 sn. arasında yüklenmiş olacaktır.

İyi Eğlenceler…

 

Mete Han Çetin
administrator
No comments yet! You be the first to comment.

Bir cevap yazın