Discover

2 Sensor Ultrasonic ESP32

June 15, 2026 111 Views 0 Comments
<p style="text-align:center;">Dual Ultrasonic Sensor Example Distance Both 10CM</p> <p style="text-align:center;"><a href="https://wokwi.com/projects/366533080695301121">wokwi</a></p> <p style="text-align:center;"> </p> <p>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.</p> <p>Berikut adalah penjelasan skrip tersebut:</p> <ol> <li> <p>Impor Pustaka dan Inisialisasi Pin:</p> <ul> <li>Baris pertama mengimpor pustaka <code>Pin</code> dari modul <code>machine</code> yang digunakan untuk mengendalikan pin GPIO pada ESP32.</li> <li>Baris kedua mengimpor modul <code>time</code> untuk mengatur waktu dalam skrip.</li> <li>Baris ketiga mengimpor modul <code>_thread</code> untuk mengaktifkan thread terpisah untuk setiap loop pengukuran.</li> <li>Baris kelima mendefinisikan objek <code>trigger_pin</code> yang terhubung ke pin GPIO 4 sebagai output (untuk mengirim sinyal trigger ke sensor ultrasonik pertama).</li> <li>Baris keenam mendefinisikan objek <code>echo_pin</code> yang terhubung ke pin GPIO 5 sebagai input (untuk menerima sinyal echo dari sensor ultrasonik pertama).</li> <li>Baris ketujuh mendefinisikan objek <code>led_pin</code> yang terhubung ke pin GPIO 15 sebagai output (untuk mengendalikan LED sebagai indikator jarak).</li> <li>Baris kedelapan mendefinisikan objek <code>buzzer_pin</code> yang terhubung ke pin GPIO 12 sebagai output (untuk mengendalikan buzzer sebagai indikator jarak).</li> </ul> </li> <li> <p>Pengukuran Jarak dengan Sensor Ultrasonik Pertama:</p> <ul> <li>Fungsi <code>measure_distance()</code> digunakan untuk mengukur jarak menggunakan sensor ultrasonik pertama.</li> <li>Pertama, trigger_pin diaktifkan dengan memanggil <code>on()</code> dan kemudian menunggu selama 10 mikrodetik menggunakan <code>sleep_us(10)</code>.</li> <li>Selanjutnya, trigger_pin dimatikan dengan memanggil <code>off()</code>.</li> <li>Variabel <code>pulse_start</code> dan <code>pulse_end</code> diinisialisasi dengan nilai 0.</li> <li>Dalam loop pertama, skrip menunggu sampai echo_pin bernilai 0 dan kemudian menyimpan waktu saat itu dengan memanggil <code>ticks_us()</code> dan mengaturnya ke <code>pulse_start</code>.</li> <li>Dalam loop kedua, skrip menunggu sampai echo_pin bernilai 1 dan kemudian menyimpan waktu saat itu dengan memanggil <code>ticks_us()</code> dan mengaturnya ke <code>pulse_end</code>.</li> <li>Durasi denyut dihitung sebagai selisih antara <code>pulse_end</code> dan <code>pulse_start</code>.</li> <li>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.</li> <li>Fungsi mengembalikan nilai jarak.</li> </ul> </li> <li> <p>Pengukuran Jarak dengan Sensor Ultrasonik Kedua:</p> <ul> <li>Fungsi <code>measure_distance1()</code> memiliki proses yang serupa dengan <code>measure_distance()</code>, tetapi menggunakan pin GPIO yang berbeda (pin 18 untuk trigger dan pin 19 untuk echo)  <p>dan variabel yang berbeda (misalnya <code>trigger_pin1</code>, <code>echo_pin1</code>, dan <code>distanceres</code>).</p> <p>Pengontrol Indikator Jarak Parkir:</p> <ul> <li> <p>Fungsi <code>park_distance_alert(distance)</code> digunakan untuk mengontrol LED dan buzzer berdasarkan jarak yang diukur oleh sensor ultrasonik pertama.</p> </li> <li> <p>Jika jarak kurang dari 10 cm, maka LED pada pin GPIO 2 (<code>led_pin1</code>) dan buzzer pada pin GPIO 12 (<code>buzzer_pin</code>) akan dimatikan (<code>value(0)</code>) selama 0,5 detik menggunakan <code>sleep(0.5)</code>, kemudian dihidupkan (<code>value(1)</code>) selama 0,5 detik lagi.</p> </li> <li> <p>Jika jarak lebih dari 11 cm, maka LED pada pin GPIO 2 (<code>led_pin1</code>) akan dimatikan (<code>value(0)</code>).</p> </li> <li> <p>Fungsi <code>park_distance_alert1(distance)</code> memiliki proses yang serupa dengan <code>park_distance_alert(distance)</code>, tetapi mengontrol LED pada pin GPIO 15 (<code>led_pin</code>) dan menggunakan pin GPIO 12 yang sama untuk buzzer.</p> </li> </ul> <p>Loop Utama:</p> <ul> <li>Fungsi <code>loop1()</code> adalah loop utama yang terus-menerus mengukur jarak menggunakan sensor ultrasonik pertama, memanggil fungsi <code>measure_distance()</code> dan kemudian memanggil fungsi <code>park_distance_alert(distance)</code> untuk mengontrol indikator jarak parkir berdasarkan hasil pengukuran. Selanjutnya, skrip menunggu selama 0,1 detik menggunakan <code>sleep(0.1)</code>.</li> <li>Fungsi <code>loop2()</code> memiliki proses yang serupa dengan <code>loop1()</code>, tetapi menggunakan sensor ultrasonik kedua dengan memanggil fungsi <code>measure_distance1()</code> dan <code>park_distance_alert1(distance)</code>.</li> </ul> <p>Thread:</p> <ul> <li>Dalam script ini, digunakan dua thread terpisah dengan bantuan modul <code>_thread</code>.</li> <li>Baris terakhir membuat dua thread terpisah dengan memanggil fungsi <code>start_new_thread()</code> dengan argumen berupa fungsi loop utama (loop1 dan loop2).</li> </ul> <p>Dengan menggunakan dua thread terpisah, skrip ini dapat mengukur jarak menggunakan kedua sensor ultrasonik secara simultan dan mengontrol indikator jarak parkir secara paralel.</p> </li> </ul> </li> </ol>

Discussion (0)

Please log in or register to join the discussion.