Arduino Sosyal Mesafe Projesi
Arduino Sosyal Mesafe projemizde, mesafe sensörü kullanarak sosyal mesafeyi aşan durumlarda uyarı veren bir sistem kuruyoruz.
Covid-19 ile mücadelede en etkili yöntemlerden biri sosyal mesafedir. Sosyal mesafe ile ilgili bir çok proje görmüş olabilirsiniz. Sosyal mesafe rozeti, Sosyal mesafe kaskı vs… Ama tüm cihazların mekanizması aynı şekilde çalışır. Bu yazımıda bu tür cihazların çalışma prensibi kavramaya çalışıyoruz. Bunu yapmak için bir mikrodenetleyiciye (biz Arduino Nano kullandık), mesafe sensörüne (HC-SR 04), enerji kaynağına yani pile ve son olarak, piezo buzzer’a ihtiyacımız var.
Ayrıca daha önce hazırladığımız NodeMCU ESP8266 ile Koronavirüs verilerini takip etme projesine göz atmanızı öneririz.
Çalışma Mantığı
Burada mesafeyi ölçmek için ultrasonik sensör kullanıyoruz ve Arduino bu mesafeyi sürekli olarak analiz ediyor. Mesafe 1 metreden daha az ölçüldüğünde, Arduino buzzer’ı açacak ve uyarı sesi çıkaracaktır.
Başlamadan önce bu devrede kullanılan bazı bileşenleri anlamamız gerekiyor.
Bağlantı Şeması
Arduino Nano D4 | HC-SR 04 Echo Pini |
Arduino Nano D3 | HC-SR 04 Trig Pini |
Arduino Nano GND | HC-SR 04 GND |
Arduino Nano 5V | HC-SR 04 Vcc |
Arduino Nano GND | Buzzer Negatif (-) |
Arduino Nano D13 | Buzzer Pozitif (+) |
Arduino Nano GND | 9V Pilin – Kutbuna |
Arduino Nano Vin | 9V Pilin + Kutbuna |
Arduino Nano
Arduino Nano, Arduino ailesindeki küçük geliştirme kartlarından biridir. Ve ATmega328 (Arduino Nano 3.x) tabanlı breadboard dostu bir geliştirme kartıdır. Arduino UNO ile aşağı yukarı aynı işlevselliğe sahiptir, ancak daha küçük boyutlara sahiptit. Yalnızca bir DC güç jakından yoksundur ve standart kablo yerine Mini-B USB kablosuyla çalışır.
Mesafe Sensörü HC-SR 04
Ultrasonik ses tabanlı bir mesafe sensörüdür. Bir vericisi ve bir alıcısı vardır. Bu bileşenden daha önceki yazılarımızın birinde ayrıntılı olarak bahsetmiştik. HC-SR 04’ü daha iyi anlamak için lütfen buradaki yazıyı okuyun.
Piezo Buzzer
Piezo buzzer, bazı frekanslarda ses üretebilen bir çıkış cihazıdır. Esas olarak piezo elektrik malzemesinden oluşur. Sadece iki terminali vardır ve farklı çalışma voltajlarında türleri vardır. Burada 5V modelini kullandık.
9V Pil (Tercihe bağlı şarj edilebilir)
Burada bu “Sosyal mesafe projesini” taşınabilir bir cihaz olarak tasarlıyoruz. Bu yüzden pil sistemi önemli bir şeydir. Sizde 9V şarj edilebilir pil kullanabilirsiniz. Alternatif olarak, genel bir 9V pil kullanabilirsiniz. Ancak şarj edilebilir pili tavsiye ederiz.
Proje Kodu
#define buzzerPini 4 #define mesafeSensoruPini 3 long int surec; int uzaklik; void setup() { pinMode(mesafeSensoruPini, OUTPUT); pinMode(buzzerPini, INPUT); pinMode(13, OUTPUT); } void loop() { digitalWrite(mesafeSensoruPini, LOW); delayMicroseconds(2); digitalWrite(mesafeSensoruPini, HIGH); delayMicroseconds(10); digitalWrite(mesafeSensoruPini, LOW); surec = pulseIn(buzzerPini, HIGH); uzaklik = (surec * 0.034 / 2); if (uzaklik < 100) { digitalWrite(13, HIGH); delay(500); digitalWrite(13, LOW); delay(500); } else { digitalWrite(7, LOW); } }
Kod Açıklaması
4 numaralı pinde buzzerPini ve 3 numaralı pinde mesafeSensoruPini tanımladık. Ardından iki değişken tanımladık. Birincisi süre(surec), ikinci değişken ise mesafedir(uzaklik).
#define buzzerPini 4
#define mesafeSensoruPini 3
long int surec;
int uzaklik;
Ardından kurulum bölümünüde;. mesafeSensoruPini “OUTPUT” ve buzzerPini “INPUT” olarak ayarladık. Burada buzzer’ı pin 13’e takıyoruz, bu yüzden pin 13’ü “OUTPUT” olarak ayarlamamız gerekiyor.
void setup() {
pinMode(mesafeSensoruPini, OUTPUT);
pinMode(buzzerPini, INPUT);
pinMode(13, OUTPUT);
}
Kurulum kısmı tamamlandı.
Daha sonra döngü bölümünü programladık. Döngü bölümünü ikiye bölebiliriz. Birincisi 1. bölüm, ikincisi 2. bölüm.
1. Bölüm
Bu kısım sensör ile nesne veya kişi arasındaki mesafeyi almak için kullanılır.
Önce mesafeSensoruPini 2 mikrosaniye boyunca “LOW” olarak ayarladık. Ardından 10 mikrosaniye için “HIGH” olarak ayarladık. mesafeSensoruPini tekrar “LOW” olarak ayarlaDIK. Ardından, “pulseIn()” işlevini kullanarak ultrasonik ses dalgasının toplam seyahat süresini değişken süreye kaydettik. Ardından süreyi 0.034 ile çarptık ve 2’ye böldük. Ardından, elde edilen değeri “uzaklik” değişkenine kaydettik. Şimdi, “uzaklik” değişkeninde sensör ve nesne arasındaki gerçek mesafeye sahibiz.
digitalWrite(mesafeSensoruPini, LOW);
delayMicroseconds(2);
digitalWrite(mesafeSensoruPini, HIGH);
delayMicroseconds(10);
digitalWrite(mesafeSensoruPini, LOW);
surec = pulseIn(buzzerPini, HIGH);
uzaklik = (surec * 0.034 / 2);
2. Bölüm
Bu kısım, mesafe 1 metreden veya 100 santimetreden az olduğunda sesli uyarıyı açmak için kullanılır.
Mesafe 100 santimetreden azsa, pin 13’ü (Buzzer pini) 500 milisaniye için “HIGH” ve ardından 500 milisaniye için “LOW” olarak ayarladık..
Aksi takdirde pin 13’ü “LOW” olarak tuttuk.
if (uzaklik < 100) {
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(500);
}
else {
digitalWrite(7, LOW);
}
Kodlama tamamlandı. Kodun tamamını Arduino Nano’ya yükleyin.
Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.