د فاصلې اندازه کول د لیزر VL53L0X 6-پن ماډل او LCD1602-I2C سره د آردوینو لپاره
په دې ټیوټوریل کې، موږ به زده کړو چې څنګه د VL53L0X لیزر سینسر په کارولو سره واټن اندازه کړو او پایلې د I2C انٹرفیس سره په LCD1602 باندې وښیو. دا پروژه تاسو ته اجازه درکوي چې دقیق واټن اندازه کړئ په ملی مترو یا سانتي مترو کې، چې دا د هر Arduino پر بنسټ پروژې لپاره یو څو اړخیزه اضافه ده. د دې ټیوټوریل په پای کې، تاسو به یو بشپړ فعال واټن اندازه کولو سیسټم ولرئ چې نصب او کارول یې اسانه دي.

د دې ترلاسه کولو لپاره، موږ به د VL53L0X لیزر واټن سینسر وکاروو، کوم چې د I2C له لارې له Arduino سره اړیکه نیسي. د LCD1602 ښودنه به د اندازه شوي واټن روښانه بصري استازیتوب چمتو کړي. د کوډ کولو پروسې د روښانتیا لپاره، مهرباني وکړئ په ویډیو کې (په ویډیو کې په 00:00) ته مراجعه وکړئ.
هارډویر تشریح شوی
په دې جوړښت کې اصلي برخې د VL53L0X لیزر واټن سینسر او د LCD1602 ښودنه ده. VL53L0X د واټن دقیق اندازه کولو لپاره لیزر کاروي، چې دا د مختلفو غوښتنلیکونو لپاره مناسب کوي، پشمول د روبوټیک او اتوماتیک. دا د I2C اړیکو په کارولو سره کار کوي، کوم چې له Arduino سره اسانه ادغام ته اجازه ورکوي.
د LCD1602 ښودنه یو I2C فعال شوی کرکټر ښودنه ده چې کولی شي په دوو کرښو کې تر 16 کرکټرونو پورې وښیې. دا د معلوماتو ښودلو پروسه ساده کوي، ځکه چې دا د دودیزو LCDs په پرتله لږ پنونه ته اړتیا لري. په ګډه، دا برخې یو پیاوړی او کاروونکي دوستانه واټن اندازه کولو سیسټم جوړوي.
ډیټاشیټ تفصیلات
| جوړونکی | STMicroelectronics |
|---|---|
| د برخې شمېره | VL53L0X |
| منطق/IO ولټاژ | 1.8 V to 2.8 V |
| د بریښنا ولټاژ | 2.6 V to 3.5 V |
| د تولید جریان (په هر چینل) | … |
| د لوړ جریان (په هر چینل) | … |
| د PWM فریکونسۍ لارښود | … |
| د ننوتلو منطق حدونه | … |
| د ولټاژ کمښت / RDS(on) / سنتریشن | … |
| حرارتي حدونه | … |
| بسته | … |
| یادښتونه / تغیرات | … |
- د بریښنا مناسب ولټاژ ډاډمن کړئ (2.6 V to 3.5 V).
- که اړتیا وي، په SDA او SCL کرښو کې پل-اپ ریزسټرونه وکاروئ.
- سینسر د انعکاس کوونکو سطحو څخه لرې وساتئ ترڅو غلط لوستل مخنیوی وشي.
- د I2C پته تایید کړئ (د VL53L0X لپاره ډیفالټ 0x29 ده).
- که په لوړ حرارت چاپیریال کې کاروئ، د تودوخې ضایع کیدو په اړه فکر وکړئ.
د تارونو لارښوونې

د VL53L0X سینسر او LCD1602 ښودنې د تارونو لپاره، د بریښنا او ځمکې په نښلولو سره پیل وکړئ. د VL53L0X د VCC پن د Arduino په 5V پن سره وصل کړئ او د GND پن د Arduino ځمکې سره. د LCD1602 لپاره، د هغې VCC د ورته 5V سره او GND هم ځمکې سره وصل کړئ.
بیا، د I2C اړیکو کرښې وصل کړئ. د VL53L0X د SDA پن باید د Arduino په A4 پن سره وصل شي، او د SCL پن باید A5 ته لاړ شي. د XSHUT پن د Arduino په D12 سره وصل کیدی شي، مګر دا هم بې نښلول پریښودل کیدی شي. د LCD1602 لپاره، ډاډ ترلاسه کړئ چې SDA او SCL هم د VL53L0X سینسر په څیر ورته پنونو سره وصل دي.
د کوډ مثالونه او واک ترو
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();
}
د سیٹ اپ فنکشن کې، موږ د سیریل اړیکه او د I2C بس پیل کوو. sensor.init() د VL53L0X سینسر پیل کوي، پداسې حال کې چې lcd.begin() د LCD ښودنه پیل کوي. د ښودنې بیک لایټ چالان کیږي، چې اسانه لید ته اجازه ورکوي.
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);
}
د لوپ دننه، موږ په دوامداره توګه د sensor.readRangeContinuousMillimeters() په کارولو سره واټن لوستو او دا د سیریل مانیټر ته چاپ کوو. LCD د واټن اندازه سره تازه کیږي، چې ریښتیني وخت فیډبیک چمتو کوي. د 100 ملی ثانیو ځنډ ډاډ ورکوي چې لوستل ډیر ځله نه تازه کیږي، چې اسانه لوستل ته اجازه ورکوي.
ډیمونسټریشن / څه تمه وکړو
کله چې بریښنا چالانه شي، سیسټم به په دوامداره توګه واټن اندازه کړي او پایلې به په LCD باندې وښیې. تاسو کولی شئ تمه وکړئ چې د واټن ارزښتونه بدل شي لکه څنګه چې تاسو شیان د سینسر څخه نږدې یا لرې کوئ. که د سینسر سره کومه ستونزه وي، لکه د وخت پای تېروتنې، مناسب پیغامونه به د سیریل مانیټر ته چاپ شي (په ویډیو کې په 03:15).
/*
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);
}
Things you might need
-
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
Resources & references
-
ExternalAdafruit download pagelearn.adafruit.com
-
ExternalPurchase 1 to 10 pcs of VL53L0X from AliExpresss.click.aliexpress.com
-
ExternalPurchase 1 to 10 pcs of VL53L0X from Banggoodbanggood.com
-
ExternalPurchase VL53l0x from eBayebay.us
-
ExternalVL53L0X datasheet (PDF)st.com
Files📁
Fritzing File
-
VL53L0X_Distance_sensor_Squares
VL53L0X_Distance_sensor_Squares.fzpz0.02 MB
Other files
-
Adafruit VL53L0X library from Robojax
robojax-VL52L0X_Adafruit_VL53L0X-master.zip0.08 MB -
VL53L0X_Distance_sensor_purple
VL53L0X_Distance_sensor_purple.fzpz0.01 MB