Arduino İle SONAR

803
5 Mart 2016 Ömer Faruk Uçar tarafından

Arkadaşlar merhaba, bu videomuz da basit ve eğlenceli bir sonar projesi yapıyoruz 🙂

Video konu hakkında gerekli her bilgiyi fazlası ile ortaya koyuyor. O yüzden burada pek bir şey belirtmeye gerek yok. Fakat burası boş kalmasın diye en azından çokça kişinin karıştırdığı radar ve sonar hakkında ufak bir bilgi verelim:)

Radar ve Sonar
Sonar (İngiltere’de daha önce ASDIK olarak bilinirdi), su altında ses dalgaları kullanarak yön ve uzaklık bulmaya yarayan bir sistemdir. Radar da aynı ilkeye dayanmakla birlikte ses dalgaları yerine radyo dalgalarından yararlanır.

İki sistem de temelde basittir Akustik (ses) ya da elektromagnetik (radyo) dalgalar yollanır. Bu dalgalar katı bir cisme çaptıkları zaman, bir kısmı yansır ve geri gelerek, bir ses ya da dalga yankısı oluşturur. Alınan yol, dalganın gidiş ve gelişi arasında geçen zamanla, dalganın hızı çarpılarak bulunur. Normal olarak bu, söz konusu cisme uzaklığın iki katıdır. İkinci dünya savaşı sırasında yapılan ilk radarlar, taşınmak için treylere yüklenirdi. Bazılarında, radar ışınını yönlendirmeye yarayan bir “mercek” vardı.
Kaynak: http://www.bilgiustam.com/radar-ve-sonar/

Evet sonar ile radar arasındaki fark aslında bu kadar basit birisi elektromanyetik dalgalar kullanırken, diğeri ses dalgaları kullanıyor.

Bu arada videoya geçmeden önce şunlara bakmanızda fayda var:
Bu videoda 2 ana malzeme kullandık birisi Hc-Sr04 ultrasonik mesafe sensörü diğeri ise rc-servo motor. Bu 2 malzemenin nasıl kullandığını anlatan kaynak videolar hazırlamıştık zaten daha önce. Dolayısı ile videonun süresi uzamaması için bu 2 malzeme ile alakalı olan kısımları biraz hızlı geçtik. Eğer servo motor ve hc-sr04 hakkında bilgileriniz paslı ise aşağı linkler ile bir elden geçirmenizi tavsiye ederim:

Rc Servo Motor Arduino İle Nasıl Kullanılır ? –> Video için tıklayınız. 
Hc-Sr04 Mesafe Sensörü ve 29.1 Değeri ? –> Video için tıklayınız. 

Umarım hoşunuza giden bir video olur, iyi seyirler, iyi çalışmalar 🙂

**Düzeltme*************************
02:19 Burada ledlerin bacakları boşta kalmış o ledlerin + uçları
videoda dendiği gibi ardunio dijital pinlerine gidiyor.
Muhtemelen çoğu kişi anlamıştır ama yinede belirtelim.

Uyarı için Aziz Demir’e teşekkürler.
*************************************

by2WJV

  • 5 tane mantar led   Video için tıklayınız.
  • 1 tane servo motor (yeni iseniz sg90 ideal) Video için tıklayınız.
  • 1 tane hc-sr04 ultrasonik mesafe sensörü Video için tıklayınız. 
  • 6 tane 220 ohm, 1 tane 10 kohm direnç Video için tıklayınız.
  • 1 tane potansiyometre (bu uygulama için değeri önemli değil)
  • 1 tane buzzer
  • 1 tane breadbord için push buton ( elektronikte yeni iseniz mutlaka 2 bacaklı olan butonlardan tercih edin)
  • 1 tane Breadbord  ve yeteri kadar jumper kablo   Video için tıklayınız.
  • ve tabii ki Arduino kartınız
  • Çok mühim değil ama hc-sr04 servo askı aparatı vb. ürünler alarak projenizi fiziki olarak daha rahat toplayabilirsiniz. Çift taraflı bant, karton, silikon gibi malzemeler ile yeteneğinizi konuşturarak kendi çözümlerinizi de üretebilirsiniz 🙂

konu devre şeması icon

sonar_v1-00_devre

QQl9ZV

/*
   Lezzetli Robot Tarifleri
   Arduino İle Sonar
   VİDEO >>> http://lezzetlirobottarifleri.com/video/arduino-ile-sonar
*/

