GAZİ ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ GÖMÜLÜ BİLGİSAYAR SİSTEMLERİ 10.HAFTA Yrd. Doç. Dr. Fecir DURAN Arş. Gör. Esra SÖĞÜT
İÇİNDEKİLER HC-SR04 ULTRASONİK UZAKLIK ALGILAYICISI PULSEIN() BUZZER GEREKLİ FONKSİYONLAR MESAFE ÖLÇÜMÜ UYGULAMALARI SHARP INFRARED PROXİMİTY ALGILAYICISI
HC-SR04 Ultrasonik Uzaklık Algılayıcısı Uygulamada uzaklık ölçümü için HC-SR04 ultrasonik uzaklık algılayıcısı kullanılacaktır. Algılayıcı üzerinde giriş ve çıkış olmak üzere iki yüzey bulunmaktadır. Çıkış yüzeyinden ortama belirli bir frekansta ultrasonik ses dalgası salınır. Giriş yüzeyi de çıkış yüzeyinin ortama saldığı belirli frekanslardaki ses dalgalarını toplar. Dalganın çıkış yüzeyinden çıkmasıyla giriş yüzeyine ulaşması arasında geçen süre ölçülerek, cismin uzaklığı hesaplanır. Bu mantıkla çalışan algılayıcı, 2 cm ile 200 cm arasındaki uzaklıkları 1 cm hassasiyetle ölçebilmektedir. Algılayıcı bu aralık dışındaki uzaklıkları istikrarlı olarak ölçememektedir.
Uzaklık Algılayıcısı Algılayıcı üzerinde VCC, Trig, Echo, GND olmak üzere 4 adet pin bulunmaktadır. VCC pini besleme (5 volt), GND pini toprak hattıdır. Trig pini çıkış yüzeyinden dalganın salınmasını sağlayan pindir. Echo pini ise giriş yüzeyine yansıyan dalganın ulaştığını Arduino'ya haber veren pindir. Arduino'da trig pini çıkış, echo pini ise giriş olarak ayarlanmalıdır.
PulseIn() Bir pin üzerindeki bir pulse değeri (HIGH veya LOW) okur. Örneğin, değer HIGH ise, pulseIn () pinin HIGH (YÜKSEK) konumuna gelmesini bekler, zamanlamaya başlar, sonra pinin LOW (DÜŞÜK) olmasını bekler ve zamanlamayı durdurur. Pulse değerinin uzunluğunu mikrosaniye cinsinden döndürür veya zaman aşımı süresince tam darbe alınamıyorsa 0 döndürür.
Mesafe ölçümü Uygulaması-1 Uygulamada algılayıcı yardımıyla ölçülen uzaklığın görülmesi için, uzaklık bilgisinin seri haberleşmeyle bilgisayara aktarılmasını sağlayınız. Gerekli Donanımlar: Mesafe algılayıcısı Ardunio Board
UZAKLIĞIN HESAPLANMASI GEREKLİ AYARLARI YAP BAŞLA SES DALGASININ GERİ DÖNÜŞ SÜRESİNİN HESAPLANMASI EVET SENSÖR AKTİF Mİ? HAYIR SENSÖRÜ AKTİF HALE GETİR BİTİR
Bağlantı Şeması
Kodlar int trigPin = 6; //Sensorun trig pini Arduinonun //6 numaralı ayağına bağlandı int echoPin = 7; //Sensorun echo pini Arduinonun //7 numaralı ayağına bağlandı long sure; long uzaklik; void setup() { pinMode(trigPin, OUTPUT); //trig pini çıkış olarak ayarlandı pinMode(echoPin,INPUT); //echo pini giriş olarak ayarlandı Serial.begin(9600); //Seri haberlesme baslatildi }
Kodlar void loop() { digitalWrite(trigPin, LOW); /*sensör pasif hale getirildi*/ delayMicroseconds(5); digitalWrite(trigPin, HIGH); /*sensore ses dalgasını üretmesi için emir verildi */ delayMicroseconds(10); digitalWrite(trigPin, LOW); /* Yeni dalgaların üretilmemesi için trig pini LOW* konumuna getirildi */ sure = pulseIn(echoPin, HIGH); /* ses dalgasının geri dönmesi için geçen sure ölçülüyor*/ uzaklik= sure /29.1/2; /*ölçülen sure uzaklığa çevriliyor*/ if(uzaklik > 200) uzaklik = 200; Serial.print("Uzaklik "); Serial.print(uzaklik); /* hesaplanan uzaklık bilgisayara aktarılıyor */ Serial.println(" CM olarak olculmustur."); delay(500); }
Buzzer Buzzer dediğimiz devre elemanını ufak bir hoparlör olarak düşünebiliriz. Hoparlörler kadar yüksek ve detaylı ses üretemeseler de, “bip” leme seslerini çıkartmada oldukça başarılıdırlar. Bildiğimiz gibi hemen hemen her sesin kendine ait bir notası vardır. Notaların da her birine ait belirli bir frekans değeri vardır. Frekans arttıkça çıkan ses tizleşir.
Uygulama-2 Mesafe ölçümü için uygulama yapınız ve mesafe algılayıcısını kullanınız. Algılayıcı ile ortam arasındaki mesafe ilişkisini kurmak için Buzzer kullanınız. Aradaki mesafe azaldıkça Buzzer’dan çıkan sesin frekansını arttırınız ve mesafe arttıkça da ses frekansını azaltınız.
GEREKLİ AYARLARI YAP BAŞLA BUZZER 100 MS BİPLESİN EVET MESAFE 10 CM’DEN AZ MI? HAYIR BUZZER 200 MS BİPLESİN
Bağlantı Şeması
Uygulama-2 KODLAR #include <NewPing.h> #define TRIGGER_PIN 12 #define TRIGGER_PIN 12 // Arduino pin tied to trigger pin on the ultrasonic sensor. #define ECHO_PIN 11 // Arduino pin tied to echo pin on the ultrasonic sensor. #define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). // Maximum sensor distance is rated at 400-500cm. NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance. int buzzerPin = 10;
Uygulama-2 KODLAR void setup() { analogWrite(buzzerPin, 255); Serial.begin(9600); } void loop() { int distance; delay(100); Serial.print("Ping: "); distance = sonar.ping_cm(); warning(distance); }
Uygulama-2 KODLAR void warning(int distance ) { Serial.print(distance); Serial.println("cm"); if(distance > 50 || distance == 0) { analogWrite(buzzerPin, 255); delay(100); } else if(distance > 21) { analogWrite(buzzerPin, 150); // Buzzer'i 70 milisaniye delay(70); // boyunca biplet analogWrite(buzzerPin, 255); // Buzzer'i 430 milisaniye delay(430); // boyunca sustur // Eger mesafe 11 cm ve 21 cm arasinda ise else if(distance > 8) { analogWrite(buzzerPin, 150); // Buzzer'i 150 milisaniye delay(150); // boyunca biplet analogWrite(buzzerPin, 255); // Buzzer'i 200 milisaniye delay(200); // boyunca sustur } // Eger mesafe 10 cm'den kucukse else { 425 milisaniye delay(425); // boyunca sustur
Fonksiyonlar #include <NewPing.h> #define TRIGGER_PIN 12 #define TRIGGER_PIN 12 // Arduino pini, ultrasonik sensör üzerindeki tetikleme pinine bağlar #define ECHO_PIN 11 // Arduino pini ultrasonik sensör üzerindeki echo pinine bağlandı #define MAX_DISTANCE 200 //Ping yapmak istediğimiz maksimum mesafe (santimetre cinsinden). // Maksimum sensör mesafesi 400-500cm olarak derecelendirilmiştir. NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); //pin’lerin ve max mesafenin ayarlanması
SHARP Infrared Proximity Algılayıcısı
SHARP Infrared Proximity Algılayıcısı Bir kızılötesi ışık demeti parlatarak mesafeyi ölçer ve geri sıçrayan ışığın yoğunluğunu ölçmek için bir fototransitör kullanır. Analog Okuma API'sı ile A0 okumak, muhtemelen sensör değerini okumanın en basit yoludur, ancak en iyi yol değildir. Bu sensörler yüksek bir hata oranına sahiptir, bu nedenle ham değerleri bir yazılım filtresi ile çalıştırmak en iyisidir. "SharpIR" kütüphanesi bu işlemler için kullanılabilir.
SHARP Infrared Proximity Algılayıcısı Bu yakınlık sensörü için etkili mesafe ölçüm aralığı 10-80 cm'dir. Bir nesne en kısa mesafeden daha yakınsa, önemli ölçüde daha yüksek bir analog çıktı bildirir ve beklenen menzil sonuçlarıyla tutarsızdır. Örneğin, bir nesne sensörden 1 cm uzakta olduğunda, analogRead () değeri 322 olarak bildirir. Bununla birlikte, nesne 5 cm uzaklıktayken çıktı 655'dir.