Herkese merhabalar.
Bu dersimizde bir önceki etkinlikte çalışma prensibini ve nasıl kullanıldığını öğrendiğimiz HC-SR04 ultrasonik mesafe sensöründen yararlanarak ses ikazlı park sensörü uygulaması yapacağız.
Etkinliğimize geçmeden önce ultrasonik mesafe sensörü HC-SR04 ün çalışma prensibini kısaca bir hatırlayalım.
Ultrasonik mesafe sensörünün VCC bağlantı ucu 5Volta, GND çıkışı ise arduinonun GND kapısına bağlanmalıdır. Sonrasında Trig ve Echo uçlarını ise arduinonun dijital kapılarından uygun olanlara bağlayayabilirsiniz.
Sensörün Trig pininden uygulanan sinyal bir ses yayılması sağlar. Bu ses dalgası herhangi bir cisme çarpıp sensöre geri döndüğünde, Echo pini aktif hale gelir. Biz ise bu iki sinyal arasındaki süreyi ölçerek -yani sesin yankısını yakalayarak- cismin sensöre olan uzaklığını hesaplayabiliriz.
***HC-SR 04 Ultrasonik Mesafe Sensörünün daha detaylı anlatımı için “ Ders 7-Arduino ile mesafe sensörü kullanımı” videosunu izleyebilirsiniz.
Şimdi devremizin kurulumuna geçelim. Öncelikle çalışma alanımıza bir adet arduino , bir adet breadboard , bir buzzer (piezo) , bir ultrasonik mesafe sensörü ( HC-SR04 ) ve bir adet direnç ekliyoruz.
Devrenin kablo bağlantılarını gerçekleştirmeye başlayalım.Önce breadboard ve arduino arasındaki GND ve 5V bağlantılarını yapıyoruz.
Mesafe sensörünün VCC ucunu 5V kapısına GND ucunu GND kapısına bağlıyoruz. Trig ucunu 7 nolu kapıya, Echo ucunu ise 6 nolu kapıya bağlıyoruz.
Şimdi sıra Buzzerın kablo bağlantılarını gerçekleştirmeye geldi. İsterseniz önce Buzzer elemanını daha yakından inceleyelim.
Buzzer devre elemanını aslında ufak bir hoparlör olarak tanımlayabiliriz. Ancak hoparlörler kadar yüksek ve detaylı ses üretemezler. Bunun yerine “bip” leme sesleri çıkarırlar.
2 çeşit buzzer vardır. Bunlar, aktif ve pasif buzzerlardır.
Aktif buzzer istenilen notaya göre ses çıkarabilir ve yazılımlarla çeşitli melodi ve uyarı tonlarının yapılmasına olanak sağlar. Pasif buzzer ise, sadece tek bir tonda ses çıkaran ve sadece uyarı amacı ile kullanılan buzzerlardır. Biz projemizde aktif buzzer kullanacağız.
Kablo bağlantılarını gerçekleştirmeye devam ediyoruz.
Buzzerın eksi ucunu breadboard üzerindeki GND hattına, artı ucunu ise arduino üzerinde rastgele seçtiğimiz 8 nolu dijital kapıya bağlantısını yapıyoruz. Son olarak direnç değerimizi değiştirmemiz gerekiyor.
Direncin üzerine tıklayarak açılan diyalog kutusundan direnç değerini 100 ohm olarak değiştiriyoruz.
Tüm kablo bağlantılarını gerçekleştirdiğimize göre devremizin kodlama bölümüne geçebiliriz.
Kod yazımına başlamadan önce ses ikazlı park sensörümüzün nasıl bir algoritma içerisinde çalışması gerektiğini kısaca özetleyelim.
Ses ikazları için üç farklı ikaz alarmı yapacağız.Bu ikaz alarmlarını kod bloğunun içinde fonksiyon olarak tanımlayıp algoritmamız gereği bazı şartlar oluştuğunda bu fonksiyonları aktif edeceğiz veya kapatacağız.
* 101 cm ile 300 cm arasında alarm1
*26 cm ile 100 cm arasında alarm2.
* 0 cm ile 25 cm arasında ise alarm3 devreye girip kullanıcıyı sesli ikaz vererek uyaracak.
Alarmlar 50,100 ve 200 milisaniye aralıklarla bip sesi çıkaracak. Bu sesi biz 15 hertzlik bir frekansa ayarlayacağız.
Şimdi kod penceremizi açıp eski kodları silelim.
Sonra kodlarımızı yazarak satır satır yorumlayalım.
//KODLAR
int echoPin=6; // Sensörün üzerindeki alıcı(echo) mikrofon pini
int trigPin=7; // Sensörün üzerindeki verici(trig) ses hoparlör pini
int buzzerPin=8; // Engele yaklaştığında öten buzzer pini
float sure,mesafe; //sure ve mesafe değişkenlerini float(kesirli sayı) veri tipinde tanımlıyoruz.
void setup() {
pinMode(trigPin, OUTPUT); // Giriş ve çıkış pinlerini ayarlıyoruz.
pinMode(echoPin, INPUT);
pinMode(buzzerPin, OUTPUT);
Serial.begin(9600); //Seri monitörü başlatmak için gerekli parametreyi giriyoruz.
}
void alarm1(){
tone(buzzerPin, 15); // 15 hertzlik sinyal gönderiyoruz.
delay(200); // 200 ms de bir
noTone(buzzerPin); // sinyali kapatıyoruz
delay(200);
}
void alarm2(){
tone(buzzerPin, 15); // 15 hertzlik sinyal gönderiyoruz.
delay(100); // 100 msde bir
noTone(buzzerPin); // sinyali kapatıyoruz
delay(100);
}
void alarm3(){
tone(buzzerPin, 15); // 15 hertzlik sinyal gönderiyoruz.
delay(50); // 50 msde bir
}
void loop() {
digitalWrite(trigPin,LOW); //Trig pinini kapatır.
delayMicroseconds(5); // 5 ms lik bir bekleme veriyoruz.
digitalWrite(trigPin, HIGH); // Sensörün Trig pininden uygulanan sinyal 40 kHz frekansında ultrasonik bir ses yayılmasını sağlar.
delayMicroseconds(5);
digitalWrite(trigPin , LOW); //Trig pinini kapatır.
sure = pulseIn(echoPin, HIGH); //Bu ses dalgası herhangi bir cisme çarpıp sensöre geri döndüğünde, Echo pini aktif hale gelir.
mesafe = (sure / 29.1) /2; //Echo pininden alınan değer yani "sure" değeri işlemden geçiriliyor.
Serial.print("mesafe = "); // Seri monitöre hesaplanan mesafe değerini seri monitöre yazdırıyoruz.
Serial.print(mesafe);
Serial.println("cm");
if (mesafe > 100 && mesafe <300 ){
alarm1(); // Eğer ses 100 cm den büyük ve 300 cm den küçükse alarm1 fonksiyonunu çalıştırır.
}
else if (mesafe > 25 && mesafe <=100 ){
alarm2(); // Eğer ses 25 cm den büyük ve 100 cm den küçük veya eşitse alarm2 fonksiyonunu çalıştırır.
}
else if(mesafe > 0 && mesafe <=25){
alarm3(); // Eğer ses 0 cm den büyük ve 25 cm den küçük veya eşitse alarm3 fonksiyonunu çalıştırır.
}
delay(300);
}
Kod yazımını bitirdiğimize göre kod penceresini küçültüp yana alarak Seri Monitör düğmesini aktif ettikten sonra “Simülasyon Başlat” tuşuna basarak devremizin nasıl çalıştığına bakabiliriz.
Mesafe sensörünün üzerindeki ayar çubuğundan engeli çeşitli mesafelere çekerek denemeler gerçekleştirelim.
Devremizin algoritmamızdaki gibi kritik mesafelerde çeşitli ses ikazlarını çalıştırdığı ve seri monitörde mesafe ölçümlerini isabetli yaptığını gözlemlediğimize göre etkinliğimizi sonlandırabiliriz.
Bir sonraki dersimizde görüşmek dileğiyle Hoşça kalın.
Bu dersin tinkercad adresi : https://www.tinkercad.com/things/2ioJinxnXwB