#include<Servo.h>
Servo sg90;
const byte buton = 4;
const byte buzzer = 7;
const byte echo = 2;
const byte trig = 3;
const byte led1 = 8;
const byte led2 = 9;
const byte led3 = 10;
const byte led4 = 11;
const byte led5 = 12;
const byte pot_pini = A0;
int pot_deger = 0;
int pot_deger_ilk = 0;
int sure = 0;
int mesafe = 0;
int alarm_mesafesi = 0;
int pos = 0;
void setup()
{
  sg90.attach(5);
  sg90.write(90);
  pinMode(buton , INPUT);
  pinMode(buzzer , OUTPUT);
  pinMode(led1 , OUTPUT);
  pinMode(led2 , OUTPUT);
  pinMode(led3 , OUTPUT);
  pinMode(led4 , OUTPUT);
  pinMode(led5 , OUTPUT);
  pinMode(echo , INPUT);
  pinMode(trig , OUTPUT);
  Serial.begin(9600);

  pot_deger_ilk = analogRead(pot_pini);
  while (1)
  {
    for (int i = 8; i < 13; i++)
    {
      digitalWrite(i, 1);
      delay(50);
      digitalWrite(i, 0);
    }
    pot_deger = analogRead(pot_pini);
    if (pot_deger_ilk > pot_deger + 10 || pot_deger_ilk < pot_deger - 10)
      break;
  }
  while (1)
  {
    pot_deger = analogRead(pot_pini);
    pot_deger = map(pot_deger , 100 , 900, 1, 5);
    if (pot_deger == 1)
    {
      alarm_mesafesi = 10;
      digitalWrite(led1 , 1);
      digitalWrite(led2 , 0);
      digitalWrite(led3 , 0);
      digitalWrite(led4 , 0);
      digitalWrite(led5 , 0);
    }
    else if (pot_deger == 2)
    {
      alarm_mesafesi = 20;
      digitalWrite(led1 , 1);
      digitalWrite(led2 , 1);
      digitalWrite(led3 , 0);
      digitalWrite(led4 , 0);
      digitalWrite(led5 , 0);
    }
    else if (pot_deger == 3)
    {
      alarm_mesafesi = 30;
      digitalWrite(led1 , 1);
      digitalWrite(led2 , 1);
      digitalWrite(led3 , 1);
      digitalWrite(led4 , 0);
      digitalWrite(led5 , 0);
    }
    else if (pot_deger == 4)
    {
      alarm_mesafesi = 40;
      digitalWrite(led1 , 1);
      digitalWrite(led2 , 1);
      digitalWrite(led3 , 1);
      digitalWrite(led4 , 1);
      digitalWrite(led5 , 0);
    }
    else if (pot_deger == 5)
    {
      alarm_mesafesi = 50;
      digitalWrite(led1 , 1);
      digitalWrite(led2 , 1);
      digitalWrite(led3 , 1);
      digitalWrite(led4 , 1);
      digitalWrite(led5 , 1);
    }

    if (digitalRead(buton) == 1)
      break;
  }
}

void loop()
{
  for (pos = 0; pos <= 180; pos++)
  {
    sg90.write(pos);
    delay(15);
    mesafe = mesafe_olc();
    if (mesafe <= alarm_mesafesi)
    {
      digitalWrite(led1 , 1);
      digitalWrite(led2 , 1);
      digitalWrite(led3 , 1);
      digitalWrite(led4 , 1);
      digitalWrite(led5 , 1);
      digitalWrite(buzzer , 1);
    }
    if (digitalRead(buton) == 1)
    {
      digitalWrite(led1 , 0);
      digitalWrite(led2 , 0);
      digitalWrite(led3 , 0);
      digitalWrite(led4 , 0);
      digitalWrite(led5 , 0);
      digitalWrite(buzzer , 0);
    }
  }
  for (pos = 180; pos >= 0; pos--)
  {
    sg90.write(pos);
    delay(15);
    mesafe = mesafe_olc();
    if (mesafe <= alarm_mesafesi)
    {
      digitalWrite(led1 , 1);
      digitalWrite(led2 , 1);
      digitalWrite(led3 , 1);
      digitalWrite(led4 , 1);
      digitalWrite(led5 , 1);
      digitalWrite(buzzer , 1);
    }
    if (digitalRead(buton) == 1)
    {
      digitalWrite(led1 , 0);
      digitalWrite(led2 , 0);
      digitalWrite(led3 , 0);
      digitalWrite(led4 , 0);
      digitalWrite(led5 , 0);
      digitalWrite(buzzer , 0);
    }
  }
}
int mesafe_olc()
{
  digitalWrite(trig , HIGH);
  delay(1);
  digitalWrite(trig , LOW);
  sure = pulseIn(echo , HIGH);
  mesafe = (sure / 2) / 28.5;
  return mesafe;
}

Kategoriler Etiketler

Yorumunuzu ekleyin

E-posta hesabınız yayımlanmayacak.