Search Code

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

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

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

VL53L0X 200cm range sensor

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

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

এই নির্মাণের প্রধান উপাদানগুলি হল VL53L0X লেজার দূরত্ব সেন্সর এবং LCD1602 ডিসপ্লে। VL53L0X দূরত্ব সঠিকভাবে পরিমাপ করতে একটি লেজার ব্যবহার করে, যা রোবোটিক্স এবং অটোমেশন সহ বিভিন্ন অ্যাপ্লিকেশনের জন্য উপযুক্ত। এটি I2C যোগাযোগ ব্যবহার করে কাজ করে, যা Arduino-এর সাথে সহজ সংহতকরণের অনুমতি দেয়।

LCD1602 ডিসপ্লে একটি I2C-সক্ষম অক্ষর ডিসপ্লে যা দুটি লাইনে 16টি অক্ষর পর্যন্ত দেখাতে পারে। এটি ডেটা প্রদর্শনের প্রক্রিয়াটি সহজ করে, কারণ এটির জন্য ঐতিহ্যবাহী LCD-এর তুলনায় কম পিন প্রয়োজন। একসাথে, এই উপাদানগুলি একটি শক্তিশালী এবং ব্যবহারকারী-বান্ধব দূরত্ব পরিমাপ সিস্টেম তৈরি করে।

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

নির্মাতাSTMicroelectronics
পার্ট নম্বরVL53L0X
লজিক/IO ভোল্টেজ1.8 V থেকে 2.8 V
সাপ্লাই ভোল্টেজ2.6 V থেকে 3.5 V
আউটপুট কারেন্ট (প্রতি চ্যানেল)
পিক কারেন্ট (প্রতি চ্যানেল)
PWM ফ্রিকোয়েন্সি নির্দেশিকা
ইনপুট লজিক থ্রেশহোল্ড
ভোল্টেজ ড্রপ / RDS(on) / স্যাচুরেশন
থার্মাল সীমা
প্যাকেজ
নোট / ভেরিয়েন্ট

  • সঠিক পাওয়ার সাপ্লাই ভোল্টেজ নিশ্চিত করুন (2.6 V থেকে 3.5 V)।
  • প্রয়োজনে SDA এবং SCL লাইনে পুল-আপ রেজিস্টর ব্যবহার করুন।
  • ভুল রিডিং এড়াতে সেন্সরটি প্রতিফলিত পৃষ্ঠ থেকে দূরে রাখুন।
  • I2C ঠিকানা যাচাই করুন (VL53L0X-এর জন্য ডিফল্ট 0x29)।
  • উচ্চ-তাপমাত্রার পরিবেশে ব্যবহার করলে তাপ অপচয় বিবেচনা করুন।

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

Arduino wiring for VL53L0X and LCD1602 I2C (4 wires LCD)

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 এ)।

ছবি

VL53L0X 200cm range sensor
VL53L0X 200cm range sensor
Arduino wiring for VL53L0X and LCD1602 I2C (4 wires LCD)
Arduino wiring for VL53L0X and LCD1602 I2C (4 wires LCD)
113-Measure distance with a laser VL53L0X 6-pin module and an LCD1602-I2C for Arduino
ভাষা: C++
/* 

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

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

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

ফাইলসমূহ📁

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

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