لیزر VL53L0X 6-پن ماجیول کے ساتھ آردوینو کے لیے فاصلہ ناپنا
اس ٹیوٹوریل میں، ہم 6 پن ماجیول کے ساتھ VL53L0X لیزر فاصلہ سینسر کا استعمال کرتے ہوئے فاصلہ ناپنے کا طریقہ سیکھیں گے۔ یہ چھوٹا مگر طاقتور سینسر ٹائم-آف-فلائٹ ٹیکنالوجی استعمال کرتا ہے تاکہ 200 سینٹی میٹر تک درست فاصلے کی پیمائش فراہم کر سکے۔ اس گائیڈ پر عمل کرتے ہوئے، آپ سینسر کو Arduino کے ساتھ ترتیب دے سکیں گے اور اپنی سیریل مانیٹر سے براہ راست فاصلے کی قدریں پڑھ سکیں گے۔

اس پروجیکٹ کے لیے، ہم VL53L0X سینسر استعمال کریں گے، جو کمپیکٹ ہے اور مختلف ایپلیکیشنز میں آسانی سے ضم کیا جا سکتا ہے۔ سینسر I2C کے ذریعے بات چیت کرتا ہے، جس سے اسے Arduino بورڈ سے جوڑنا آسان ہو جاتا ہے۔ ویڈیو میں، آپ کو سیٹ اپ کے عمل کی اضافی وضاحتیں اور مظاہرے ملیں گے (ویڈیو میں 04:00 پر)۔
ہارڈویئر کی وضاحت
VL53L0X ایک ٹائم-آف-فلائٹ فاصلہ سینسر ہے جو لیزر بیم خارج کرتا ہے اور کسی چیز سے ٹکرانے کے بعد روشنی کو واپس آنے میں لگنے والے وقت کی پیمائش کرتا ہے۔ یہ اسے چیز کے فاصلے کا درست حساب لگانے کی اجازت دیتا ہے۔ سینسر 2.6 V سے 3.5 V کے درمیان وولٹیج پر کام کرتا ہے، لیکن اندرونی وولٹیج ریگولیٹر کی بدولت اسے 5 V سے بھی چلایا جا سکتا ہے۔
ماجیول میں چھ پن ہیں: VCC، GND، SDA (ڈیٹا لائن)، SCL (کلاک لائن)، GPIO1 (جنرل پرپز I/O)، اور XSHUT (شٹ ڈاؤن پن)۔ GPIO1 پن اس کنفیگریشن میں استعمال نہیں ہوتا لیکن اسے بغیر جوڑے چھوڑا جا سکتا ہے۔ XSHUT پن آپ کو سینسر بند کرنے کی اجازت دیتا ہے تاکہ استعمال میں نہ ہونے پر بجلی بچائی جا سکے۔
ڈیٹاشیٹ کی تفصیلات
| مینوفیکچرر | STMicroelectronics |
|---|---|
| پارٹ نمبر | VL53L0X |
| لاجک/آئی او وولٹیج | 2.6 V سے 3.5 V (ریگولیٹر کے ساتھ 5 V) |
| آپریٹنگ درجہ حرارت | -20 °C سے 70 °C |
| پیمائش کی حد | 30 ملی میٹر سے 2000 ملی میٹر |
| I2C کمیونیکیشن فریکوئنسی | 400 kHz |
| سائز | 4.4 ملی میٹر x 2.4 ملی میٹر x 1 ملی میٹر |
- مناسب بجلی کی فراہمی یقینی بنائیں (5 V تجویز کردہ)۔
- SDA اور SCL کو Arduino پر مناسب I2C پنوں سے جوڑیں۔
- اگر ضرورت ہو تو I2C لائنوں پر پل-اپ ریزسٹر استعمال کریں۔
- GPIO1 کو بغیر جوڑے نہ چھوڑیں؛ اسے فلوٹنگ چھوڑا جا سکتا ہے۔
- آپریشن کے دوران XSHUT پن کو ہائی رکھیں۔
- بہتر درستگی کے لیے اچھی روشنی والے ماحول میں فاصلے ناپیں۔
- درست پیمائش کے لیے سینسر کو کیلیبریٹ کریں۔
- مختلف فاصلوں پر اشیاء رکھ کر سینسر کی رینج آزمائیں۔
- فاصلے کی ریڈنگز اور ٹائم آؤٹ پیغامات کے لیے سیریل آؤٹ پٹ مانیٹر کریں۔
وائرنگ ہدایات

