4 Haziran 2015 Perşembe

Arduino ile Dinamik Far Asistanı ve Park Sensörü Projesi (Dynamic Headlights Assistant and Parking Sensor with the Arduino)

    Bu yazımızda,Arduino ile park sensörü ve uzunları kapat uygulamasıyla karşınızdayız.Sizde Ultrasonik sensör kullanarak kendi park sensörünüzü yapabilir ve bununla birlikte LDR (Light Depented Resistance) kullanarak uzunları otomatik kapatıp kısa farları yaktırabilirsiniz.


Kullanılan Malzemeler

-1 Adet Arduino Uno
-1 Adet Ultrasonik Sensör
-1 Adet LDR
-1 Adet 2*16 LCD
-3 Adet LED
-1 Adet 10k direnç
-3 Adet 330 ohm direnç(330-390 ohm arası olabilir)
-1 Adet Buzzer

Öncelikle biraz sensörlerden bahsetmek istiyorum.Çoğu teknolojik icatta olduğu gibi bu sensörümüzde doğadan ilham alınarak bulunmuştur.En iyi örneği yarasalar ve yunuslar yaratılıştan bu yana bu teknikle yollarını buluyor ve nesnelerin yerlerini tespit ediyorlar.
  Ultrasonik Sensör

Bu sensörle ölçüm yaparken aslında sensörümüz bize doğrudan mesafe bilgisini vermez.Bize verdiği değer gönderdiği ses dalgasının yansımasının geri dönüş süresidir.Biz de fizikteki en basit hareket denklemini kullanarak mesafeyi buluruz… X=V*t
Bu denklemde bildiğimiz tek şey sesin hızıdır V=343 m/s , t değerinide bize sensörümüz tarafından gelir ve mesafeyi bulmak için basit bir çarpma işlemi yapılır.Burada dikkat edilmesi gereken husus,sensörden gelen sürenin gidiş ve dönüş süresi olduğudur.Gidiş dönüşe eşittir.Yani bize sadece gittiği yada döndüğü süre lazım bunun için sensörden gelen t’yi ikiye bölmeyi unutmamak gerekir.Ve bir diğer husus mikrosaniye kullanımı yani saniyenin milyonda biri gibi küçücük bir zaman zarfında ses gönderip yankılanmasını dinliyoruz…



LDR
                         Biraz da ldr (light depented resistance),yani ışığa bağımlı dirençden bahsedecek olursak;



Elektrik devrelerin altın formulü olan V=I.R ‘dan sabit ve gerilimi veriyorken dirençte değişim varsa I akımı buna ters orantılı olarak değişecektir.Bizde bu değişimi analog girişimizden okuyayrak ışıktaki değişimi algılayıp,yapmamız gerekenleri yaptırıyoruz.
Devre Şeması


   
Arduino Kodları




//writed by ercancag
#define trigPin 4 // Trigger Pini (Ses gönderme)
#define echoPin 5 // Echo Pini (Yansıyan ses algılama)
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
int ldr = 0;             //analog pin to which LDR is connected
int ldr_value = 0;        //variable to store LDR values
int kisa =13;
int uzun =6;
int stp = 3;
int bzr =2;
int maksimumMesafe = 200; // Maksimum mesafe. Farketmesi için uzak nesneler daha büyük olmalıdır.
int minimumMesafe = 3; // Minimum mesafe
long microsaniyeSure, cmMesafe; // Mesafe hesabında kullanılan değişkenler
int ldr_pin=A0;
int tonePin = 2;
byte possible_patterns[9] = {
B00000000,
B00000001,
B00000011,
B00000111,
B00001111,
B00011111,
B00111111,
B01111111,
B11111111,
};
void setup() {
 Serial.begin (9600); // Seri iletişimi başlat
 pinMode(trigPin, OUTPUT); // Ses gönderme pin türünü çıkış olarak ayarla
 pinMode(echoPin, INPUT);  // Yansıyan ses algılama pin türünü giriş olarak ayarla
 lcd.begin(16, 2);
 pinMode(kisa, OUTPUT);
 pinMode(uzun, OUTPUT);
 pinMode(stp, OUTPUT);
 pinMode(bzr, OUTPUT);
 pinMode(tonePin, OUTPUT);
}
void loop() {
/* Aşağıda trigPin/echoPin döngüsü en yakın nesneden yansıyan sesin yansıma süresini hesaplar. */
 int ldr= analogRead(ldr_pin);
 Serial.println(ldr);
   
  
  
 digitalWrite(trigPin, LOW); // Hoparlör 2ms sessiz
 delayMicroseconds(2);
 digitalWrite(trigPin, HIGH); // Hoparlör 10ms sesli
 delayMicroseconds(10);
  
 digitalWrite(trigPin, LOW); // Hoparlör sessiz
 microsaniyeSure = pulseIn(echoPin, HIGH); // Mikrofonu dinle, yansıma süresini microsaniyeSure değişkenine al
  
// Serial.println(microsaniyeSure); // Sesin gitme ve geri yansıma süresi
 cmMesafe = microsaniyeSure/58.3; // microsaniyeSure'dan cm olarak mesafeyi hesapla
 lcd.clear();
if (ldr <= 500) {
   digitalWrite(kisa ,HIGH);
   digitalWrite(uzun ,HIGH);
   lcd.setCursor(0,0);
   lcd.print("Uzunlar Acik");
  }
   
   
  if (ldr >500) {
   digitalWrite(kisa ,HIGH);
   digitalWrite(uzun ,LOW);
   lcd.setCursor(0,0);
   lcd.print("Uzunlar Kapali ");
    
  }
   
   
if (cmMesafe >= 15 && cmMesafe <20){
   digitalWrite(stp ,LOW)  ;
   tone(tonePin,200000, 300);
   delay(100);
 }
   
if (cmMesafe >= 10 && cmMesafe <15){
   digitalWrite(stp ,LOW);
   tone(tonePin,200000, 50);
   delay(300);
}
if (cmMesafe >=5  && cmMesafe <10  ){
   digitalWrite(stp ,LOW);
   tone(tonePin, 200000,100);
}
if (cmMesafe <5  ){
   digitalWrite(stp ,HIGH);
   tone(tonePin, 200000);
}
if (cmMesafe >20  ){
   digitalWrite(stp ,LOW);
    noTone(tonePin);
   
}
  
 /* Seri iletişimden ölçülen mesafeyi bilgisayara gönder */
  lcd.setCursor(0,2);
 lcd.print("Mesafe  ");
 lcd.print(cmMesafe); //Mesafe bilgisi
 lcd.print(" cm"); // Birim değeri
  
  
 delay(1000);  //Sonraki ölçümden önce bekleme süresi.
}





Videomuz; 



Ercan ÇAĞLAYAN CÜ-EEM 2015

Hiç yorum yok:

Yorum Gönder