কোড অনুসন্ধান

লেজার VL53L0X ৬-পিন মডিউল দিয়ে আরডুইনোর জন্য দূরত্ব পরিমাপ

লেজার VL53L0X ৬-পিন মডিউল দিয়ে আরডুইনোর জন্য দূরত্ব পরিমাপ

এই টিউটোরিয়ালে, আমরা ৬-পিন মডিউলসহ VL53L0X লেজার দূরত্ব সেন্সর ব্যবহার করে কীভাবে দূরত্ব মাপতে হয় তা শিখব। এই ছোট অথচ শক্তিশালী সেন্সরটি টাইম-অফ-ফ্লাইট প্রযুক্তি ব্যবহার করে ২০০ সেমি পর্যন্ত সঠিক দূরত্ব পরিমাপ প্রদান করে। এই গাইড অনুসরণ করে, আপনি একটি Arduino-এর সাথে সেন্সরটি সংযোগ করতে এবং সরাসরি আপনার সিরিয়াল মনিটর থেকে দূরত্বের মান পড়তে সক্ষম হবেন।

VL53L0X 200cm range sensor

এই প্রকল্পের জন্য, আমরা VL53L0X সেন্সর ব্যবহার করব, যা কমপ্যাক্ট এবং বিভিন্ন অ্যাপ্লিকেশনে সহজে সংহত করা যায়। সেন্সরটি I2C-এর মাধ্যমে যোগাযোগ করে, যা Arduino বোর্ডের সাথে সংযোগ করা সহজ করে তোলে। ভিডিওতে, আপনি সেটআপ প্রক্রিয়ার অতিরিক্ত ব্যাখ্যা এবং প্রদর্শন পাবেন (ভিডিওতে ০৪:০০ মিনিটে)।

হার্ডওয়্যার ব্যাখ্যা

VL53L0X একটি টাইম-অফ-ফ্লাইট দূরত্ব সেন্সর যা একটি লেজার রশ্মি নির্গত করে এবং কোনো বস্তুতে আঘাত করার পর আলো ফিরে আসতে যে সময় লাগে তা পরিমাপ করে। এটি সেন্সরটিকে বস্তুর দূরত্ব সঠিকভাবে গণনা করতে দেয়। সেন্সরটি ২.৬ V থেকে ৩.৫ V ভোল্টেজে কাজ করে, তবে একটি অভ্যন্তরীণ ভোল্টেজ রেগুলেটরের কারণে এটি ৫ V দিয়েও চালানো যায়।

মডিউলটিতে ছয়টি পিন রয়েছে: VCC, GND, SDA (ডেটা লাইন), SCL (ক্লক লাইন), GPIO1 (সাধারণ-উদ্দেশ্য I/O), এবং XSHUT (শাটডাউন পিন)। এই কনফিগারেশনে GPIO1 পিন ব্যবহার করা হয় না তবে এটি সংযোগহীন রাখা যেতে পারে। XSHUT পিন আপনাকে ব্যবহার না করার সময় শক্তি সাশ্রয়ের জন্য সেন্সরটি বন্ধ করার সুযোগ দেয়।

ডেটাশিট বিবরণ

নির্মাতাSTMicroelectronics
পার্ট নম্বরVL53L0X
লজিক/IO ভোল্টেজ২.৬ V থেকে ৩.৫ V (রেগুলেটরসহ ৫ V)
অপারেটিং তাপমাত্রা-২০ °C থেকে ৭০ °C
পরিমাপের পরিসর৩০ মিমি থেকে ২০০০ মিমি
I2C যোগাযোগ ফ্রিকোয়েন্সি৪০০ kHz
আকার৪.৪ মিমি x ২.৪ মিমি x ১ মিমি

  • সঠিক পাওয়ার সাপ্লাই নিশ্চিত করুন (৫ V সুপারিশকৃত)।
  • SDA এবং SCL Arduino-এর উপযুক্ত I2C পিনের সাথে সংযোগ করুন।
  • প্রয়োজনে I2C লাইনে পুল-আপ রেজিস্টর ব্যবহার করুন।
  • GPIO1 সংযোগহীন রাখবেন না; এটি ফ্লোটিং অবস্থায় রাখা যেতে পারে।
  • অপারেশনের সময় XSHUT পিন উচ্চ অবস্থায় রাখুন।
  • ভালো নির্ভুলতার জন্য ভালো আলোকিত পরিবেশে দূরত্ব পরিমাপ করুন।
  • সঠিক পরিমাপের জন্য সেন্সরটি ক্যালিব্রেট করুন।
  • বিভিন্ন দূরত্বে বস্তু রেখে সেন্সরের পরিসর পরীক্ষা করুন।
  • দূরত্ব রিডিং এবং টাইমআউট বার্তার জন্য সিরিয়াল আউটপুট পর্যবেক্ষণ করুন।

