HC-SR04 ile Arduino Boy Ölçüm Cihazı
Ultrasonik mesafe sensörü kullanarak mesafe ölçmeyi ve sensör yüksekliğinden yararlanarak boy hesabı yapmayı öğreneceğiz.
Merhaba arkadaşlar. Şimdi Arduino kullanarak boy ölçüm cihazı yapacağız.
- Arduino
- Breadboard
- HC-SR04 ultrasonik mesafe sensörü
- 4 adet jumper kablo
HC-SR04 sensörü mesafe ölçmek için ultrasonik ses dalgası kullanır. VCC, Trig, Echo ve GND olmak üzere dört temel bağlantı pini bulunur.
- VCC pini Arduino 5V pinine bağlanır.
- Trig pini Arduino 11 numaralı pine bağlanır.
- Echo pini Arduino 10 numaralı pine bağlanır.
- GND pini Arduino GND pinine bağlanır.
Bu bağlantılarda 10 ve 11 numaralı pinlerin kullanılma sebebi kodda bu pinlerin tanımlanmış olmasıdır. İsterseniz bağlantı ve kodu birlikte değiştirerek farklı pinler de kullanabilirsiniz.
HC-SR04 sensörü ile mesafe ölçmek için önce Trig pinine kısa bir tetikleme sinyali gönderilir. Echo pininden dönen sinyalin süresi pulseIn() ile ölçülür.
Ölçülen süre kullanılarak sensör ile nesne arasındaki mesafe santimetre cinsinden hesaplanır. Pratik hesaplama için sure / 58 formülü kullanılabilir.
Orijinal kodda Trig pini 1000 mikro saniye HIGH yapılmıştı. HC-SR04 için yaygın kullanım 10 mikro saniyedir. Ayrıca pulseIn() için zaman aşımı eklemek ölçüm alınamadığında kodun beklemesini önler.
const int echo = 10;
const int trig = 11;
long sure = 0;
int mesafe = 0;
void setup() {
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
sure = pulseIn(echo, HIGH, 30000);
if (sure == 0) {
Serial.println("Olcum alinamadi");
} else {
mesafe = sure / 58;
Serial.print("Mesafe: ");
Serial.print(mesafe);
Serial.println(" cm");
}
delay(250);
}
Boy ölçer yapmak için sensör yüksek bir konuma sabitlenir. Örneğin sensör zeminden 200 cm yüksekliğe yerleştirilirse, kişinin başı ile sensör arasındaki mesafe ölçülür ve bu değer 200 cm’den çıkarılır.
Örneğin sensör yüksekliği 200 cm ve sensör ile kişinin başı arasındaki mesafe 35 cm ise kişinin boyu yaklaşık 165 cm olur.
Koddaki sensorYuksekligi değeri kendi kurulumunuzdaki sensör-zemin mesafesine göre değiştirilmelidir.
const int echo = 10;
const int trig = 11;
const int sensorYuksekligi = 200;
long sure = 0;
int uzaklik = 0;
int boy = 0;
void setup() {
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
sure = pulseIn(echo, HIGH, 30000);
if (sure == 0) {
Serial.println("Olcum alinamadi");
} else {
uzaklik = sure / 58;
boy = sensorYuksekligi - uzaklik;
Serial.print("Boy: ");
Serial.print(boy);
Serial.println(" cm");
}
delay(250);
}
const int echo = 10;
const int trig = 11;
const int sensorYuksekligi = 200;
void setup() {
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
Serial.begin(9600);
}
void loop() {
int uzaklik = mesafeOlc();
if (uzaklik == -1) {
Serial.println("Olcum alinamadi");
} else {
int boy = sensorYuksekligi - uzaklik;
if (boy < 0) {
boy = 0;
}
Serial.print("Sensor-Ust Mesafe: ");
Serial.print(uzaklik);
Serial.print(" cm | Boy: ");
Serial.print(boy);
Serial.println(" cm");
}
delay(250);
}
int mesafeOlc() {
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
long sure = pulseIn(echo, HIGH, 30000);
if (sure == 0) {
return -1;
}
return sure / 58;
}
Bu sürümde mesafe ölçümü ayrı fonksiyona alındı. Ölçüm alınamazsa Seri Port Ekranı’na bilgi yazdırılır ve negatif boy değeri oluşması engellenir.
Boy değerini bilgisayar ortamında görebilmek için Arduino IDE üzerinden Seri Port Ekranı’nı açabilirsiniz.