VL53L0X سینسر کو اپنے Arduino سے جوڑنے کے لیے، سینسر کے VCC پن کو Arduino کے 5V پن سے جوڑ کر شروع کریں۔ اگلا، GND پن کو Arduino کے GND سے جوڑیں۔ سینسر کا SDA پن Arduino کے A4 پن سے جوڑا جانا چاہیے (یا SDA پن اگر آپ کے بورڈ میں مخصوص I2C پن ہیں)۔ اسی طرح، سینسر کے SCL پن کو A5 پن سے جوڑیں (یا SCL پن)۔ GPIO1 پن کو بغیر جوڑے چھوڑ دیں کیونکہ اس پروجیکٹ کے لیے اس کی ضرورت نہیں ہے۔
آخر میں، XSHUT پن کو Arduino کے ڈیجیٹل پن 12 سے جوڑیں۔ یہ پن سینسر کی شٹ ڈاؤن حالت کو کنٹرول کرنے کے لیے استعمال ہوگا۔ یقینی بنائیں کہ تمام کنکشن محفوظ ہیں تاکہ کوئی کمیونیکیشن مسئلہ پیدا نہ ہو۔
کوڈ مثالیں اور واک تھرو
کوڈ میں، ہم ضروری لائبریریاں شامل کرکے اور VL53L0X سینسر کو انیشیالائز کرکے شروع کرتے ہیں۔ سیٹ اپ فنکشن سینسر کو کنفیگر کرتا ہے اور مسلسل فاصلے کی پیمائش شروع کرتا ہے۔ سیٹ اپ فنکشن سے ایک ٹکڑا یہ ہے:
void setup() {
pinMode(12, INPUT_PULLUP);
digitalWrite(12, HIGH);
Serial.begin(9600);
Wire.begin();
sensor.init();
sensor.setTimeout(500);
sensor.startContinuous();
}
اس ٹکڑے میں، ہم پن 12 کو پل-اپ ریزسٹر کے ساتھ ان پٹ کے طور پر سیٹ کرتے ہیں اور 9600 باؤڈ پر سیریل کمیونیکیشن شروع کرتے ہیں۔ ہم سینسر کو بھی انیشیالائز کرتے ہیں اور ریڈنگز کے لیے ٹائم آؤٹ سیٹ کرتے ہیں، اس بات کو یقینی بناتے ہوئے کہ یہ مسلسل کام کرے۔
اگلا، ہم لوپ فنکشن میں فاصلہ پڑھتے ہیں، جہاں ناپی گئی قدر سیریل مانیٹر پر پرنٹ ہوتی ہے:
void loop() {
int distance = sensor.readRangeContinuousMillimeters();
Serial.print("Distance: ");
Serial.print(distance);
Serial.print("mm");
if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }
Serial.println();
delay(100);
}
یہ کوڈ فاصلہ ملی میٹر میں پڑھتا ہے اور اسے سیریل مانیٹر پر پرنٹ کرتا ہے۔ اگر ٹائم آؤٹ ہوتا ہے، تو یہ اشارہ کرتا ہے کہ سینسر کو درست ریڈنگ نہیں ملی۔
مظاہرہ / کیا توقع کریں
جب آپ پروگرام چلاتے ہیں، تو آپ کو سیریل مانیٹر پر فاصلے کی پیمائش نظر آنا شروع ہونی چاہیے۔ جب آپ اشیاء کو سینسر کے قریب یا دور لے جائیں گے تو آؤٹ پٹ میں اتار چڑھاؤ آئے گا۔ اگر سینسر کو ریڈنگ حاصل کرنے میں ناکامی ہو تو آپ کو کبھی کبھار ٹائم آؤٹ پیغامات نظر آ سکتے ہیں (ویڈیو میں 10:30 پر)۔ درستگی بہتر بنانے کے لیے، متعدد ریڈنگز کی اوسط لینے پر غور کریں۔
/* This example shows how to use continuous mode to take
range measurements with the 6-pin VL53L0X module. It is based on
vl53l0x_ContinuousRanging_Example.c from the VL53L0X API.
The range readings are in units of mm.
Original source: https://github.com/adafruit/Adafruit_VL53L0X
Modified by Ahmad Shamshiri for RoboJax.com/RJT83
Date modified: May 31, 2018 at 19:25 in Ajax, Ontario, Canada
Watch the instruction video for this code https://youtu.be/S2jaAQEv3Yo
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)
*/
#include <Wire.h>
#include <VL53L0X.h>
VL53L0X sensor;
void setup()
{
pinMode(12,INPUT_PULLUP);
digitalWrite(12,HIGH);
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();
}
void loop()
{
int distance =sensor.readRangeContinuousMillimeters();
//int distance =sensor.startContinuous(100);
//distance = distance;
Serial.print("Distance: ");
Serial.print(distance);
Serial.print("mm");
if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }
Serial.println();
delay(100);
}
آپ کو جن چیزوں کی ضرورت ہو سکتی ہے
-
ای بےPurchase VL53l0x from eBayebay.us
-
علی ایکسپریسPurchase 1 to 10 pcs of VL53L0X from AliExpresss.click.aliexpress.com
-
بینگوڈPurchase 1 to 10 pcs of VL53L0X from Banggoodbanggood.com
وسائل اور حوالہ جات
-
باہرونیPurchase 1 to 10 pcs of VL53L0X from AliExpresss.click.aliexpress.com
-
باہرونیPurchase 1 to 10 pcs of VL53L0X from Banggoodbanggood.com
-
باہرونیPurchase VL53L0X from Amazonamzn.to
-
باہرونیPurchase VL53l0x from eBayebay.us
فائلیں📁
فریٹزنگ فائل
-
VL53L0X_Distance_sensor_Squares
VL53L0X_Distance_sensor_Squares.fzpz0.02 MB -
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
دیگر فائلیں
-
پولاؤ VL53L0X لائبریری
robojax-VL53L0X-polou-arduino-master.zip0.02 MB -
VL53L0X_Distance_sensor_purple
VL53L0X_Distance_sensor_purple.fzpz0.01 MB