Arduino İle Görme Engelliler İçin Yönlendirici Robot

0
6189
Arduino İle Görme Engelliler İçin Yönlendirici Robot
Arduino İle Görme Engelliler İçin Yönlendirici Robot

Arduino İle Görme Engelliler İçin Yönlendirici Robot

Ülkemizdeki yolları engelli kardeşlerimiz için daha kullanılır hale getirmeye çalışmak aslında sadece belediyelerin değil, herkesin görevi. Bu projede görme engelli vatandaşlarımız için HC-SR04 sensörü ile tekerlek ve motor kullanarak önlerindeki engelleri algılayabileceği bir cihaz geliştireceğiz.

Kullanılan Malzemeler

  • Bir adet baston/sopa,
  • 3 adet tekerlek ve 12V DC motor,
  • Bir adet buton,
  • 3 adet 1 kiloohm direnç,
  • Bir adet Arduino Uno kartı,
  • 3 adet BC237 transistör,
  • 3 adet 1uF kondansatör,
  • 3 adet 1n4001 diyot,
  • 1 adet 12 volt güç kaynağı,
  • 3 adet HC-SR04 masafe sensörü.

Tasarım

Yaptığımız proje, görme engelli bir kişinin elindeki sopa veya baston gibi bir nesnenin zemine yakın kısmına monte edilecektir. Bastonun el ile tutulan kısmına bir buton koyarak robotun çalışmasını başlatıp durdurabiliriz. Butonun bir ucu Arduino kartının dijital 6 pinine diğer ucu toprağa bağlanmıştır.

Alt tarafta, projemizin ana kısmı Arduino, tekerlek, motor devreleri ve sensörler yer alacaktır. Bu proje için 3 sensör, 3 motor ve tekerlek devresi planlanmıştır. Sizler daha çok sensör ile daha fazla kontrol alanı oluşturarak projeyi geliştirebilirsiniz.

Sensörlerimiz HC-SR04 sensörleridir, ki önceki projelerimizde bu sensörleri kullanmıştık; Ön, sağ ve sol sensörler. Ön sensör ön motoru, sağ sensör sağ ve sol motoru, sol sensörde sol ve sağ motoru kontrol etmektedir.

3 motor içinde aynı devre kullanılacaktır. Bu motor devresini daha önceki projelerimizde kullanmıştık.

Kodlar

Cihaz üstündeki butona basıldığı takdirde motorlar çalışmaya başlayacaktır. Ön motor diğer motorlara göre daha hızlı gitmektedir, ki yalpalama halinde öne doğru gitme işi devam etsin. Daha sonraki aşamada üç sensörde mesafe algılaması yapar. Burada eşik mesafesi 5 cm‘dir. Eğer nesne algılaması önden olursa motorların hepsi durur. Eğer sağdan olursa sol motor durur, sağ ve ön motor çalışmaya devam eder. Eğer soldan nesne algılanırsa sağ motor durur, sol ve ön motorlar çalışmaya devam eder. Temel bir nitelikte olan bu proje kodlarını daha da geliştirerek kullanmanız daha güzel ve duyarlı cihazları ortaya çıkarır. Kodları daha iyi anlamak için açıklamalara bakınız.

// motorun pinleri

const int motor_on_pin=9;

const int motor_sag_pin=10;

const int motor_sol_pin=11;



// sensörlerin trig ve echo pinleri

#define on_trig_pin 0

#define on_echo_pin 1



#define sag_trig_pin 2

#define sag_echo_pin 3



#define sol_trig_pin 4

#define sol_echo_pin 5



// butonun pini

#define buton 6

void setup()