ওয়্যারিং নির্দেশাবলী

Arduino wiring VL53L0X laser distance sensor
Arduino wiring VL53L0X laser distance sensor

VL53L0X সেন্সরটি আপনার Arduino-এর সাথে সংযোগ করতে, প্রথমে সেন্সরের VCC পিনটি Arduino-এর 5V পিনের সাথে সংযোগ করুন। এরপর, GND পিনটি Arduino-এর GND-এর সাথে সংযোগ করুন। সেন্সরের SDA পিনটি Arduino-এর A4 পিনের সাথে সংযুক্ত করা উচিত (অথবা SDA পিন যদি আপনার বোর্ডে ডেডিকেটেড I2C পিন থাকে)। একইভাবে, সেন্সরের SCL পিনটি A5 পিনের সাথে সংযোগ করুন (অথবা SCL পিন)। GPIO1 পিনটি সংযোগহীন রাখুন কারণ এই প্রকল্পের জন্য এটি প্রয়োজন নেই।

সবশেষে, XSHUT পিনটি Arduino-এর ডিজিটাল পিন ১২-এর সাথে সংযোগ করুন। এই পিনটি সেন্সরের শাটডাউন অবস্থা নিয়ন্ত্রণ করতে ব্যবহৃত হবে। কোনো যোগাযোগ সমস্যা এড়াতে সমস্ত সংযোগ নিরাপদ কিনা তা নিশ্চিত করুন।

কোড উদাহরণ ও ওয়াকথ্রু

কোডে, আমরা প্রয়োজনীয় লাইব্রেরিগুলি অন্তর্ভুক্ত করে এবং VL53L0X সেন্সরটি আরম্ভ করে শুরু করি। সেটআপ ফাংশনটি সেন্সরটি কনফিগার করে এবং ক্রমাগত দূরত্ব পরিমাপ শুরু করে। সেটআপ ফাংশন থেকে একটি স্নিপেট এখানে দেওয়া হলো:

void setup() {
  pinMode(12, INPUT_PULLUP);
  digitalWrite(12, HIGH);
  Serial.begin(9600);
  Wire.begin();
  sensor.init();
  sensor.setTimeout(500);
  sensor.startContinuous();
}

এই স্নিপেটে, আমরা পিন ১২-কে পুল-আপ রেজিস্টরসহ ইনপুট হিসেবে সেট করি এবং ৯৬০০ বাউডে সিরিয়াল যোগাযোগ আরম্ভ করি। আমরা সেন্সরটি আরম্ভ করি এবং রিডিংয়ের জন্য একটি টাইমআউট সেট করি, যা এটিকে ক্রমাগতভাবে কাজ করতে নিশ্চিত করে।

এরপর, আমরা লুপ ফাংশনে দূরত্ব পড়ি, যেখানে পরিমাপ করা মানটি সিরিয়াল মনিটরে প্রিন্ট করা হয়:

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);
}

এই কোডটি মিলিমিটারে দূরত্ব পড়ে এবং সিরিয়াল মনিটরে প্রিন্ট করে। যদি একটি টাইমআউট ঘটে, তবে এটি নির্দেশ করে যে সেন্সরটি একটি বৈধ রিডিং পায়নি।

প্রদর্শন / কী আশা করবেন

আপনি যখন প্রোগ্রামটি চালাবেন, তখন সিরিয়াল মনিটরে দূরত্ব পরিমাপ দেখা শুরু করা উচিত। আপনি বস্তুগুলিকে সেন্সরের কাছাকাছি বা দূরে সরানোর সাথে সাথে আউটপুট ওঠানামা করবে। সেন্সরটি রিডিং পেতে ব্যর্থ হলে আপনি মাঝে মাঝে টাইমআউট বার্তা লক্ষ্য করতে পারেন (ভিডিওতে ১০:৩০ মিনিটে)। নির্ভুলতা উন্নত করতে, একাধিক রিডিংয়ের গড় নেওয়ার কথা বিবেচনা করুন।

ছবি

VL53L0X 200cm range sensor
VL53L0X 200cm range sensor
Arduino wiring VL53L0X laser distance sensor
Arduino wiring VL53L0X laser distance sensor
103-Measureing distance using VL53L0X TOF range sensor
ভাষা: C++
/* 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);
}

আপনাকে যা প্রয়োজন হতে পারে

সম্পদ ও রেফারেন্সসমূহ

ফাইলসমূহ📁

ফ্রিটজিং ফাইল

  • VL53L0X_Distance_sensor_Squares
    VL53L0X_Distance_sensor_Squares.fzpz 0.02 MB
  • Adafruit VL6180X Time of Flight Distance Sensor
    Fritzing 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.fzpz 0.02 MB

অন্যান্য ফাইলগুলি