2 Sensor Ultrasonic ESP32 body { font-family: sans-serif; line-height: 1.6; max-width: 800px; margin: 40px auto; padding: 0 20px; color:
#0078d7; color: white; padding: 20px; margin: 20px 0; border-radius: 5px; } 2 Sensor Ultrasonic ESP32
Dual Ultrasonic Sensor Example Distance Both 10CM
wokwi
Script MicroPython di atas mengimplementasikan pengukuran jarak menggunakan modul sensor ultrasonik pada ESP32. Skrip ini menggunakan dua sensor ultrasonik yang terhubung ke pin GPIO ESP32 yang berbeda untuk mengukur jarak ke objek di depannya. Kemudian, hasil pengukuran digunakan untuk mengontrol LED dan buzzer sebagai indikator jarak parkir.
Berikut adalah penjelasan skrip tersebut:
-
Impor Pustaka dan Inisialisasi Pin:
- Baris pertama mengimpor pustaka
Pin dari modul machine yang digunakan untuk mengendalikan pin GPIO pada ESP32.
- Baris kedua mengimpor modul
time untuk mengatur waktu dalam skrip.
- Baris ketiga mengimpor modul
_thread untuk mengaktifkan thread terpisah untuk setiap loop pengukuran.
- Baris kelima mendefinisikan objek
trigger_pin yang terhubung ke pin GPIO 4 sebagai output (untuk mengirim sinyal trigger ke sensor ultrasonik pertama).
- Baris keenam mendefinisikan objek
echo_pin yang terhubung ke pin GPIO 5 sebagai input (untuk menerima sinyal echo dari sensor ultrasonik pertama).
- Baris ketujuh mendefinisikan objek
led_pin yang terhubung ke pin GPIO 15 sebagai output (untuk mengendalikan LED sebagai indikator jarak).
- Baris kedelapan mendefinisikan objek
buzzer_pin yang terhubung ke pin GPIO 12 sebagai output (untuk mengendalikan buzzer sebagai indikator jarak).
-
Pengukuran Jarak dengan Sensor Ultrasonik Pertama:
- Fungsi
measure_distance() digunakan untuk mengukur jarak menggunakan sensor ultrasonik pertama.
- Pertama, trigger_pin diaktifkan dengan memanggil
on() dan kemudian menunggu selama 10 mikrodetik menggunakan sleep_us(10).
- Selanjutnya, trigger_pin dimatikan dengan memanggil
off().
- Variabel
pulse_start dan pulse_end diinisialisasi dengan nilai 0.
- Dalam loop pertama, skrip menunggu sampai echo_pin bernilai 0 dan kemudian menyimpan waktu saat itu dengan memanggil
ticks_us() dan mengaturnya ke pulse_start.
- Dalam loop kedua, skrip menunggu sampai echo_pin bernilai 1 dan kemudian menyimpan waktu saat itu dengan memanggil
ticks_us() dan mengaturnya ke pulse_end.
- Durasi denyut dihitung sebagai selisih antara
pulse_end dan pulse_start.
- Jarak dihitung dengan mengalikan durasi denyut dengan faktor konversi 0,0343 (konstanta kecepatan suara dalam sentimeter per mikrodetik) dan dibagi oleh 2 untuk mendapatkan jarak ke objek.
- Fungsi mengembalikan nilai jarak.
-
Pengukuran Jarak dengan Sensor Ultrasonik Kedua:
- Fungsi
measure_distance1() memiliki proses yang serupa dengan measure_distance(), tetapi menggunakan pin GPIO yang berbeda (pin 18 untuk trigger dan pin 19 untuk echo)
dan variabel yang berbeda (misalnya trigger_pin1, echo_pin1, dan distanceres).
Pengontrol Indikator Jarak Parkir:
-
Fungsi park_distance_alert(distance) digunakan untuk mengontrol LED dan buzzer berdasarkan jarak yang diukur oleh sensor ultrasonik pertama.
-
Jika jarak kurang dari 10 cm, maka LED pada pin GPIO 2 (led_pin1) dan buzzer pada pin GPIO 12 (buzzer_pin) akan dimatikan (value(0)) selama 0,5 detik menggunakan sleep(0.5), kemudian dihidupkan (value(1)) selama 0,5 detik lagi.
-
Jika jarak lebih dari 11 cm, maka LED pada pin GPIO 2 (led_pin1) akan dimatikan (value(0)).
-
Fungsi park_distance_alert1(distance) memiliki proses yang serupa dengan park_distance_alert(distance), tetapi mengontrol LED pada pin GPIO 15 (led_pin) dan menggunakan pin GPIO 12 yang sama untuk buzzer.
Loop Utama:
- Fungsi
loop1() adalah loop utama yang terus-menerus mengukur jarak menggunakan sensor ultrasonik pertama, memanggil fungsi measure_distance() dan kemudian memanggil fungsi park_distance_alert(distance) untuk mengontrol indikator jarak parkir berdasarkan hasil pengukuran. Selanjutnya, skrip menunggu selama 0,1 detik menggunakan sleep(0.1).
- Fungsi
loop2() memiliki proses yang serupa dengan loop1(), tetapi menggunakan sensor ultrasonik kedua dengan memanggil fungsi measure_distance1() dan park_distance_alert1(distance).
Thread:
- Dalam script ini, digunakan dua thread terpisah dengan bantuan modul
_thread.
- Baris terakhir membuat dua thread terpisah dengan memanggil fungsi
start_new_thread() dengan argumen berupa fungsi loop utama (loop1 dan loop2).
Dengan menggunakan dua thread terpisah, skrip ini dapat mengukur jarak menggunakan kedua sensor ultrasonik secara simultan dan mengontrol indikator jarak parkir secara paralel.
Discussion (0)