{

  Serial.begin(9600); //seri iletişim başlatılıyor.

  pinMode(on_trig_pin,OUTPUT); 

  pinMode(on_echo_pin,INPUT); 

  pinMode(sag_trig_pin,OUTPUT); 

  pinMode(sag_echo_pin,INPUT); 

  pinMode(sol_trig_pin,OUTPUT); 

  pinMode(sol_echo_pin,INPUT); 

  

  pinMode(motor_on_pin,OUTPUT);

  pinMode(motor_sag_pin,OUTPUT);

  pinMode(motor_sol_pin,OUTPUT);

  

    

 }

 

 void loop()

 {

   

   if(buton==HIGH)

   {

     // butona basıldığında

     // motorlar çalışmaya başlar

     

  analogWrite(motor_on_pin,255); 

  analogWrite(motor_sag_pin,100);

  analogWrite(motor_sol_pin,100);



  //ön motor için 

  //sensörün mesafeyi hesaplaması

  

  long sure_on, mesafe_on; // ses sinyalinin hesabı için sure_on ve mesafe_on değişkenleri

  digitalWrite(on_trig_pin, LOW);  // ses sinyali beklemede

  delayMicroseconds(2); // 2 mikrosaniye sonra

  digitalWrite(on_trig_pin, HIGH); // ses sinyali yükseltiliyor

  delayMicroseconds(10); // 10 mikrosaniye sonra

  digitalWrite(on_trig_pin, LOW); // ses sinyali alçaltılıyor

  sure_on = pulseIn(on_echo_pin, HIGH); // ses sinyalinin alınması sorgulanıyor

  mesafe_on = (sure_on/ 58.2); // mesafe_on için hesaplama yapılıyor

  

  if (mesafe_on < 10) 

  {  // eğer nesne ile sensör arasındaki mesafe_on 5 cm'den küçülürse

  analogWrite(motor_on_pin,0); // motorlar durur

  analogWrite(motor_sag_pin,0);

  analogWrite(motor_sol_pin,0);

}

  else { // 5 cm'den uzaksa 

    analogWrite(motor_on_pin,255); // motorlar çalışmaya devam eder

    analogWrite(motor_sag_pin,100);

    analogWrite(motor_sol_pin,100);  

}

  

  delay(100);

 

 //sağ motor için 

  //sensörün mesafeyi hesaplaması

  

  long sure_sag, mesafe_sag; // ses sinyalinin hesabı için sure ve mesafe değişkenleri

  digitalWrite(sag_trig_pin, LOW);  // ses sinyali beklemede

  delayMicroseconds(2); // 2 mikrosaniye sonra

  digitalWrite(sag_trig_pin, HIGH); // ses sinyali yükseltiliyor

  delayMicroseconds(10); // 10 mikrosaniye sonra

  digitalWrite(sag_trig_pin, LOW); // ses sinyali alçaltılıyor

  sure_sag = pulseIn(sag_echo_pin, HIGH); // ses sinyalinin alınması sorgulanıyor

  mesafe_sag = (sure_sag/ 58.2); // mesafe_on için hesaplama yapılıyor

  

  if (mesafe_sag < 10) 

  {  // eğer nesne ile sensör arasındaki mesafe_on 5 cm'den küçülürse

  analogWrite(motor_sol_pin,0); // sol motor durur

  analogWrite(motor_on_pin,100); // on ve sag motor devam eder

  analogWrite(motor_sag_pin,255);

}

  else { // 5 cm'den uzaksa 

    analogWrite(motor_sag_pin,100); // sag motor çalışmaya devam eder

  }

  

  delay(100);

  

   //sol motor için 

  //sensörün mesafeyi hesaplaması

  

  long sure_sol, mesafe_sol; // ses sinyalinin hesabı için sure ve mesafe değişkenleri

  digitalWrite(sol_trig_pin, LOW);  // ses sinyali beklemede

  delayMicroseconds(2); // 2 mikrosaniye sonra

  digitalWrite(sol_trig_pin, HIGH); // ses sinyali yükseltiliyor

  delayMicroseconds(10); // 10 mikrosaniye sonra

  digitalWrite(sol_trig_pin, LOW); // ses sinyali alçaltılıyor

  sure_sol = pulseIn(sol_echo_pin, HIGH); // ses sinyalinin alınması sorgulanıyor

  mesafe_sol = (sure_sol/ 58.2); // mesafe_on için hesaplama yapılıyor

  

  if (mesafe_sol < 10) 

  {  // eğer nesne ile sensör arasındaki mesafe_on 5 cm'den küçülürse

  analogWrite(motor_sag_pin,0); // sağ motor durur

  analogWrite(motor_sol_pin,255); // sol ve on motor çalışır

  analogWrite(motor_on_pin,100);

}

  else { // 5 cm'den uzaksa 

    analogWrite(motor_sol_pin,100); // sol motor çalışmaya devam eder

    

  }

  

  delay(100);

 

 

 }

 // başlatma butonuna basılmamışsa

 // motorlar çalışmaz

 else 

 {

   analogWrite(motor_on_pin,0);

   analogWrite(motor_sag_pin,0);

   analogWrite(motor_sol_pin,0);

 }

 

 delay(500);

 

 

 }

 

CEVAP VER

Please enter your comment!
Please enter your name here