કોડ શોધો

લેસર VL53L0X 6-પિન મોડ્યુલ વડે Arduino માટે અંતર માપવું

લેસર VL53L0X 6-પિન મોડ્યુલ વડે Arduino માટે અંતર માપવું

આ ટ્યુટોરિયલમાં, આપણે 6-પિન મોડ્યુલ સાથે VL53L0X લેસર અંતર સેન્સરનો ઉપયોગ કરીને અંતર કેવી રીતે માપવું તે શીખીશું. આ નાનો પણ શક્તિશાળી સેન્સર ટાઈમ-ઓફ-ફ્લાઈટ ટેકનોલોજીનો ઉપયોગ કરીને 200 સેમી સુધીનું ચોક્કસ અંતર માપન પ્રદાન કરે છે. આ માર્ગદર્શિકાને અનુસરીને, તમે Arduino સાથે સેન્સર સેટ કરી શકશો અને તમારા સીરિયલ મોનિટર પર સીધા અંતરના મૂલ્યો વાંચી શકશો.

VL53L0X 200cm range sensor

આ પ્રોજેક્ટ માટે, આપણે 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
લોજિક/I/O વોલ્ટેજ2.6 V થી 3.5 V (રેગ્યુલેટર સાથે 5 V)
ઓપરેટિંગ તાપમાન-20 °C થી 70 °C
માપન શ્રેણી30 mm થી 2000 mm
I2C સંચાર આવૃત્તિ400 kHz
કદ4.4 mm x 2.4 mm x 1 mm

  • યોગ્ય પાવર સપ્લાયની ખાતરી કરો (5 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 પર ડિજિટલ પિન 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 પર). ચોકસાઈ સુધારવા માટે, બહુવિધ રીડિંગ્સની સરેરાશ લેવાનું વિચારો.

છબીઓ

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

તમને જોઈતી વસ્તુઓ

સંસાધનો અને સંદર્ભો

ફાઇલો📁

Fritzing ફાઇલ

  • 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

અન્ય ફાઇલો