Lazerle Mesafe Ölçümü VL53L0X 6-Pin Modülü ve LCD1602-I2C ile Arduino için
Bu eğitimde, VL53L0X lazer sensörünü kullanarak mesafe ölçmeyi ve sonuçları I2C arayüzlü LCD1602 üzerinde görüntülemeyi öğreneceğiz. Bu proje, milimetre veya santimetre cinsinden hassas mesafe ölçümleri elde etmenizi sağlar ve Arduino tabanlı herhangi bir projeye çok yönlü bir katkı sunar. Bu eğitimin sonunda, kurulumu ve kullanımı kolay, tamamen işlevsel bir mesafe ölçüm sistemine sahip olacaksınız.

Bunu başarmak için Arduino ile I2C üzerinden iletişim kuran VL53L0X lazer mesafe sensörünü kullanacağız. LCD1602 ekran, ölçülen mesafenin net bir görsel temsilini sağlayacaktır. Kodlama süreci hakkında netlik için lütfen videoya bakın (videoda 00:00'da).
Donanım Açıklaması
Bu yapıdaki ana bileşenler VL53L0X lazer mesafe sensörü ve LCD1602 ekrandır. VL53L0X, mesafeyi doğru bir şekilde ölçmek için lazer kullanır ve bu da onu robotik ve otomasyon dahil çeşitli uygulamalar için uygun hale getirir. Arduino ile kolay entegrasyon sağlayan I2C iletişimini kullanır.
LCD1602 ekran, iki satırda 16 karaktere kadar gösterebilen I2C destekli bir karakter ekranıdır. Geleneksel LCD'lere göre daha az pin gerektirdiğinden veri görüntüleme sürecini basitleştirir. Bu bileşenler birlikte güçlü ve kullanıcı dostu bir mesafe ölçüm sistemi oluşturur.
Veri Sayfası Detayları
| Üretici | STMicroelectronics |
|---|---|
| Parça numarası | VL53L0X |
| Mantık/G/Ç voltajı | 1.8 V - 2.8 V |
| Besleme voltajı | 2.6 V - 3.5 V |
| Çıkış akımı (kanal başına) | … |
| Tepe akımı (kanal başına) | … |
| PWM frekans rehberi | … |
| Giriş mantık eşikleri | … |
| Voltaj düşümü / RDS(on) / doyum | … |
| Termal limitler | … |
| Paket | … |
| Notlar / varyantlar | … |
- Doğru besleme voltajını (2.6 V - 3.5 V) sağlayın.
- Gerekirse SDA ve SCL hatlarına çekme dirençleri kullanın.
- Hatalı okumaları önlemek için sensörü yansıtıcı yüzeylerden uzak tutun.
- I2C adresini doğrulayın (VL53L0X için varsayılan 0x29'dur).
- Yüksek sıcaklık ortamlarında kullanıyorsanız ısı dağılımını göz önünde bulundurun.
Bağlantı Talimatları

VL53L0X sensörünü ve LCD1602 ekranını bağlamak için güç ve toprak bağlantılarıyla başlayın. VL53L0X'in VCC pinini Arduino'daki 5V pinine ve GND pinini Arduino'nun toprağına bağlayın. LCD1602 için, VCC'sini aynı 5V'a ve GND'sini de toprağa bağlayın.
Ardından, I2C iletişim hatlarını bağlayın. VL53L0X'in SDA pini Arduino'daki A4 pinine, SCL pini ise A5'e bağlanmalıdır. XSHUT pini Arduino'daki D12'ye bağlanabilir, ancak bağlı bırakılabilir. LCD1602 için, SDA ve SCL'nin de VL53L0X sensörüyle aynı pinlere bağlı olduğundan emin olun.
Kod Örnekleri ve Açıklama
VL53L0X sensor;
#include
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(9600);
Wire.begin();
sensor.init();
sensor.setTimeout(500);
sensor.startContinuous();
lcd.begin();
lcd.backlight();
}
Kurulum fonksiyonunda, seri iletişimi ve I2C veriyolunu başlatıyoruz. sensor.init() VL53L0X sensörünü başlatırken, lcd.begin() LCD ekranı başlatır. Ekranın arka ışığı açılır ve kolay görünürlük sağlar.
void loop() {
int distance = sensor.readRangeContinuousMillimeters();
Serial.print("Distance: ");
lcd.clear();
lcd.print("Robojax VL53L0X");
lcd.setCursor(0,1);
lcd.print("Dist.: ");
lcd.setCursor(7,1);
lcd.print(distance);
Serial.println();
delay(100);
}
Döngü içinde, sensor.readRangeContinuousMillimeters() kullanarak sürekli olarak mesafeyi okuyor ve seri monitöre yazdırıyoruz. LCD, mesafe ölçümüyle güncellenir ve gerçek zamanlı geri bildirim sağlar. 100 milisaniyelik gecikme, okumaların çok sık güncellenmemesini sağlayarak kolay okuma imkanı sunar.
Gösterim / Beklentiler
Güç açıldığında, sistem sürekli olarak mesafeyi ölçecek ve sonuçları LCD üzerinde gösterecektir. Nesneleri sensöre yaklaştırdıkça veya uzaklaştırdıkça mesafe değerlerinin değiştiğini göreceksiniz. Sensörle ilgili zaman aşımı hataları gibi herhangi bir sorun olursa, seri monitöre uygun mesajlar yazdırılacaktır (videoda 03:15'te).
/*
This is Arduino code to measure distance with VL53L0X and display it on LCD1602 with I2C module.
Distance is displayed in mm (millimeter) or cm (centimeter).
Original Laser Sensor source: https://github.com/adafruit/Adafruit_VL53L0X
Modified by Ahmad Shamshiri for RoboJax.com
Date modified: Jun 28, 2018 at 19:06 in Ajax, Ontario, Canada
Watch the video instruction for this code: https://youtu.be/t14ly7Y09oI
You can get this code from RoboJax.com.
Pin connection
VL53L0X Pin Arduino Pin
VCC 5V
GND GND
SDA A4 or SDA if available
SCL A5 or SCL if available
GPIO1 leave it unconnected
XSHUT D12 (digital 12 or pin 12)
LCD1602 Pin
*/
#include <Wire.h>
#include <VL53L0X.h>
VL53L0X sensor;
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int type = 1;// 1=mm , 2= cm
String unit;// variable for unit, mm or cm
void setup()
{
Serial.begin(9600);
Wire.begin();
sensor.init();
sensor.setTimeout(500);
// Start continuous back-to-back mode (take readings as
// fast as possible). To use continuous timed mode
// instead, provide a desired inter-measurement period in
// ms (e.g. sensor.startContinuous(100)).
sensor.startContinuous();
// initialize the LCD,
lcd.begin();
// Turn on the blacklight and print a message.
lcd.backlight();
}
void loop()
{
int distance =sensor.readRangeContinuousMillimeters();
//int distance =sensor.startContinuous(100);
//distance = distance;
Serial.print("Distance: ");
//start of loop Robojax code for LCD with I2C
lcd.clear();
lcd.print("Robojax VL53L0X");
lcd.setCursor (0,1); // go to start of 2nd line
lcd.print("Dist.: ");
lcd.setCursor (7,1); // go to start of 2nd line
if(type ==2){
float distanceCM = (float) (distance/10.0);
unit ="cm";
lcd.print(distanceCM);
Serial.print(distanceCM);
Serial.print(unit);
}else{
unit ="mm";
lcd.print(distance);
Serial.print(distance);
Serial.print(unit);
}
lcd.print(unit);
if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }
Serial.println();
delay(100);
}
İhtiyacın olabileceğini düşünüyor
-
AmazonPurchase VL53L0X from Amazonamzn.to
-
eBayPurchase VL53L0X from eBayebay.us
-
AliExpressPurchase 1 to 10 pcs of VL53L0X from AliExpresss.click.aliexpress.com
-
BanggoodPurchase 1 to 10 pcs of VL53L0X from Banggoodbanggood.com
Kaynaklar ve referanslar
-
DışAdafruit download pagelearn.adafruit.com
-
DışPurchase 1 to 10 pcs of VL53L0X from AliExpresss.click.aliexpress.com
-
DışPurchase 1 to 10 pcs of VL53L0X from Banggoodbanggood.com
-
DışPurchase VL53L0X from eBayebay.us
-
DışVL53L0X datasheet (PDF)st.com
Dosyalar📁
Fritzing Dosyası
-
VL53L0X_Distance_sensor_Squares
VL53L0X_Distance_sensor_Squares.fzpz0.02 MB
Diğer dosyalar
-
Robojax'tan Adafruit VL53L0X kütüphanesi
robojax-VL52L0X_Adafruit_VL53L0X-master.zip0.08 MB -
VL53L0X_Distance_sensor_purple
VL53L0X_Distance_sensor_purple.fzpz0.01 MB