Menggunakan Pengukur Jarak Laser VL53L0X dengan Arduino
Dalam tutorial ini, kita akan mengeksplorasi cara menggunakan pengukur jarak laser VL53L0X dengan Arduino. Perangkat ini memungkinkan Anda mengukur jarak secara akurat menggunakan laser, menjadikannya ideal untuk berbagai aplikasi seperti robotika dan otomatisasi. Pada akhir tutorial ini, Anda akan memiliki pengaturan fungsional yang dapat mengukur jarak dan menampilkannya di monitor serial.

Untuk proyek kami, kami akan menggunakan perpustakaan VL53L0X Adafruit, yang menyederhanakan proses interaksi dengan sensor. Pustaka ini menyediakan fungsi yang diperlukan untuk menginisialisasi sensor, membaca pengukuran, dan menangani kesalahan apa pun yang mungkin timbul. Anda dapat merujuk ke video untuk panduan visual tentang pengaturan (dalam video pada 02:15).
Perangkat Keras Dijelaskan
Komponen utama dari proyek ini termasuk pengukur jarak laser VL53L0X dan papan Arduino. VL53L0X adalah sensor time-of-flight yang menggunakan laser untuk mengukur jarak hingga 2 meter dengan akurasi tinggi. Ini beroperasi melalui protokol I2C, memungkinkan komunikasi yang mudah dengan Arduino.
Papan Arduino berfungsi sebagai mikrokontroler yang memproses data dari VL53L0X. Ini mengirimkan perintah ke sensor dan menerima pengukuran jarak, yang kemudian dapat ditampilkan atau digunakan dalam aplikasi lain. Pengkabelan yang tepat sangat penting untuk memastikan pembacaan yang akurat dari sensor.
Detail Lembar Data
| Produsen | STMicroelektronika |
|---|---|
| Nomor bagian | VL53L0X |
| Tegangan operasi | 2.6 V hingga 3.5 V |
| Lingkup | 30 mm hingga 2000 mm |
| Ketepatan | ±3% khas |
| Antarmuka | I2C |
| Kisaran suhu | -40 °C hingga +85 °C |
| Konsumsi saat ini | <1 mA (siaga), 20 mA (aktif) |
| Paket | VFLGA-8 |
- Pastikan sensor diberi daya dengan benar (2.6 V hingga 3.5 V).
- Pertahankan pengaturan alamat I2C yang benar untuk menghindari konflik.
- Jaga kebersihan sensor untuk pengukuran jarak yang akurat.
- Gunakan resistor pull-up yang sesuai pada saluran I2C jika diperlukan.
- Hindari sinar matahari langsung pada sensor untuk pembacaan yang andal.
Instruksi Pengkabelan

Untuk menghubungkan sensor VL53L0X ke Arduino, sambungkan pin VCC sensor ke pin 5V pada Arduino. Pin GND harus dihubungkan ke ground (GND) Arduino. Untuk komunikasi I2C, sambungkan pin SDA VL53L0X ke pin A4 pada Arduino, dan sambungkan pin SCL ke pin A5. Jika Anda menggunakan model Arduino yang berbeda, lihat penetapan pin SDA dan SCL khusus untuk papan tersebut.
Misalnya, pada Arduino Mega, Anda akan menghubungkan SDA ke pin 20 dan SCL ke pin 21. Pastikan semua koneksi aman untuk menghindari masalah komunikasi. Jika sensor tidak merespons, periksa kembali kabel dan pastikan Arduino diberi daya dengan benar.
Contoh Kode & Panduan
Di bawah ini adalah cuplikan dari fungsi penyiapan yang menginisialisasi sensor VL53L0X:
void setup() {
Serial.begin(9600);
while (! Serial) {
delay(1);
}
Serial.println("Robojax Test");
if (!lox.begin()) {
Serial.println(F("Failed to boot VL53L0X"));
while(1);
}
}Kode ini menginisialisasi komunikasi serial dan mencoba memulai sensor VL53L0X. Jika sensor gagal boot, sensor akan mencetak pesan kesalahan dan menghentikan program.
Selanjutnya, berikut adalah cuplikan dari fungsi loop yang membaca pengukuran jarak:
void loop() {
VL53L0X_RangingMeasurementData_t measure;
lox.rangingTest(&measure, false);
if (measure.RangeStatus != 4) {
Serial.print("Distance (mm): "); Serial.println(measure.RangeMilliMeter);
} else {
Serial.println(" out of range ");
}
delay(100);
}Blok ini terus membaca pengukuran jarak dari sensor dan mencetaknya ke monitor serial. Jika pengukuran berada di luar jangkauan, itu menunjukkan hal yang sesuai.
Demonstrasi / Apa yang Diharapkan
Saat Anda menjalankan program, Anda akan melihat pengukuran jarak yang ditampilkan di monitor serial. Pembacaan harus diperbarui setiap 100 milidetik. Jika sensor menunjuk ke suatu objek, itu akan menampilkan jarak dalam milimeter. Jika objek berada di luar jangkauan, itu akan menunjukkan itu juga. Pastikan untuk menguji sensor dalam kisaran yang ditentukan untuk hasil yang optimal (dalam video pada pukul 10:00).
Stempel Waktu Video
- 00:00-Perkenalan
- 02:15- Pengaturan kabel
- 05:30- Penjelasan kode
- 10:00-Demonstrasi
/* This example shows how to use continuous mode to take
range measurements with the VL53L0X.
// Original source from Adafruit https://github.com/adafruit/Adafruit_VL53L0X
// Modified by Ahmad Shamshiri for RoboJax.com
// Date modified: Sep 26, 2017
// Nejrabi
* Get this code and other Arduino codes from Robojax.com
Learn Arduino step by step in a structured course with all material, wiring diagrams, and libraries
all in one place.
If you found this tutorial helpful, please support me so I can continue creating
content like this.
or make a donation using PayPal http://robojax.com/L/?id=64
* * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Copyright (c) 2015, Majenko Technologies
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
* * Neither the name of Majenko Technologies nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "Adafruit_VL53L0X.h"
Adafruit_VL53L0X lox = Adafruit_VL53L0X();
void setup() {
Serial.begin(9600);
// wait until serial port opens for native USB devices
while (! Serial) {
delay(1);
}
Serial.println("Robojax Test");
if (!lox.begin()) {
Serial.println(F("Failed to boot VL53L0X"));
while(1);
}
// power
Serial.println(F("VL53L0X API Simple Ranging example\n\n"));
}
void loop() {
VL53L0X_RangingMeasurementData_t measure;
Serial.print("Reading a measurement... ");
lox.rangingTest(&measure, false); // pass in 'true' to get debug data printout!
if (measure.RangeStatus != 4) { // phase failures have incorrect data
Serial.print("Distance (mm): "); Serial.println(measure.RangeMilliMeter);
} else {
Serial.println(" out of range ");
}
delay(100);
}
Sumber daya & referensi
-
EksternalVL53L0X datasheet (PDF)st.com
Berkas📁
File Fritzing
-
Adafruit VL6180X Time of Flight Distance SensorFritzing part for the Adafruit VL6180X Time of Flight distance sensor. This sensor measures absolute distance up to 100mm and ambient light, communicating via I2C. Includes the sensor breakout board and pin connections for use in Fritzing projects.
Adafruit VL6180X Time of Flight Distance Sensor-1.fzpz0.02 MB
File lainnya
-
Perpustakaan Polou VL53L0X
robojax-VL53L0X-polou-arduino-master.zip0.02 MB