Search Code

ESP32 Eğitimi 27/55 - Ultrasonik Sensör ile Mesafe Ölçme | SunFounder'ın ESP32 IoT Öğrenme Kiti

ESP32 Eğitimi 27/55 - Ultrasonik Sensör ile Mesafe Ölçme | SunFounder'ın ESP32 IoT Öğrenme Kiti

Bu eğitimde, ESP32 ile ultrasonik mesafe sensörünü kullanarak mesafeleri nasıl ölçeceğimizi ve sonuçları bir ekranda nasıl görüntüleyeceğimizi öğreneceğiz. Ayrıca, belirli bir aralıkta bir nesne algılandığında bir buzzer'ı nasıl etkinleştireceğimizi de keşfedeceğiz. Bu proje, Wi-Fi ve Bluetooth özelliklerini entegre eden ve çeşitli IoT uygulamaları için uygun olan ESP32 mikrodenetleyicisinin çok yönlülüğünü vurgular.

ultrasonic_principle

Bu kılavuz boyunca, donanım bileşenlerinin açıklamalarını, bağlantı talimatlarını ve projeyi başarıyla uygulamanıza yardımcı olacak kod parçacıklarını bulacaksınız. Ek netlik için lütfen videoya bakın (videoda 00:00'da).

Donanım Açıklaması

Bu projenin ana bileşenleri ESP32 mikrodenetleyicisi, ultrasonik sensör (HC-SR04) ve bir buzzer'dır. Ultrasonik sensör iki ana bölümden oluşur: ultrasonik dalgalar yayan bir verici ve yansıyan dalgaları dinleyen bir alıcı. Dalgaların geri dönmesi için geçen süreyi ölçerek bir nesneye olan mesafeyi hesaplayabiliriz.

ESP32, ultrasonik sensörden gelen verileri işleyen ve ölçülen mesafeye göre buzzer'ı kontrol eden merkezi denetleyici görevi görür. Algılanan mesafe belirli bir eşiğin altında olduğunda buzzer ses çıkaracak ve bu da bir nesnenin çok yakın olduğunu gösterir.

Veri Sayfası Ayrıntıları

Üretici HC-SR04
Parça numarası HC-SR04
Mantık/G/Ç voltajı 5 V
Besleme voltajı 5 V
Çıkış akımı (kanal başına) 16 mA
Tepe akımı (kanal başına)
PWM frekansı yönergesi
Giriş mantık eşikleri
Gerilim düşümü / RDS(on) / doyum
Termal sınırlar
Paket
Notlar / varyantlar Ölçüm aralığı: 2 cm ila 400 cm

 

  • Sensör için uygun 5 V güç kaynağı sağlayın.
  • Paraziti önlemek için ultrasonik dalgaların önünü açık tutun.
  • Sinyal gecikmesini ve gürültüyü en aza indirmek için kısa kablolar kullanın.
  • Yanlış iletişimi önlemek için doğru pin bağlantılarını sağlayın.
  • Doğruluğu kontrol etmek için sensörü çeşitli ortamlarda test edin.

Bağlantı Talimatları

ESP32-27_ultrasonic_wiring

Ultrasonik sensörü ESP32'ye bağlamak için sensörün VCC pinini ESP32 üzerindeki 5V pinine bağlayın. Ardından, sensörün GND pinini ESP32 üzerindeki toprak (GND) pinlerinden birine bağlayın. Sensördeki tetik pini (Trig), ESP32 üzerindeki GPIO 26'ya, yankı pini (Echo) ise GPIO 25'e bağlanmalıdır. Bu kurulum, ESP32'nin sensöre bir sinyal göndermesine ve mesafeyi hesaplamak için yankı sinyalini almasına olanak tanır.

ESP32-27_ultrasonic_schematic

Buzzer için, pozitif (uzun) bacağı ESP32 üzerindeki GPIO 12'ye ve negatif (kısa) bacağı GND'ye bağlayın. Çalışma sırasında gevşek bağlantıları önlemek için tüm bağlantıların güvenli olduğundan emin olun. Bir breadboard kullanıyorsanız, yanlış bağlantıyı önlemek için buzzer bağlantılarını doğru şekilde hizalayın. Bağlantıyı doğrulamak için videoya başvurduğunuzdan emin olun (videoda 05:12'de).

Kod Örnekleri ve Açıklama

Kod, ultrasonik sensör için pinleri başlatır ve seri iletişimi kurar. Ana işlev olan readSensorData(), bir tetik sinyali göndermekten ve yankı pininden gelen yanıt süresini ölçmekten sorumludur.

const int echoPin = 25;
const int trigPin = 26;

void setup() {
  Serial.begin(115200);
  pinMode(echoPin, INPUT);
  pinMode(trigPin, OUTPUT);
  Serial.println("Ultrasonik sensör:");  
}

Kod, ultrasonik sensöre bağlı pinler için echoPin ve trigPin sabitlerini tanımlar. setup() işlevinde, seri iletişimi başlatır ve pin modlarını buna göre ayarlarız.

float readSensorData() {
  digitalWrite(trigPin, LOW); 
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH); 
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
  unsigned long microsecond = pulseIn(echoPin, HIGH);
  float distance = microsecond / 29.00 / 2;
  return distance;
}

Bu alıntı, tetik pinine 10 mikrosaniyelik bir darbe gönderen readSensorData() işlevini gösterir. Ardından, yankı pininin sinyali geri alması için geçen süreyi ölçer, mesafeyi hesaplar ve bu değeri döndürür.

Son olarak, döngü işlevi sürekli olarak mesafeyi okur ve seri monitöre yazdırır. Mesafe 20 cm'nin altındaysa, buzzer etkinleştirilir.

Gösterim / Beklentiler

Programı çalıştırdığınızda, ESP32 ölçülen mesafeyi santimetre cinsinden seri monitörde görüntüleyecektir. Sensörün önüne 20 cm içinde bir nesne girerse, buzzer ses çıkaracaktır. Bu davranış, sensörün önüne çeşitli mesafelerde nesneler yerleştirilerek test edilebilir. Ters polariteye dikkat edin ve çalışma sırasında herhangi bir sorunu önlemek için bağlantıların belirtildiği gibi yapıldığından emin olun (videoda 08:00'da).

Video Zaman Damgaları

  • 00:00 Başlangıç
  • 1:46 Ultrasonik Sensöre Giriş
  • 6:02 Bağlantı şeması açıklandı
  • 7:37 ESP32 Arduino kodu açıklandı
  • 11:33 Arduino IDE'de ESP32 kartı ve COM portu seçimi
  • 13:15 Mesafe ölçümünün gösterimi
  • 16:43 Mesafeye göre eylem: buzzer

Görseller

ESP32-27_ultrasonic_wiring
ESP32-27_ultrasonic_wiring
ESP32-27_ultrasonic_schematic
ESP32-27_ultrasonic_schematic
ultrasonic_principle
ultrasonic_principle
827-ESP32 Tutorial 27/55- Arduino code for ultrasonic sensor
Dil: C++
// Define pins for the ultrasonic sensor
const int echoPin = 25;
const int trigPin = 26;

// Function prototype for reading sensor data
float readSensorData();

void setup() {
  // Begin serial communication at 115200 baud rate
  Serial.begin(115200);
  // Set echoPin as input and trigPin as output
  pinMode(echoPin, INPUT);
  pinMode(trigPin, OUTPUT);
  // Print sensor information to the serial monitor
  Serial.println("Ultrasonic sensor:");  
}

void loop() {
  // Read distance from the ultrasonic sensor
  float distance = readSensorData();
  // Print the measured distance to the serial monitor
  Serial.print(distance);   
  Serial.println(" cm");
  // Delay between readings
  delay(200);
}

// Function to read data from the ultrasonic sensor
float readSensorData() {
  // Trigger a low signal before sending a high signal
  digitalWrite(trigPin, LOW); 
  delayMicroseconds(2);
  // Send a 10-microsecond high signal to the trigPin
  digitalWrite(trigPin, HIGH); 
  delayMicroseconds(10);
  // Return to low signal
  digitalWrite(trigPin, LOW);
  
  // Measure the duration of the high signal on the echoPin
  unsigned long microsecond = pulseIn(echoPin, HIGH);

  // Calculate the distance using the speed of sound (29.00µs per centimeter)
  float distance = microsecond / 29.00 / 2;

  // Return the calculated distance
  return distance;
}

İhtiyacın olabileceğini düşünüyor

Dosyalar📁

Dosya mevcut değil.