Search Code

Tutorial ESP32 27/55 - Mengukur Jarak dengan Sensor Ultrasonik | Kit Pembelajaran IoT ESP32 SunFounder

Tutorial ESP32 27/55 - Mengukur Jarak dengan Sensor Ultrasonik | Kit Pembelajaran IoT ESP32 SunFounder

Dalam tutorial ini, kita akan mempelajari cara menggunakan sensor jarak ultrasonik dengan ESP32 untuk mengukur jarak dan menampilkan hasilnya di layar. Kita juga akan mengeksplorasi cara mengaktifkan buzzer ketika sebuah objek terdeteksi dalam rentang tertentu. Proyek ini menyoroti fleksibilitas mikrokontroler ESP32, yang mengintegrasikan kemampuan Wi-Fi dan Bluetooth, sehingga cocok untuk berbagai aplikasi IoT.

prinsip_ultrasonik

Sepanjang panduan ini, Anda akan menemukan penjelasan tentang komponen perangkat keras, instruksi pengkabelan, dan potongan kode untuk membantu Anda mengimplementasikan proyek ini dengan sukses. Untuk kejelasan tambahan, silakan merujuk ke video (di video pada 00:00).

Penjelasan Perangkat Keras

Komponen utama dari proyek ini termasuk mikrokontroler ESP32, sensor ultrasonik (HC-SR04), dan sebuah buzzer. Sensor ultrasonik terdiri dari dua bagian utama: sebuah pemancar yang memancarkan gelombang ultrasonik dan sebuah penerima yang mendengarkan gelombang yang dipantulkan. Dengan mengukur waktu yang dibutuhkan gelombang untuk kembali, kita dapat menghitung jarak ke sebuah objek.

ESP32 berfungsi sebagai pengontrol pusat, memproses data dari sensor ultrasonik dan mengendalikan buzzer berdasarkan jarak yang diukur. Buzzer akan berbunyi ketika jarak yang terdeteksi kurang dari ambang batas yang ditentukan, menunjukkan bahwa sebuah objek terlalu dekat.

Detail Datasheet

Produsen HC-SR04
Nomor bagian HC-SR04
Tegangan logika/IO 5 V
Tegangan suplai 5 V
Arus keluaran (per saluran) 16 mA
Arus puncak (per saluran)
Panduan frekuensi PWM
Ambang batas logika masukan
Penurunan tegangan / RDS(on) / saturasi
Batas termal
Kemasan
Catatan / varian Rentang pengukuran: 2 cm hingga 400 cm

 

  • Pastikan suplai daya 5 V yang tepat untuk sensor.
  • Jaga jalur yang jelas untuk gelombang ultrasonik agar menghindari interferensi.
  • Gunakan kabel pendek untuk meminimalkan penundaan sinyal dan kebisingan.
  • Pastikan koneksi pin yang benar untuk menghindari kesalahan komunikasi.
  • Uji sensor di berbagai lingkungan untuk memeriksa akurasi.

Instruksi Pengkabelan

ESP32-27_ultrasonic_wiring

Untuk menghubungkan sensor ultrasonik ke ESP32, sambungkan pin VCC sensor ke pin 5V pada ESP32. Selanjutnya, sambungkan pin GND sensor ke salah satu pin ground (GND) pada ESP32. Pin pemicu (Trig) dari sensor harus dihubungkan ke GPIO 26 pada ESP32, sedangkan pin gema (Echo) harus dihubungkan ke GPIO 25. Pengaturan ini memungkinkan ESP32 untuk mengirim sinyal ke sensor dan menerima sinyal gema untuk menghitung jarak.

skema_ultrasonik_ESP32-27

Untuk buzzer, sambungkan kaki positif (panjang) ke GPIO 12 pada ESP32 dan kaki negatif (pendek) ke GND. Pastikan semua koneksi aman untuk mencegah kabel longgar selama pengoperasian. Jika menggunakan papan roti, sejajarkan koneksi buzzer dengan benar untuk menghindari kesalahan pengkabelan. Pastikan untuk merujuk ke video untuk konfirmasi pengkabelan (di video pada 05:12).

Contoh Kode & Penjelasan

Kode menginisialisasi pin untuk sensor ultrasonik dan mengatur komunikasi serial. Fungsi utama, readSensorData(), bertanggung jawab untuk mengirim sinyal pemicu dan mengukur waktu respons dari pin gema.

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

void setup() {
  Serial.begin(115200);
  pinMode(echoPin, INPUT);
  pinMode(trigPin, OUTPUT);
  Serial.println("Sensor ultrasonik:");  
}

Kode mendefinisikan echoPin dan trigPin sebagai konstanta untuk pin yang terhubung ke sensor ultrasonik. Dalam fungsi setup(), kita menginisialisasi komunikasi serial dan mengatur mode pin sesuai.

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;
}

Kutipan ini menunjukkan fungsi readSensorData(), yang mengirim pulsa 10 mikrodetik ke pin pemicu. Fungsi ini kemudian mengukur waktu yang dibutuhkan pin gema untuk menerima sinyal kembali, menghitung jarak, dan mengembalikan nilai ini.

Terakhir, fungsi loop terus membaca jarak dan mencetaknya ke monitor serial. Jika jarak di bawah 20 cm, buzzer akan diaktifkan.

Demonstrasi / Apa yang Diharapkan

Ketika Anda menjalankan program, ESP32 akan menampilkan jarak yang diukur dalam sentimeter di monitor serial. Jika sebuah objek masuk dalam jarak 20 cm dari sensor, buzzer akan berbunyi. Perilaku ini dapat diuji dengan menempatkan objek pada berbagai jarak di depan sensor. Berhati-hatilah terhadap polaritas terbalik dan pastikan koneksi dibuat sesuai spesifikasi untuk menghindari masalah selama pengoperasian (di video pada 08:00).

Stempel Waktu Video

  • 00:00 Mulai
  • 1:46 Pengenalan Sensor Ultrasonik
  • 6:02 Penjelasan Pengkabelan
  • 7:37 Penjelasan kode ESP32 Arduino
  • 11:33 Memilih papan ESP32 dan port COM di Arduino IDE
  • 13:15 Demonstrasi pengukuran jarak
  • 16:43 Aksi tindak lanjut dengan jarak: buzzer

Gambar

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
Bahasa: 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;
}

Hal-hal yang mungkin Anda butuhkan

Berkas📁

Tidak ada file tersedia.